Class: Billy::Paddle::Webhooks::SubscriptionUpdated

Inherits:
Object
  • Object
show all
Defined in:
lib/billy/paddle/webhooks/subscription_updated.rb

Instance Method Summary collapse

Instance Method Details

#call(event) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/billy/paddle/webhooks/subscription_updated.rb', line 6

def call(event)
  subscription = Billy::Subscription.find_by(processor: "paddle", processor_id: event.subscription_id)

  return if subscription.nil?

  case event.status
  when "deleted"
    subscription.status = "cancelled"
    subscription.ends_at = Time.zone.parse(event.next_bill_date) || Time.current if subscription.ends_at.blank?
  when "active"
    subscription.status = "active"
    if event.paused_from.present?
      subscription.paused_from = Time.zone.parse(event.paused_from)

      # Send Discord Event
      subscription..discord(kind: :subscription_paused)
    else
      subscription.paused_from = nil
    end
  else
    subscription.status = event.status
  end

  subscription.plan = Billy::Plan.find_by(processor: "paddle", processor_id: event.subscription_plan_id)
  subscription.update_url = event.update_url
  subscription.cancel_url = event.cancel_url

  subscription.save!
end