Feature: Contact Merge Action (#378)

This commit is contained in:
Sojan Jose
2019-12-24 13:27:25 +05:30
committed by Pranav Raj S
parent 32efe8676f
commit 7d85f2e046
13 changed files with 198 additions and 35 deletions

View File

@@ -0,0 +1,36 @@
class ContactMergeAction
pattr_initialize [:account!, :base_contact!, :mergee_contact!]
def perform
ActiveRecord::Base.transaction do
validate_contacts
merge_conversations
merge_contact_inboxes
remove_mergee_contact
end
end
private
def validate_contacts
return if belongs_to_account?(@base_contact) && belongs_to_account?(@mergee_contact)
raise Exception, 'contact does not belong to the account'
end
def belongs_to_account?(contact)
@account.id == contact.account_id
end
def merge_conversations
Conversation.where(contact_id: @mergee_contact.id).update(contact_id: @base_contact.id)
end
def merge_contact_inboxes
ContactInbox.where(contact_id: @mergee_contact.id).update(contact_id: @base_contact.id)
end
def remove_mergee_contact
@mergee_contact.destroy!
end
end