UNPKG

@accounter/server

Version:

52 lines 2.4 kB
import { GraphQLError } from 'graphql'; import { formatFinancialAmount } from '../../../shared/helpers/index.js'; import { BankDepositTransactionsProvider } from '../providers/bank-deposit-transactions.provider.js'; export const bankDepositTransactionsResolvers = { Query: { deposit: async (_, { depositId }, { injector }) => { try { const transactions = await injector .get(BankDepositTransactionsProvider) .getTransactionsByBankDepositLoader.load(depositId); const currentBalance = transactions.reduce((acc, tx) => acc + Number(tx.amount), 0); return { id: depositId, transactions: transactions.map(tx => tx.id), balance: formatFinancialAmount(currentBalance), isOpen: currentBalance <= 0, }; } catch (e) { console.error('Error fetching bank deposit', e); throw new GraphQLError('Error fetching bank deposit'); } }, depositByCharge: async (_, { chargeId }, { injector }) => { try { const transactions = await injector .get(BankDepositTransactionsProvider) .getDepositTransactionsByChargeId(chargeId, true); const currentBalance = transactions.reduce((acc, tx) => acc + Number(tx.amount), 0); const depositIds = new Set(transactions.map(tx => tx.deposit_id).filter(Boolean)); if (depositIds.size === 0) { throw new GraphQLError('No deposits found'); } if (depositIds.size > 1) { throw new GraphQLError('Multiple deposits found'); } const id = [...depositIds][0]; return { id, transactions: transactions.map(tx => tx.id), balance: formatFinancialAmount(currentBalance), isOpen: currentBalance <= 0, }; } catch (e) { console.error('Error fetching bank deposit', e); throw new GraphQLError('Error fetching bank deposit'); } }, }, }; //# sourceMappingURL=bank-deposit-transactions.resolver.js.map