Class: RailsDrips::EnqueueDueDeliveries

Inherits:
Object
  • Object
show all
Defined in:
app/services/rails_drips/enqueue_due_deliveries.rb

Class Method Summary collapse

Class Method Details

.call(campaign: nil, dry_run: false) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'app/services/rails_drips/enqueue_due_deliveries.rb', line 5

def self.call(campaign: nil, dry_run: false)
  campaign = Campaign.find_by(key: campaign.to_s) unless campaign.nil? || campaign.is_a?(Campaign)
  scope = Delivery.due.joins(:enrollment).merge(Enrollment.status_active)
  scope = scope.where(rails_drips_enrollments: { campaign_id: campaign.id }) if campaign
  ids = scope.pluck(:id)
  unless dry_run
    ids.each { |id| RailsDrips.configuration.delivery_job.perform_later(id) }
  end
  Result.new(status: dry_run ? :dry_run : :enqueued, campaign: campaign, count: ids.length)
end