46 lines
1.3 KiB
Ruby
46 lines
1.3 KiB
Ruby
module Enterprise::Channelable
|
|
extend ActiveSupport::Concern
|
|
|
|
# Active support concern has `included` which changes the order of the method lookup chain
|
|
# https://stackoverflow.com/q/40061982/3824876
|
|
# manually prepend the instance methods to combat this
|
|
included do
|
|
prepend InstanceMethods
|
|
end
|
|
|
|
module InstanceMethods
|
|
def create_audit_log_entry
|
|
account = self.account
|
|
associated_type = 'Account'
|
|
|
|
return if inbox.nil?
|
|
|
|
auditable_id = inbox.id
|
|
auditable_type = 'Inbox'
|
|
audited_changes = saved_changes.except('updated_at')
|
|
|
|
return if audited_changes.blank?
|
|
|
|
# skip audit log creation if the only change is whatsapp channel template update
|
|
return if messaging_template_updates?(audited_changes)
|
|
|
|
Enterprise::AuditLog.create(
|
|
auditable_id: auditable_id,
|
|
auditable_type: auditable_type,
|
|
action: 'update',
|
|
associated_id: account.id,
|
|
associated_type: associated_type,
|
|
audited_changes: audited_changes
|
|
)
|
|
end
|
|
|
|
def messaging_template_updates?(changes)
|
|
# if there is more than one key, return false
|
|
return false unless changes.keys.length == 1
|
|
|
|
# if the only key is message_templates_last_updated, return true
|
|
changes.key?('message_templates_last_updated')
|
|
end
|
|
end
|
|
end
|