Sha256: 9a51f05e42bf6fe455670e841e97a1a7a4a60e28a471fdf0242f6878ca1dca1f

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

require "banks_api/ynab/bulk_transactions_converter"

module BanksApi
  module Ynab
    class Sync
      def self.run(*args)
        new(*args).run
      end

      def initialize(ynab_budget_id:, ynab_account_id:, bank_name:, credentials:, bank_account_id:, date_from:, date_to:)
        @ynab_budget_id = ynab_budget_id
        @ynab_account_id = ynab_account_id
        @bank_name = bank_name
        @credentials = credentials
        @bank_account_id = bank_account_id
        @date_from = date_from
        @date_to = date_to
      end

      def run
        ynab_api.transactions.bulk_create_transactions(ynab_budget_id, bulk_transactions)
      end

      private

        attr_reader :ynab_budget_id, :ynab_account_id, :bank_name, :credentials, :bank_account_id, :date_from, :date_to

        def bulk_transactions
          BanksApi::Ynab::BulkTransactions.new(banks_api_transactions, account_id: ynab_account_id)
        end

        def banks_api_transactions
          bank_account.transactions(from: date_from, to: date_to)
        end

        def bank_account
          @_bank_account ||= user_account.account(bank_account_id)
        end

        def user_account
          @_user_account ||= BanksApi::UserAccount.new(bank_name, credentials)
        end

        def ynab_api
          @_ynab_api ||= YNAB::API.new(ENV["YNAB_API_TOKEN"])
        end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
banks_api-ynab-0.1.1 lib/banks_api/ynab/sync.rb