Added counter_cache for user jobs, replaced count with size to use cache.

This commit is contained in:
2024-09-17 23:36:45 +02:00
parent 70dd3a0ab8
commit bd58c9d0c6
9 changed files with 31 additions and 26 deletions

View File

@@ -1,6 +1,6 @@
class Job < ApplicationRecord
belongs_to :operator, class_name: "User", optional: true
belongs_to :costumer, 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, counter_cache: :jobs_as_costumer_count
has_one_attached :pdf, dependent: :purge

View File

@@ -1,5 +1,5 @@
<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>
<ul>
<li>Übersicht Druckaufträge (Abgerechnet/Kostenstelle/Pro Monat/CSV Export)</li>
@@ -10,30 +10,30 @@
</div>
<div class="flex space-x-2">
<%= 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>
<p class="size-28"><%= @user.count %></p>
<p class="size-28"><%= @user.size %></p>
</div>
<% end %>
<%= 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>
<p class="size-28"><%= @user.operator.count %></p>
<p class="size-28"><%= @user.operator.size %></p>
</div>
<% end %>
<%= 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>
<p class="size-28"><%= @user.admin.count %></p>
<p class="size-28"><%= @user.admin.size %></p>
</div>
<% end %>
</div>
<div class="flex space-x-2">
<h2>Aktueller Monat</h2>
<%= 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>
<p class="size-28"><%= @jobs.count %></p>
<p class="size-28"><%= @jobs.size %></p>
</div>
<% end %>
</div>

View File

@@ -16,7 +16,7 @@
</td>
<td class="p-2 py-3">
<span class="badge block w-28 bg-role-<%= user.role %>-light">
<%= user.jobs_as_costumer.count %>
<%= user.jobs_as_costumer.size %>
</span>
</td>
<td class="p-2 py-3">

View File

@@ -1,11 +1,11 @@
<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 } %>
</div>
<p>Some Stats:
<ul>
<li>Druckaufträge insgesammt: <%= @user.jobs_as_costumer.count %></li>
<li>davon abgebrochen: <%= @user.jobs_as_costumer.canceled.count %></li>
<li>Druckaufträge insgesammt: <%= @user.jobs_as_costumer.size %></li>
<li>davon abgebrochen: <%= @user.jobs_as_costumer.canceled.size %></li>
<li>letzten 5 Druckaufträge</li>
</ul>
</p>

View File

@@ -3,7 +3,7 @@
<h3 class="p-3 text-2xl font-bold">
<%= icon(status_icon(status), class: "text-status-#{status} icon icon-nohover") %>
<%= status %>
<span class="block text-3xl text-right"><%= jobs.count %></span>
<span class="block text-3xl text-right"><%= jobs.size %></span>
</h3>
</div>
<% end %>

View File

@@ -2,7 +2,7 @@
<% if jobs.any? %>
<%= button_to icon("printer",
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} },
method: :patch,
form_class: "btn bg-green-400 text-black" %>

View File

@@ -1,9 +1,9 @@
<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>
<li>Name: <%= current_user.name %>
<% if is_admin_or_operator? %>
<p class="badge inline"><%= current_user.role %></p>
<p class="inline badge"><%= current_user.role %></p>
<% end %>
</li>
<li>E-Mail: <%= current_user.email %></li>
@@ -19,30 +19,30 @@
</p>
<% end %>
</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>
Aufgegebene Druckaufträge
<%= current_user.jobs_as_costumer.count %>
<%= current_user.jobs_as_costumer.size %>
</p>
<p>
Abgebrochene Druckaufgräge
<%= current_user.jobs_as_costumer.canceled.count %>
<%= current_user.jobs_as_costumer.canceled.size %>
</p>
<% 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>
Gedruckte Druckaufträge
<%= current_user.jobs_as_operator.paid.count %>
<%= current_user.jobs_as_operator.paid.size %>
</p>
<% 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>
<%= link_to "Change password", edit_password_path %>
</div>
<div>
<%= link_to "Change email address", edit_identity_email_path %>
</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>
<%= link_to "Devices & Sessions", sessions_path %>
</div>

View File

@@ -10,6 +10,9 @@ class CreateUsers < ActiveRecord::Migration[7.2]
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
end
add_foreign_key :jobs, :users, column: :operator_id

2
db/schema.rb generated
View File

@@ -86,6 +86,8 @@ ActiveRecord::Schema[7.2].define(version: 2024_08_26_144016) do
t.string "lastname"
t.string "role", default: "user"
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 "updated_at", null: false
t.index ["email"], name: "index_users_on_email", unique: true