trabajo-afectivo/app/models/sla.rb
2022-01-01 14:38:12 +01:00

45 lines
1.2 KiB
Ruby

# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
class Sla < ApplicationModel
include ChecksClientNotification
include ChecksConditionValidation
include HasEscalationCalculationImpact
include Sla::Assets
belongs_to :calendar, optional: true
# workflow checks should run after before_create and before_update callbacks
include ChecksCoreWorkflow
validates :name, presence: true
validate :cannot_have_response_and_update
store :condition
store :data
def condition_matches?(ticket)
query_condition, bind_condition, tables = Ticket.selector2sql(condition)
Ticket.where(query_condition, *bind_condition).joins(tables).exists?(ticket.id)
end
def self.for_ticket(ticket)
fallback = nil
all.order(:name, :created_at).as_batches(size: 10) do |record|
if record.condition.present?
return record if record.condition_matches?(ticket)
else
fallback = record
end
end
fallback
end
private
def cannot_have_response_and_update
return if response_time.blank? || update_time.blank?
errors.add :base, 'cannot have both response time and update time'
end
end