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
|