priority.rb 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. class Ticket::Priority < ApplicationModel
  3. include CanBeImported
  4. include ChecksHtmlSanitized
  5. include HasCollectionUpdate
  6. include HasSearchIndexBackend
  7. self.table_name = 'ticket_priorities'
  8. validates :name, presence: true
  9. after_create :ensure_defaults
  10. after_update :ensure_defaults
  11. after_destroy :ensure_defaults
  12. sanitized_html :note
  13. attr_accessor :callback_loop
  14. def ensure_defaults
  15. return true if callback_loop
  16. priorities_with_default = Ticket::Priority.where(default_create: true)
  17. return true if priorities_with_default.count == 1
  18. if priorities_with_default.count.zero?
  19. priority = Ticket::Priority.where(active: true).order(id: :asc).first
  20. priority.default_create = true
  21. priority.callback_loop = true
  22. priority.save!
  23. return true
  24. end
  25. if priorities_with_default.count > 1
  26. Ticket::Priority.all.each do |local_priority|
  27. next if local_priority.id == id
  28. local_priority.default_create = false
  29. local_priority.callback_loop = true
  30. local_priority.save!
  31. end
  32. end
  33. true
  34. end
  35. end