2020-03-07 06:48:16 +00:00
|
|
|
# == Schema Information
|
|
|
|
#
|
|
|
|
# Table name: account_users
|
|
|
|
#
|
|
|
|
# id :bigint not null, primary key
|
2020-05-26 17:08:48 +00:00
|
|
|
# active_at :datetime
|
2020-03-07 06:48:16 +00:00
|
|
|
# role :integer default("agent")
|
|
|
|
# created_at :datetime not null
|
|
|
|
# updated_at :datetime not null
|
|
|
|
# account_id :bigint
|
|
|
|
# inviter_id :bigint
|
|
|
|
# user_id :bigint
|
|
|
|
#
|
|
|
|
# Indexes
|
|
|
|
#
|
|
|
|
# index_account_users_on_account_id (account_id)
|
|
|
|
# index_account_users_on_user_id (user_id)
|
|
|
|
# uniq_user_id_per_account_id (account_id,user_id) UNIQUE
|
|
|
|
#
|
|
|
|
# Foreign Keys
|
|
|
|
#
|
|
|
|
# fk_rails_... (account_id => accounts.id)
|
|
|
|
# fk_rails_... (user_id => users.id)
|
|
|
|
#
|
|
|
|
|
|
|
|
class AccountUser < ApplicationRecord
|
|
|
|
belongs_to :account
|
|
|
|
belongs_to :user
|
|
|
|
belongs_to :inviter, class_name: 'User', optional: true
|
|
|
|
|
|
|
|
enum role: { agent: 0, administrator: 1 }
|
|
|
|
accepts_nested_attributes_for :account
|
|
|
|
|
2020-08-25 17:34:02 +00:00
|
|
|
after_create_commit :notify_creation, :create_notification_setting
|
2020-05-26 17:08:48 +00:00
|
|
|
after_destroy :notify_deletion, :destroy_notification_setting
|
2020-03-07 06:48:16 +00:00
|
|
|
|
|
|
|
validates :user_id, uniqueness: { scope: :account_id }
|
|
|
|
|
|
|
|
def create_notification_setting
|
|
|
|
setting = user.notification_settings.new(account_id: account.id)
|
2020-05-01 09:23:43 +00:00
|
|
|
setting.selected_email_flags = [:email_conversation_assignment]
|
|
|
|
setting.selected_push_flags = [:push_conversation_assignment]
|
2020-03-07 06:48:16 +00:00
|
|
|
setting.save!
|
|
|
|
end
|
|
|
|
|
|
|
|
def destroy_notification_setting
|
2020-05-24 17:14:26 +00:00
|
|
|
setting = user.notification_settings.find_by(account_id: account.id)
|
2020-03-07 06:48:16 +00:00
|
|
|
setting.destroy!
|
|
|
|
end
|
2020-05-26 17:08:48 +00:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def notify_creation
|
|
|
|
Rails.configuration.dispatcher.dispatch(AGENT_ADDED, Time.zone.now, account: account)
|
|
|
|
end
|
|
|
|
|
|
|
|
def notify_deletion
|
|
|
|
Rails.configuration.dispatcher.dispatch(AGENT_REMOVED, Time.zone.now, account: account)
|
|
|
|
end
|
2020-03-07 06:48:16 +00:00
|
|
|
end
|