Sha256: 2ba894cba813c6199d26afdc5c5d66cb1a5f77856d485d17301704a91d7d4544

Contents?: true

Size: 980 Bytes

Versions: 4

Compression:

Stored size: 980 Bytes

Contents

class StripeModelCallbacks::Charge::UpdatedService < StripeModelCallbacks::BaseEventService
  def perform
    charge.assign_from_stripe(object)

    if charge.save
      create_refunds if event.type == "charge.refunded"
      create_activity
      succeed!
    else
      fail! charge.errors.full_messages
    end
  end

private

  def charge
    @charge ||= StripeCharge.find_or_initialize_by(stripe_id: object.id)
  end

  def create_activity
    case event.type
    when "charge.captured"
      charge.create_activity :captured
    when "charge.failed"
      charge.create_activity :failed
    when "charge.pending"
      charge.create_activity :pending
    when "charge.refunded"
      charge.create_activity :refunded
    when "charge.succeeded"
      charge.create_activity :succeeded
    end
  end

  def create_refunds
    object.refunds.each do |stripe_refund|
      StripeModelCallbacks::Refund::UpdatedService.reported_execute!(object: stripe_refund)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

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