# 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 'format/name'
require 'get_data'
require 'stripe'

module CreateStripeAccount
  def self.for_nonprofit(user, params)
    fst_name, lst_name = Format::Name.split_full(GetData.chain(user, :profile, :name))
    Stripe::Account.create(
      managed: true,
      email: params[:email],
      business_name: params[:name],
      business_url: params[:website],
      legal_entity: {
        type: 'company',
        address: {
          line1: params[:address],
          city: params[:city],
          state: params[:state_code],
          postal_code: params[:zip_code],
          country: 'US'
        },
        business_name: params[:name],
        business_tax_id: params[:ein],
        first_name: fst_name,
        last_name: lst_name
      },
      product_description: 'Nonprofit donations',
      tos_acceptance: {
        date: Time.current.to_i,
        ip: user.current_sign_in_ip
      },
      transfer_schedule: { interval: 'manual' }
    )
  end
end