67 lines
2.2 KiB
Ruby
67 lines
2.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# rubocop:disable Style/OneClassPerFile, Metrics/AbcSize, Metrics/MethodLength
|
|
|
|
class CreateCaptainInboxAutomations < ActiveRecord::Migration[7.1]
|
|
class CaptainInboxReminderSetting < ActiveRecord::Base
|
|
self.table_name = 'captain_inbox_reminder_settings'
|
|
end
|
|
|
|
class CaptainInboxAutomation < ActiveRecord::Base
|
|
self.table_name = 'captain_inbox_automations'
|
|
end
|
|
|
|
def change
|
|
create_table :captain_inbox_automations do |t|
|
|
t.references :account, null: false, foreign_key: true
|
|
t.references :inbox, null: false, foreign_key: true
|
|
t.string :title, null: false
|
|
t.text :message, null: false
|
|
t.integer :trigger_event, null: false, default: 0
|
|
t.integer :timing, null: false, default: 1
|
|
t.integer :offset_minutes, null: false, default: 0
|
|
t.boolean :enabled, null: false, default: true
|
|
|
|
t.timestamps
|
|
end
|
|
|
|
add_index :captain_inbox_automations, [:account_id, :inbox_id]
|
|
|
|
reversible do |dir|
|
|
dir.up do
|
|
CaptainInboxReminderSetting.reset_column_information
|
|
CaptainInboxAutomation.reset_column_information
|
|
|
|
CaptainInboxReminderSetting.find_each do |setting|
|
|
next unless setting.enabled
|
|
|
|
menu_message = setting.menu_message.presence || I18n.t('captain.reminders.defaults.menu')
|
|
feedback_message = setting.feedback_message.presence || I18n.t('captain.reminders.defaults.feedback')
|
|
|
|
CaptainInboxAutomation.create!(
|
|
account_id: setting.account_id,
|
|
inbox_id: setting.inbox_id,
|
|
title: I18n.t('captain.automations.defaults.menu_title'),
|
|
message: menu_message,
|
|
trigger_event: 0, # check_in
|
|
timing: 1, # after
|
|
offset_minutes: setting.menu_delay_minutes.to_i,
|
|
enabled: true
|
|
)
|
|
|
|
CaptainInboxAutomation.create!(
|
|
account_id: setting.account_id,
|
|
inbox_id: setting.inbox_id,
|
|
title: I18n.t('captain.automations.defaults.feedback_title'),
|
|
message: feedback_message,
|
|
trigger_event: 1, # check_out
|
|
timing: 1, # after
|
|
offset_minutes: setting.feedback_delay_minutes.to_i,
|
|
enabled: true
|
|
)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|