1# frozen_string_literal: true
2
3require "value_semantics/monkey_patched"
4require_relative "customer_financials"
5require_relative "payment_methods"
6
7class AdminFinancialInfo
8 value_semantics do
9 transactions ArrayOf(CustomerFinancials::TransactionInfo)
10 declines Integer
11 btc_addresses ArrayOf(String)
12 payment_methods PaymentMethods
13 end
14
15 def self.for(customer)
16 EMPromise.all([
17 customer.transactions, customer.declines,
18 customer.payment_methods, customer.btc_addresses
19 ]).then do |transactions, declines, payment_methods, btc_addresses|
20 new(
21 transactions: transactions,
22 declines: declines,
23 payment_methods: payment_methods, btc_addresses: btc_addresses
24 )
25 end
26 end
27end