Sha256: c69af3394b33eb400f0578a8a99852b7fda6785adf42549df1876b4c4123886c

Contents?: true

Size: 1.81 KB

Versions: 15

Compression:

Stored size: 1.81 KB

Contents

module CatarsePagarme
  class BalanceTransferDelegator
    attr_accessor :balance_transfer, :transfer

    def initialize(balance_transfer)
      configure_pagarme
      self.balance_transfer = balance_transfer
    end

    def transfer_funds
      ActiveRecord::Base.transaction do
        raise "unable to create transfer, need to be authorized" if !balance_transfer.authorized?

        bank_account = PagarMe::BankAccount.new(bank_account_attributes.delete(:bank_account))
        bank_account.create
        raise "unable to create an bank account" unless bank_account.id.present?

        transfer = PagarMe::Transfer.new({
          bank_account_id: bank_account.id,
          amount: value_for_transaction
        })
        transfer.create
        raise "unable to create a transfer" unless transfer.id.present?

        balance_transfer.update_attribute(:transfer_id, transfer.id)
        balance_transfer.transition_to(:processing, transfer_data: transfer.to_hash)
        balance_transfer
      end
    end

    def bank_account_attributes
      user = balance_transfer.user
      account = user.bank_account

      bank_account_attrs = {
        bank_account: {
          bank_code: (account.bank.code || account.bank.name),
          agencia: account.agency,
          agencia_dv: account.agency_digit,
          conta: account.account,
          conta_dv: account.account_digit,
          legal_name: user.name[0..29],
          document_number: user.cpf,
          type: account.account_type
        }
      }

      bank_account_attrs[:bank_account].delete(:agencia_dv) if account.agency_digit.blank?
      return bank_account_attrs
    end

    def configure_pagarme
      ::PagarMe.api_key = CatarsePagarme.configuration.api_key
    end

    def value_for_transaction
      (self.balance_transfer.amount * 100).to_i
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
catarse_pagarme-2.13.0 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.12.0 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.11.0 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.15 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.14 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.13 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.12 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.11 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.10 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.9 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.8 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.7 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.6 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.5 app/models/catarse_pagarme/balance_transfer_delegator.rb
catarse_pagarme-2.10.4 app/models/catarse_pagarme/balance_transfer_delegator.rb