touches_associations.rb 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. # Update assigned customer and organization change_time information on ticket changes.
  3. module Ticket::TouchesAssociations
  4. extend ActiveSupport::Concern
  5. included do
  6. after_create :ticket_touch_associations
  7. after_update :ticket_touch_associations
  8. after_destroy :ticket_touch_associations
  9. end
  10. private
  11. def ticket_touch_associations
  12. # return if we run import mode
  13. return true if Setting.get('import_mode')
  14. return true if saved_changes.blank?
  15. # touch old customer if changed
  16. customer_id_changed = saved_changes['customer_id']
  17. if customer_id_changed && customer_id_changed[0] != customer_id_changed[1] && customer_id_changed[0]
  18. User.find(customer_id_changed[0]).touch # rubocop:disable Rails/SkipsModelValidations
  19. end
  20. # touch new/current customer
  21. customer&.touch # rubocop:disable Rails/SkipsModelValidations
  22. # touch old organization if changed
  23. organization_id_changed = saved_changes['organization_id']
  24. if organization_id_changed && organization_id_changed[0] != organization_id_changed[1] && organization_id_changed[0]
  25. Organization.find(organization_id_changed[0]).touch # rubocop:disable Rails/SkipsModelValidations
  26. end
  27. organization&.touch # rubocop:disable Rails/SkipsModelValidations
  28. end
  29. end