Class: ContactDeactivator

Inherits:
Object
  • Object
show all
Defined in:
app/services/contact_deactivator.rb

Overview

Deactivates a contact: marks inactive, clears open opportunity/order links,
reassigns managed employees to the contact's manager, and destroys the login account.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(contact) ⇒ ContactDeactivator

Returns a new instance of ContactDeactivator.



10
11
12
# File 'app/services/contact_deactivator.rb', line 10

def initialize(contact)
  @contact = contact
end

Class Method Details

.call(contact) ⇒ Object



6
7
8
# File 'app/services/contact_deactivator.rb', line 6

def self.call(contact)
  new(contact).call
end

Instance Method Details

#callObject



14
15
16
17
18
19
20
21
22
23
24
# File 'app/services/contact_deactivator.rb', line 14

def call
  return false if @contact.inactive

  ::Contact.transaction do
    @contact.update!(inactive: true)
    nullify_contact_on_open_resources
    reassign_managed_employees
    @contact..presence&.destroy!
  end
  true
end