Sha256: 82e6cf67fb638d65fd92b40293baff08373cdc8e05c1ec00d929eb61449e3dc6

Contents?: true

Size: 1.02 KB

Versions: 3

Compression:

Stored size: 1.02 KB

Contents

module Tang
  class ImportSubscriptionsJob < ActiveJob::Base
    queue_as :default

    def perform(starting_after = nil)
      # Make sure we don't email everyone
      Subscription.skip_callback(:save, :before, :check_for_upgrade)

      # Import all Stripe subscriptions
      stripe_subscriptions = Stripe::Subscription.list(status: 'all', limit: 100, starting_after: starting_after)
      stripe_subscriptions.each do |stripe_subscription|
        import_subscription(stripe_subscription)
      end

      # All done, enable the mailer
      Subscription.set_callback(:save, :before, :check_for_upgrade)

      Tang::ImportSubscriptionsJob.perform_now(stripe_subscriptions.data.last.id) if stripe_subscriptions.has_more
    end

    def import_subscription(stripe_subscription)
      subscription = Subscription.from_stripe(stripe_subscription)
      if subscription.present?
        # Handle removed discounts
        subscription.update(coupon: nil, coupon_start: nil) if stripe_subscription.discount.nil?
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tang-0.2.2 app/jobs/tang/import_subscriptions_job.rb
tang-0.2.1 app/jobs/tang/import_subscriptions_job.rb
tang-0.2.0 app/jobs/tang/import_subscriptions_job.rb