chatwoot-develop/enterprise/app/models/captain/inbox_automation.rb
2026-01-12 19:04:15 -03:00

42 lines
1.4 KiB
Ruby

# == Schema Information
#
# Table name: captain_inbox_automations
#
# id :bigint not null, primary key
# enabled :boolean default(TRUE), not null
# message :text not null
# offset_minutes :integer default(0), not null
# timing :integer default("after"), not null
# title :string not null
# trigger_event :integer default("check_in"), not null
# created_at :datetime not null
# updated_at :datetime not null
# account_id :bigint not null
# inbox_id :bigint not null
#
# Indexes
#
# index_captain_inbox_automations_on_account_id (account_id)
# index_captain_inbox_automations_on_account_id_and_inbox_id (account_id,inbox_id)
#
class Captain::InboxAutomation < ApplicationRecord
self.table_name = 'captain_inbox_automations'
belongs_to :account
belongs_to :inbox
enum trigger_event: { check_in: 0, check_out: 1 }
enum timing: { before: 0, after: 1 }
validates :title, :message, presence: true
validates :offset_minutes, numericality: { greater_than_or_equal_to: 0 }
def scheduled_at(check_in_at:, check_out_at:)
base_time = trigger_event == 'check_out' ? check_out_at : check_in_at
return if base_time.blank?
delta = offset_minutes.to_i.minutes
timing == 'before' ? base_time - delta : base_time + delta
end
end