# frozen_string_literal: true

# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
require 'stripe'
require 'calculate/calculate_fees'

module StripeUtils
  # Get the verification status from a stripe object
  # Some of our accounts seem to be marked 'Unverified,' but have no
  # fields_needed set and have transfers_enabled set to true. So for our system,
  # that practically means they are verified.
  def self.get_verification_status(stripe_acct)
    return 'verified' if stripe_acct.transfers_enabled

    stripe_acct.legal_entity.verification.status
  end

  def self.create_transfer(net_amount, stripe_account_id, currency)
    Stripe::Transfer.create({
                              amount: net_amount,
                              currency: currency || Settings.intntl.currencies[0],
                              recipient: 'self'
                            },
                            stripe_account: stripe_account_id)
  end

  def self.create_refund(stripe_charge, amount, reason)
    stripe_charge.refunds.create(
      amount: amount,
      refund_application_fee: true,
      reverse_transfer: true,
      reason: reason
    )
  end
end