Class: Tang::ApplySubscriptionDiscount

Inherits:
Object
  • Object
show all
Defined in:
app/services/tang/apply_subscription_discount.rb

Class Method Summary collapse

Class Method Details

.call(subscription, coupon) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/services/tang/apply_subscription_discount.rb', line 3

def self.call(subscription, coupon)
  begin
    sub = Stripe::Subscription.retrieve(subscription.stripe_id)
    sub.coupon = coupon.stripe_id
    sub.save

    if sub.discount.methods.include? 'start'
      start = sub.discount.start.to_s
      start_timestamp = DateTime.strptime(start, '%s')
    else
      start_timestamp = Time.now
    end
    subscription.update(coupon: coupon, coupon_start: start_timestamp)
  rescue Stripe::StripeError => e
    subscription.errors.add(:base, :invalid, message: e.message)
  end

  return subscription
end