mirror of
https://github.com/IT4Change/gradido.git
synced 2026-02-06 09:56:05 +00:00
24 lines
691 B
TypeScript
24 lines
691 B
TypeScript
import { Decimal } from 'decimal.js-light'
|
|
|
|
import { Decay } from '@graphql/model/Decay'
|
|
|
|
import { getLastTransaction } from 'database'
|
|
|
|
import { calculateDecay } from 'shared'
|
|
|
|
export async function calculateSenderBalance(
|
|
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 }
|
|
}
|