Skip to content

Commit cf9954e

Browse files
committed
Handle weekly batch bounces and complaints
1 parent e750a29 commit cf9954e

File tree

5 files changed

+326
-124
lines changed

5 files changed

+326
-124
lines changed

app/jobs/application_job.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,7 @@ def set_submission_batch_logging_attributes(form:, mode:, delivery:)
1818
CurrentJobLoggingAttributes.preview = mode.preview?
1919
CurrentJobLoggingAttributes.delivery_id = delivery.id
2020
CurrentJobLoggingAttributes.delivery_reference = delivery.delivery_reference
21+
CurrentJobLoggingAttributes.delivery_schedule = delivery.delivery_schedule
22+
CurrentJobLoggingAttributes.batch_begin_at = delivery.batch_begin_at
2123
end
2224
end

app/jobs/receive_submission_bounces_and_complaints_job.rb

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def perform
3232
def set_logging_attributes(submission:, delivery:)
3333
if delivery.immediate?
3434
set_submission_logging_attributes(submission:, delivery:)
35-
elsif delivery.daily?
35+
elsif delivery.daily? || delivery.weekly?
3636
set_submission_batch_logging_attributes(form: submission.form, mode: submission.mode_object, delivery:)
3737
end
3838
end
@@ -66,8 +66,14 @@ def process_bounce(delivery, submission, ses_message)
6666
}
6767
end
6868

69-
process_immediate_delivery_bounce(delivery, submission, ses_bounce, bounced_recipients) if delivery.immediate?
70-
process_daily_delivery_bounce(delivery, submission, ses_bounce, bounced_recipients) if delivery.daily?
69+
case delivery.delivery_schedule
70+
when "immediate"
71+
process_immediate_delivery_bounce(delivery, submission, ses_bounce, bounced_recipients)
72+
when "daily"
73+
process_daily_delivery_bounce(delivery, submission, ses_bounce, bounced_recipients)
74+
when "weekly"
75+
process_weekly_delivery_bounce(delivery, submission, ses_bounce, bounced_recipients)
76+
end
7177
end
7278

7379
def process_immediate_delivery_bounce(delivery, submission, ses_bounce, bounced_recipients)
@@ -96,9 +102,27 @@ def process_daily_delivery_bounce(delivery, submission, ses_bounce, bounced_reci
96102
extra: {
97103
form_id: submission.form_id,
98104
delivery_reference: delivery.delivery_reference,
105+
delivery_id: delivery.id,
99106
delivery_schedule: delivery.delivery_schedule,
107+
batch_begin_at: delivery.batch_begin_at,
108+
job_id:,
109+
ses_bounce:,
110+
})
111+
end
112+
end
113+
114+
def process_weekly_delivery_bounce(delivery, submission, ses_bounce, bounced_recipients)
115+
EventLogger.log_form_event("weekly_batch_email_bounced", ses_bounce: ses_bounce.merge(bounced_recipients:))
116+
117+
unless submission.preview?
118+
Sentry.capture_message("Weekly submission batch email bounced for form #{submission.form_id} - #{self.class.name}:",
119+
fingerprint: ["{{ default }}", submission.form_id],
120+
extra: {
121+
form_id: submission.form_id,
122+
delivery_reference: delivery.delivery_reference,
100123
delivery_id: delivery.id,
101-
batch_date: submission.submission_time.to_date,
124+
delivery_schedule: delivery.delivery_schedule,
125+
batch_begin_at: delivery.batch_begin_at,
102126
job_id:,
103127
ses_bounce:,
104128
})
@@ -110,6 +134,8 @@ def process_complaint(delivery)
110134
EventLogger.log_form_event("submission_complaint")
111135
elsif delivery.daily?
112136
EventLogger.log_form_event("daily_batch_email_complaint")
137+
elsif delivery.weekly?
138+
EventLogger.log_form_event("weekly_batch_email_complaint")
113139
end
114140
end
115141
end

app/models/current_job_logging_attributes.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ class CurrentJobLoggingAttributes < ActiveSupport::CurrentAttributes
77
:preview,
88
:delivery_id,
99
:delivery_reference,
10+
:delivery_schedule,
11+
:batch_begin_at,
1012
:confirmation_email_id,
1113
:sqs_message_id,
1214
:sns_message_timestamp
@@ -21,6 +23,8 @@ def as_hash
2123
preview: preview.to_s,
2224
delivery_id:,
2325
delivery_reference:,
26+
delivery_schedule:,
27+
batch_begin_at:,
2428
confirmation_email_id:,
2529
sqs_message_id:,
2630
sns_message_timestamp:,

spec/factories/deliveries.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@
3838

3939
trait :daily_scheduled_delivery do
4040
delivery_schedule { "daily" }
41+
batch_begin_at { Time.current.beginning_of_day }
42+
end
43+
44+
trait :weekly_scheduled_delivery do
45+
delivery_schedule { "weekly" }
46+
batch_begin_at { (Time.current - 7.days).beginning_of_day }
4147
end
4248
end
4349
end

0 commit comments

Comments
 (0)