ref_object_touch.rb 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
  2. class Observer::Ticket::RefObjectTouch < ActiveRecord::Observer
  3. observe 'ticket'
  4. def after_create(record)
  5. ref_object_touch(record)
  6. end
  7. def after_update(record)
  8. ref_object_touch(record)
  9. end
  10. def after_destroy(record)
  11. ref_object_touch(record)
  12. end
  13. def ref_object_touch(record)
  14. # return if we run import mode
  15. return true if Setting.get('import_mode')
  16. # touch old customer if changed
  17. cutomer_id_changed = record.saved_changes['customer_id']
  18. if cutomer_id_changed && cutomer_id_changed[0] != cutomer_id_changed[1]
  19. if cutomer_id_changed[0]
  20. User.find(cutomer_id_changed[0]).touch # rubocop:disable Rails/SkipsModelValidations
  21. end
  22. end
  23. # touch new/current customer
  24. record.customer&.touch # rubocop:disable Rails/SkipsModelValidations
  25. # touch old organization if changed
  26. organization_id_changed = record.saved_changes['organization_id']
  27. if organization_id_changed && organization_id_changed[0] != organization_id_changed[1]
  28. if organization_id_changed[0]
  29. Organization.find(organization_id_changed[0]).touch # rubocop:disable Rails/SkipsModelValidations
  30. end
  31. end
  32. # touch new/current organization
  33. return true if !record.organization
  34. record.organization.touch # rubocop:disable Rails/SkipsModelValidations
  35. end
  36. end