123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class Ticket::Priority < ApplicationModel
- include HasDefaultModelUserRelations
- include CanBeImported
- include ChecksHtmlSanitized
- include HasCollectionUpdate
- include HasSearchIndexBackend
- self.table_name = 'ticket_priorities'
- validates :name, presence: true, uniqueness: { case_sensitive: false }
- after_create :ensure_defaults
- after_update :ensure_defaults
- after_destroy :ensure_defaults
- validates :note, length: { maximum: 250 }
- sanitized_html :note
- attr_accessor :callback_loop
- def ensure_defaults
- return true if callback_loop
- priorities_with_default = Ticket::Priority.where(default_create: true)
- return true if priorities_with_default.count == 1
- if priorities_with_default.count.zero?
- priority = Ticket::Priority.where(active: true).reorder(id: :asc).first
- priority.default_create = true
- priority.callback_loop = true
- priority.save!
- return true
- end
- if priorities_with_default.count > 1
- Ticket::Priority.all.each do |local_priority|
- next if local_priority.id == id
- local_priority.default_create = false
- local_priority.callback_loop = true
- local_priority.save!
- end
- end
- true
- end
- end
|