sla.rb 837 B

12345678910111213141516171819202122232425262728293031
  1. # Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
  2. class Sla < ApplicationModel
  3. include ChecksClientNotification
  4. include ChecksConditionValidation
  5. include HasEscalationCalculationImpact
  6. include Sla::Assets
  7. store :condition
  8. store :data
  9. validates :name, presence: true
  10. belongs_to :calendar, optional: true
  11. def condition_matches?(ticket)
  12. query_condition, bind_condition, tables = Ticket.selector2sql(condition)
  13. Ticket.where(query_condition, *bind_condition).joins(tables).exists?(ticket.id)
  14. end
  15. def self.for_ticket(ticket)
  16. fallback = nil
  17. all.order(:name, :created_at).find_each do |record|
  18. if record.condition.present?
  19. return record if record.condition_matches?(ticket)
  20. else
  21. fallback = record
  22. end
  23. end
  24. fallback
  25. end
  26. end