From bd58c9d0c664f6f8b50becee556caf9248afbfb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=B6hm?= Date: Tue, 17 Sep 2024 23:36:45 +0200 Subject: [PATCH] Added counter_cache for user jobs, replaced count with size to use cache. --- app/models/job.rb | 4 ++-- app/views/admin/dashboards/show.html.erb | 18 +++++++++--------- app/views/admin/users/_user_tr.html.erb | 2 +- app/views/admin/users/show.html.erb | 6 +++--- .../operator/jobs/_job_status_card.html.erb | 2 +- .../operator/jobs/_start_next_job_btn.html.erb | 2 +- app/views/profiles/show.html.erb | 18 +++++++++--------- db/migrate/20240826144015_create_users.rb | 3 +++ db/schema.rb | 2 ++ 9 files changed, 31 insertions(+), 26 deletions(-) diff --git a/app/models/job.rb b/app/models/job.rb index aab0360..3933035 100644 --- a/app/models/job.rb +++ b/app/models/job.rb @@ -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 diff --git a/app/views/admin/dashboards/show.html.erb b/app/views/admin/dashboards/show.html.erb index be6bbd5..e51ddae 100644 --- a/app/views/admin/dashboards/show.html.erb +++ b/app/views/admin/dashboards/show.html.erb @@ -1,5 +1,5 @@
-

Admin::Dashboards#show

+

Admin::Dashboards#show

Find me in app/views/admin/dashboards/show.html.erb

<%= link_to admin_users_path() do %> -
+

Benutzer:

-

<%= @user.count %>

+

<%= @user.size %>

<% end %> <%= link_to admin_users_path() do %> -
+

Tutoren:

-

<%= @user.operator.count %>

+

<%= @user.operator.size %>

<% end %> <%= link_to admin_users_path() do %> -
+

Admins:

-

<%= @user.admin.count %>

+

<%= @user.admin.size %>

<% end %>

Aktueller Monat

<%= link_to admin_jobs_path() do %> -
+

aktuelle Druckaufträge:

-

<%= @jobs.count %>

+

<%= @jobs.size %>

<% end %>
diff --git a/app/views/admin/users/_user_tr.html.erb b/app/views/admin/users/_user_tr.html.erb index c135a5f..cc6a077 100644 --- a/app/views/admin/users/_user_tr.html.erb +++ b/app/views/admin/users/_user_tr.html.erb @@ -16,7 +16,7 @@ - <%= user.jobs_as_costumer.count %> + <%= user.jobs_as_costumer.size %> diff --git a/app/views/admin/users/show.html.erb b/app/views/admin/users/show.html.erb index cb702dc..a01e5e5 100644 --- a/app/views/admin/users/show.html.erb +++ b/app/views/admin/users/show.html.erb @@ -1,11 +1,11 @@
-

Benutzer Details

+

Benutzer Details

<%= render partial: 'user', locals: { user: @user } %>

Some Stats:

    -
  • Druckaufträge insgesammt: <%= @user.jobs_as_costumer.count %>
  • -
  • davon abgebrochen: <%= @user.jobs_as_costumer.canceled.count %>
  • +
  • Druckaufträge insgesammt: <%= @user.jobs_as_costumer.size %>
  • +
  • davon abgebrochen: <%= @user.jobs_as_costumer.canceled.size %>
  • letzten 5 Druckaufträge

diff --git a/app/views/operator/jobs/_job_status_card.html.erb b/app/views/operator/jobs/_job_status_card.html.erb index 87e5a93..d506ee2 100644 --- a/app/views/operator/jobs/_job_status_card.html.erb +++ b/app/views/operator/jobs/_job_status_card.html.erb @@ -3,7 +3,7 @@

<%= icon(status_icon(status), class: "text-status-#{status} icon icon-nohover") %> <%= status %> - <%= jobs.count %> + <%= jobs.size %>

<% end %> diff --git a/app/views/operator/jobs/_start_next_job_btn.html.erb b/app/views/operator/jobs/_start_next_job_btn.html.erb index cfe4f72..15128ac 100644 --- a/app/views/operator/jobs/_start_next_job_btn.html.erb +++ b/app/views/operator/jobs/_start_next_job_btn.html.erb @@ -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" %> diff --git a/app/views/profiles/show.html.erb b/app/views/profiles/show.html.erb index 432fb09..b83b85b 100644 --- a/app/views/profiles/show.html.erb +++ b/app/views/profiles/show.html.erb @@ -1,9 +1,9 @@
-

Profile

+

Profile

  • Name: <%= current_user.name %> <% if is_admin_or_operator? %> -

    <%= current_user.role %>

    +

    <%= current_user.role %>

    <% end %>
  • E-Mail: <%= current_user.email %>
  • @@ -19,30 +19,30 @@

    <% end %>
-

Aufgegebene Druckaufträge

+

Aufgegebene Druckaufträge

Aufgegebene Druckaufträge - <%= current_user.jobs_as_costumer.count %> + <%= current_user.jobs_as_costumer.size %>

Abgebrochene Druckaufgräge - <%= current_user.jobs_as_costumer.canceled.count %> + <%= current_user.jobs_as_costumer.canceled.size %>

<% if is_admin_or_operator? %> -

Bearbeitete Druckaufträge

+

Bearbeitete Druckaufträge

Gedruckte Druckaufträge - <%= current_user.jobs_as_operator.paid.count %> + <%= current_user.jobs_as_operator.paid.size %>

<% end %> -

Actions

+

Actions

<%= link_to "Change password", edit_password_path %>
<%= link_to "Change email address", edit_identity_email_path %>
-

Access history

+

Access history

<%= link_to "Devices & Sessions", sessions_path %>
diff --git a/db/migrate/20240826144015_create_users.rb b/db/migrate/20240826144015_create_users.rb index 78f15c6..3d6cb30 100644 --- a/db/migrate/20240826144015_create_users.rb +++ b/db/migrate/20240826144015_create_users.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index a2c016b..4ac030a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -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