From f5eece52eeedf41f3e502d46dad44fd966edae77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=B6hm?= Date: Wed, 2 Oct 2024 08:32:47 +0200 Subject: [PATCH] Bugfix job role info allocation --- app/models/job.rb | 42 ++++++++++++++++++++++-------------------- db/seeds.rb | 3 +++ 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/app/models/job.rb b/app/models/job.rb index 9d951c8..c49bb6f 100644 --- a/app/models/job.rb +++ b/app/models/job.rb @@ -16,7 +16,7 @@ class Job < ApplicationRecord validate :acceptable_pdf before_save :update_status_changed_at, if: :will_save_change_to_status? - before_save :update_user_status_infos, if: :will_save_change_to_status? + before_save :update_user_status_infos, if: -> { will_save_change_to_status? || new_record? } before_save :set_cost_qm before_save :calc_cost, if: :printed_pages_changes? @@ -205,6 +205,10 @@ class Job < ApplicationRecord self.operator_lastname = nil end + def operator_infos_set? + self.operator && self.operator_firstname && self.operator_lastname + end + def set_cashier_infos self.paid_at = Time.now self.cashier = current_user unless self.cashier @@ -226,25 +230,23 @@ class Job < ApplicationRecord end def update_user_status_infos - if status_changed? - case status.to_sym - when :open - reset_operator_and_cashier_infos - self.printed_at = nil - self.paid_at = nil - when :printing - clear_cashier_infos - set_operator_infos - self.printed_at = nil - when :pickup - clear_cashier_infos - self.printed_at = Time.now unless self.printed_at - when :paid - set_operator_infos unless self.operator - self.printed_at = Time.now unless self.printed_at - set_cashier_infos unless self.cashier - self.paid_at = Time.now unless self.paid_at - end + case status.to_sym + when :open + reset_operator_and_cashier_infos + self.printed_at = nil + self.paid_at = nil + when :printing + clear_cashier_infos + set_operator_infos + self.printed_at = nil + when :pickup + clear_cashier_infos + self.printed_at = Time.now unless self.printed_at + when :paid + set_operator_infos unless operator_infos_set? + self.printed_at = Time.now unless self.printed_at + set_cashier_infos + self.paid_at = Time.now end end diff --git a/db/seeds.rb b/db/seeds.rb index 0143f8e..e91901e 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -31,6 +31,7 @@ students = [] # created_at = Faker::Time.backward(days: 60, period: :day) created_at = Faker::Time.between_dates(from: Date.today - 60, to: Date.today - 30, period: :day) email="#{firstname}.#{lastname}@student.hs-rm.de".downcase.gsub('ö', 'oe').gsub('ä', 'ae').gsub('ü', 'ue').gsub('ß', 'ss') + puts "Create Student:" + email email.delete(" ") students << User.new(email: email, firstname: firstname, lastname: lastname, password_digest: BCrypt::Password.create("password"), verified: true, created_at: created_at) students.last.save! @@ -44,6 +45,7 @@ end # created_at = Faker::Time.between_dates(from: Date.today - 60, to: Date.today, period: :day) email="#{firstname}.#{lastname}@student.hs-rm.de".downcase.gsub('ö', 'oe').gsub('ä', 'ae').gsub('ü', 'ue').gsub('ß', 'ss') email.delete(" ") + puts "Create Student:" + email User.new(email: email, firstname: firstname, lastname: lastname, password_digest: BCrypt::Password.create("password"), verified: true, created_at: created_at).save! end @@ -55,6 +57,7 @@ end # created_at = Faker::Time.between_dates(from: Date.today - 60, to: Date.today, period: :day) email="#{firstname}.#{lastname}@student.hs-rm.de".downcase.gsub('ö', 'oe').gsub('ä', 'ae').gsub('ü', 'ue').gsub('ß', 'ss') email.delete(" ") + puts "Create Student:" + email User.new(email: email, firstname: firstname, lastname: lastname, password_digest: BCrypt::Password.create("password"), verified: false, created_at: created_at).save! end