5
6
7
8
9
10
11
12
13
14
15
|
# File 'app/services/rails_drips/resume_campaign.rb', line 5
def self.call(campaign:, actor: nil)
campaign = campaign.is_a?(Campaign) ? campaign : Campaign.find_by(key: campaign.to_s)
return Result.new(status: :campaign_not_found) unless campaign
return Result.new(status: :already_active, campaign: campaign) if campaign.active?
return Result.new(status: :invalid_transition, campaign: campaign) unless campaign.paused?
campaign.update!(status: :active)
EnqueueDueDeliveries.call(campaign: campaign)
Instrumentation.instrument("campaign.resumed", campaign_id: campaign.id, actor_type: actor&.class&.name)
Result.new(status: :resumed, campaign: campaign)
end
|