module Pay
  module Stripe
    module Webhooks
      class PaymentActionRequired
        def call(event)
          # Event is of type "invoice" see:
          # https://stripe.com/docs/api/invoices/object

          object = event.data.object

          pay_subscription = Pay::Subscription.find_by_processor_and_id(:stripe, object.subscription)
          return if pay_subscription.nil?

          if Pay.send_email?(:payment_action_required, pay_subscription)
            Pay::UserMailer.with(
              pay_customer: pay_subscription.customer,
              payment_intent_id: event.data.object.payment_intent,
              pay_subscription: pay_subscription
            ).payment_action_required.deliver_later
          end
        end
      end
    end
  end
end
