Class: EmailUnsubscribeHandler

Inherits:
Object
  • Object
show all
Defined in:
app/subscribers/email_unsubscribe_handler.rb

Instance Method Summary collapse

Instance Method Details

#call(event) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/subscribers/email_unsubscribe_handler.rb', line 4

def call(event)
  email      = event.data[:email]
  categories = event.data[:categories]

  return unless email.present? && categories.present?

  party_ids = Party.where(type: ["Customer", "Contact"])
                   .joins(:contact_points)
                   .where(ContactPoint[:detail].eq(email))
                   .pluck("parties.id")

  Rails.logger.info "EmailUnsubscribeHandler evaluating party_ids #{party_ids} linked to email #{email}"

  return unless party_ids.present?

  activities = Activity.open_activities
                       .joins(activity_type: { activity_chain_types: :email_template })
                       .merge(ActivityType.not_tagged_with(:sale))
                       .where(party_id: party_ids)
                       .where(email_templates: { category: categories })
  activities.each do |activity|
    activity.new_note = "Cancelled due to email unsubscription event for email: #{email}, categories: #{categories.join(', ')}"
    activity.cancel
  end
end