# 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
module Nonprofits
  class CardsController < ApplicationController
    include Controllers::Nonprofit::Current
  include Controllers::Nonprofit::Authorization

    before_action :authenticate_nonprofit_user!

    def edit
      @nonprofit = current_nonprofit
    end

    # POST /nonprofits/:nonprofit_id/card
    def create
      render(
        JsonResp.new(params) do |_d|
          requires(:nonprofit_id).as_int
          requires(:card).nested do
            requires(:name, :stripe_card_token, :stripe_card_id).as_string
            requires(:holder_id).as_int
            requires(:holder_type).one_of('Supporter', 'Nonprofit')
          end
        end.when_valid do |d|
          InsertCard.with_stripe(d[:card])
        end
      )
    end

    private
    def required_params
      params.require(:nonprofit_id, card: [:name, :stripe_card_token, :stripe_card_id, :holder_id, :holder_type])
    end
  end
end