lib/ibanity/api/billing/xs2a/report.ex

defmodule Ibanity.Billing.Xs2a.Report do
  use Ibanity.Resource

  @api_schema_path ~w(billing xs2a customer report)

  defstruct beginning: nil,
            end: nil,
            active_accounts_count: nil,
            inactive_accounts_count: nil,
            payment_initiation_requests_count: nil,
            account_transactions_synchronization_count: nil,
            account_details_synchronization_count: nil,
            accounts_count: nil

  def find(%Request{} = request) do
    request
    |> Client.execute(:get, @api_schema_path)
  end

  def key_mapping do
    [
      beginning: {~w(attributes billingPeriod beginning), :datetime},
      end: {~w(attributes billingPeriod end), :datetime},
      active_accounts_count: {~w(attributes billingPeriod activeAccountsCount), :integer},
      inactive_accounts_count: {~w(attributes billingPeriod inactiveAccountsCount), :integer},
      payment_initiation_requests_count: {~w(attributes billingPeriod paymentInitiationRequestsCount), :integer},
      account_transactions_synchronization_count: {~w(attributes billingPeriod accountTransactionsSynchronizationCount), :integer},
      account_details_synchronization_count: {~w(attributes billingPeriod accountDetailsSynchronizationCount), :integer},
      accounts_count: {~w(attributes billingPeriod accountsCount), :integer}
    ]
  end
end