5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# File 'app/services/rails_drips/retry_delivery.rb', line 5
def self.call(delivery:, actor: nil)
delivery.with_lock do
enrollment = delivery.enrollment
unless delivery.failed? && enrollment.active? && enrollment.campaign.active?
return Result.new(status: :not_retryable, delivery: delivery, enrollment: enrollment)
end
delivery.update!(status: :scheduled, scheduled_for: RailsDrips.configuration.current_time,
failed_at: nil, last_error: nil)
RecordEvent.call(enrollment: enrollment, event_type: "delivery_retried", actor: actor,
data: { "delivery_id" => delivery.id })
end
RailsDrips.configuration.delivery_job.perform_later(delivery.id)
Result.new(status: :retried, delivery: delivery, enrollment: delivery.enrollment)
end
|