# frozen_string_literal: true

# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
require 'stripe'
require 'active_support/core_ext'

module ConstructBillingSubscription
  def self.with_stripe(np, billing_plan)
    raise ArgumentError, 'Billing plan not found' if billing_plan.nil?

    customer = Stripe::Customer.retrieve np.active_card.stripe_customer_id
    stripe_subscription = customer.subscriptions.create(
      plan: billing_plan.stripe_plan_id
    )
    {
      billing_plan_id: billing_plan.id,
      stripe_subscription_id: stripe_subscription.id,
      status: stripe_subscription.status
    }
  end
end