touches_associations.rb 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  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. # touch old customer if changed
  15. customer_id_changed = saved_changes['customer_id']
  16. if customer_id_changed && customer_id_changed[0] != customer_id_changed[1] && customer_id_changed[0]
  17. User.find(customer_id_changed[0]).touch # rubocop:disable Rails/SkipsModelValidations
  18. end
  19. # touch new/current customer
  20. customer&.touch # rubocop:disable Rails/SkipsModelValidations
  21. # touch old organization if changed
  22. organization_id_changed = saved_changes['organization_id']
  23. if organization_id_changed && organization_id_changed[0] != organization_id_changed[1] && organization_id_changed[0]
  24. Organization.find(organization_id_changed[0]).touch # rubocop:disable Rails/SkipsModelValidations
  25. end
  26. organization&.touch # rubocop:disable Rails/SkipsModelValidations
  27. end
  28. end