gradido/federation/src/graphql/api/1_0/util/calculateRecipientBalance.ts
2025-06-23 13:47:34 +02:00

22 lines
711 B
TypeScript

import { calculateDecay } from 'shared'
import { getLastTransaction } from '@/graphql/util/getLastTransaction'
import { Decimal } from 'decimal.js-light'
import { Decay } from '../model/Decay'
export async function calculateRecipientBalance(
userId: number,
amount: Decimal,
time: Date,
): Promise<{ balance: Decimal; decay: Decay; lastTransactionId: number } | null> {
const lastTransaction = await getLastTransaction(userId)
if (!lastTransaction) {
return null
}
const decay = new Decay(calculateDecay(lastTransaction.balance, lastTransaction.balanceDate, time))
const balance = decay.balance.add(amount.toString())
return { balance, lastTransactionId: lastTransaction.id, decay }
}