Added counter_cache for user jobs, replaced count with size to use cache.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
class Job < ApplicationRecord
|
class Job < ApplicationRecord
|
||||||
belongs_to :operator, class_name: "User", optional: true
|
belongs_to :operator, class_name: "User", optional: true, counter_cache: :jobs_as_operator_count
|
||||||
belongs_to :costumer, class_name: "User", optional: true
|
belongs_to :costumer, class_name: "User", optional: true, counter_cache: :jobs_as_costumer_count
|
||||||
|
|
||||||
has_one_attached :pdf, dependent: :purge
|
has_one_attached :pdf, dependent: :purge
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<div>
|
<div>
|
||||||
<h1 class="font-bold text-4xl">Admin::Dashboards#show</h1>
|
<h1 class="text-4xl font-bold">Admin::Dashboards#show</h1>
|
||||||
<p>Find me in app/views/admin/dashboards/show.html.erb</p>
|
<p>Find me in app/views/admin/dashboards/show.html.erb</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Übersicht Druckaufträge (Abgerechnet/Kostenstelle/Pro Monat/CSV Export)</li>
|
<li>Übersicht Druckaufträge (Abgerechnet/Kostenstelle/Pro Monat/CSV Export)</li>
|
||||||
@@ -10,30 +10,30 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex space-x-2">
|
<div class="flex space-x-2">
|
||||||
<%= link_to admin_users_path() do %>
|
<%= link_to admin_users_path() do %>
|
||||||
<div class="shadow p-4 bg-gray-50">
|
<div class="p-4 shadow bg-gray-50">
|
||||||
<h2 class="text-xl">Benutzer:</h2>
|
<h2 class="text-xl">Benutzer:</h2>
|
||||||
<p class="size-28"><%= @user.count %></p>
|
<p class="size-28"><%= @user.size %></p>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= link_to admin_users_path() do %>
|
<%= link_to admin_users_path() do %>
|
||||||
<div class="shadow p-4 bg-gray-50">
|
<div class="p-4 shadow bg-gray-50">
|
||||||
<h2 class="text-xl">Tutoren:</h2>
|
<h2 class="text-xl">Tutoren:</h2>
|
||||||
<p class="size-28"><%= @user.operator.count %></p>
|
<p class="size-28"><%= @user.operator.size %></p>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= link_to admin_users_path() do %>
|
<%= link_to admin_users_path() do %>
|
||||||
<div class="shadow p-4 bg-gray-50">
|
<div class="p-4 shadow bg-gray-50">
|
||||||
<h2 class="text-xl">Admins:</h2>
|
<h2 class="text-xl">Admins:</h2>
|
||||||
<p class="size-28"><%= @user.admin.count %></p>
|
<p class="size-28"><%= @user.admin.size %></p>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex space-x-2">
|
<div class="flex space-x-2">
|
||||||
<h2>Aktueller Monat</h2>
|
<h2>Aktueller Monat</h2>
|
||||||
<%= link_to admin_jobs_path() do %>
|
<%= link_to admin_jobs_path() do %>
|
||||||
<div class="shadow p-4 bg-gray-50">
|
<div class="p-4 shadow bg-gray-50">
|
||||||
<h2 class="text-xl">aktuelle Druckaufträge:</h2>
|
<h2 class="text-xl">aktuelle Druckaufträge:</h2>
|
||||||
<p class="size-28"><%= @jobs.count %></p>
|
<p class="size-28"><%= @jobs.size %></p>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="p-2 py-3">
|
<td class="p-2 py-3">
|
||||||
<span class="badge block w-28 bg-role-<%= user.role %>-light">
|
<span class="badge block w-28 bg-role-<%= user.role %>-light">
|
||||||
<%= user.jobs_as_costumer.count %>
|
<%= user.jobs_as_costumer.size %>
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="p-2 py-3">
|
<td class="p-2 py-3">
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<div>
|
<div>
|
||||||
<h1 class="font-bold text-4xl">Benutzer Details</h1>
|
<h1 class="text-4xl font-bold">Benutzer Details</h1>
|
||||||
<%= render partial: 'user', locals: { user: @user } %>
|
<%= render partial: 'user', locals: { user: @user } %>
|
||||||
</div>
|
</div>
|
||||||
<p>Some Stats:
|
<p>Some Stats:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Druckaufträge insgesammt: <%= @user.jobs_as_costumer.count %></li>
|
<li>Druckaufträge insgesammt: <%= @user.jobs_as_costumer.size %></li>
|
||||||
<li>davon abgebrochen: <%= @user.jobs_as_costumer.canceled.count %></li>
|
<li>davon abgebrochen: <%= @user.jobs_as_costumer.canceled.size %></li>
|
||||||
<li>letzten 5 Druckaufträge</li>
|
<li>letzten 5 Druckaufträge</li>
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<h3 class="p-3 text-2xl font-bold">
|
<h3 class="p-3 text-2xl font-bold">
|
||||||
<%= icon(status_icon(status), class: "text-status-#{status} icon icon-nohover") %>
|
<%= icon(status_icon(status), class: "text-status-#{status} icon icon-nohover") %>
|
||||||
<%= status %>
|
<%= status %>
|
||||||
<span class="block text-3xl text-right"><%= jobs.count %></span>
|
<span class="block text-3xl text-right"><%= jobs.size %></span>
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<% if jobs.any? %>
|
<% if jobs.any? %>
|
||||||
<%= button_to icon("printer",
|
<%= button_to icon("printer",
|
||||||
class: "icon icon-nohover size-6 mr-2",
|
class: "icon icon-nohover size-6 mr-2",
|
||||||
title: "Drucken") + "Nächsten Druckauftrag starten (" + jobs.count.to_s + ")", operator_job_path(jobs.first),
|
title: "Drucken") + "Nächsten Druckauftrag starten (" + jobs.size.to_s + ")", operator_job_path(jobs.first),
|
||||||
params: { :job => { status: :printing} },
|
params: { :job => { status: :printing} },
|
||||||
method: :patch,
|
method: :patch,
|
||||||
form_class: "btn bg-green-400 text-black" %>
|
form_class: "btn bg-green-400 text-black" %>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<div>
|
<div>
|
||||||
<h1 class="font-bold text-4xl p-1 border-b-2 border-hsrm-red">Profile</h1>
|
<h1 class="p-1 text-4xl font-bold border-b-2 border-hsrm-red">Profile</h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Name: <%= current_user.name %>
|
<li>Name: <%= current_user.name %>
|
||||||
<% if is_admin_or_operator? %>
|
<% if is_admin_or_operator? %>
|
||||||
<p class="badge inline"><%= current_user.role %></p>
|
<p class="inline badge"><%= current_user.role %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
<li>E-Mail: <%= current_user.email %></li>
|
<li>E-Mail: <%= current_user.email %></li>
|
||||||
@@ -19,30 +19,30 @@
|
|||||||
</p>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 class="text-lg font-bold p-1 border-b-2 border-hsrm-red">Aufgegebene Druckaufträge</h2>
|
<h2 class="p-1 text-lg font-bold border-b-2 border-hsrm-red">Aufgegebene Druckaufträge</h2>
|
||||||
<p>
|
<p>
|
||||||
Aufgegebene Druckaufträge
|
Aufgegebene Druckaufträge
|
||||||
<%= current_user.jobs_as_costumer.count %>
|
<%= current_user.jobs_as_costumer.size %>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Abgebrochene Druckaufgräge
|
Abgebrochene Druckaufgräge
|
||||||
<%= current_user.jobs_as_costumer.canceled.count %>
|
<%= current_user.jobs_as_costumer.canceled.size %>
|
||||||
</p>
|
</p>
|
||||||
<% if is_admin_or_operator? %>
|
<% if is_admin_or_operator? %>
|
||||||
<h2 class="text-lg font-bold p-1 border-b-2 border-hsrm-red">Bearbeitete Druckaufträge</h2>
|
<h2 class="p-1 text-lg font-bold border-b-2 border-hsrm-red">Bearbeitete Druckaufträge</h2>
|
||||||
<p>
|
<p>
|
||||||
Gedruckte Druckaufträge
|
Gedruckte Druckaufträge
|
||||||
<%= current_user.jobs_as_operator.paid.count %>
|
<%= current_user.jobs_as_operator.paid.size %>
|
||||||
</p>
|
</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
<h2 class="text-lg font-bold p-1 border-b-2 border-hsrm-red">Actions</h2>
|
<h2 class="p-1 text-lg font-bold border-b-2 border-hsrm-red">Actions</h2>
|
||||||
<div>
|
<div>
|
||||||
<%= link_to "Change password", edit_password_path %>
|
<%= link_to "Change password", edit_password_path %>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<%= link_to "Change email address", edit_identity_email_path %>
|
<%= link_to "Change email address", edit_identity_email_path %>
|
||||||
</div>
|
</div>
|
||||||
<h2 class="text-lg font-bold p-1 border-b-2 border-hsrm-red">Access history</h2>
|
<h2 class="p-1 text-lg font-bold border-b-2 border-hsrm-red">Access history</h2>
|
||||||
<div>
|
<div>
|
||||||
<%= link_to "Devices & Sessions", sessions_path %>
|
<%= link_to "Devices & Sessions", sessions_path %>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ class CreateUsers < ActiveRecord::Migration[7.2]
|
|||||||
|
|
||||||
t.boolean :verified, null: false, default: false
|
t.boolean :verified, null: false, default: false
|
||||||
|
|
||||||
|
t.integer :jobs_as_costumer_count, default: 0
|
||||||
|
t.integer :jobs_as_operator_count, default: 0
|
||||||
|
|
||||||
t.timestamps
|
t.timestamps
|
||||||
end
|
end
|
||||||
add_foreign_key :jobs, :users, column: :operator_id
|
add_foreign_key :jobs, :users, column: :operator_id
|
||||||
|
|||||||
2
db/schema.rb
generated
2
db/schema.rb
generated
@@ -86,6 +86,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_08_26_144016) do
|
|||||||
t.string "lastname"
|
t.string "lastname"
|
||||||
t.string "role", default: "user"
|
t.string "role", default: "user"
|
||||||
t.boolean "verified", default: false, null: false
|
t.boolean "verified", default: false, null: false
|
||||||
|
t.integer "jobs_as_costumer_count", default: 0
|
||||||
|
t.integer "jobs_as_operator_count", default: 0
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.index ["email"], name: "index_users_on_email", unique: true
|
t.index ["email"], name: "index_users_on_email", unique: true
|
||||||
|
|||||||
Reference in New Issue
Block a user