Sha256: f2ee6a82b492ec920a34b02321ffc10344bf9fa69689dcb819322f3e2f0272e1

Contents?: true

Size: 1.08 KB

Versions: 5

Compression:

Stored size: 1.08 KB

Contents

class StripeModelCallbacks::SubscriptionSchedule::UpdatedService < StripeModelCallbacks::BaseEventService
  TRACKED_ACTIVITIES = {
    "subscription_schedule.canceled": :canceled
  }.with_indifferent_access.freeze
  private_constant :TRACKED_ACTIVITIES

  def perform
    subscription_schedule.assign_from_stripe(object)
    set_cancellation_date if canceled?

    return success_actions if subscription_schedule.save

    fail!(subscription_schedule.errors.full_messages)
  end

private

  def canceled?
    @canceled ||= event.type == "subscription_schedule.canceled"
  end

  def create_activity
    return unless tracked_activities[event.type]

    subscription_schedule.create_activity(tracked_activities[event.type])
  end

  def set_cancellation_date
    return unless canceled?

    subscription_schedule.canceled_at ||= Time.zone.now
  end

  def subscription_schedule
    @subscription_schedule ||= StripeSubscriptionSchedule.find_or_initialize_by(stripe_id: object.id)
  end

  def success_actions
    create_activity
    succeed!
  end

  def tracked_activities
    TRACKED_ACTIVITIES
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
stripe_model_callbacks-0.1.7 app/services/stripe_model_callbacks/subscription_schedule/updated_service.rb
stripe_model_callbacks-0.1.6 app/services/stripe_model_callbacks/subscription_schedule/updated_service.rb
stripe_model_callbacks-0.1.5 app/services/stripe_model_callbacks/subscription_schedule/updated_service.rb
stripe_model_callbacks-0.1.4 app/services/stripe_model_callbacks/subscription_schedule/updated_service.rb
stripe_model_callbacks-0.1.3 app/services/stripe_model_callbacks/subscription_schedule/updated_service.rb