mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
removed duplicate calculation, removed unnecessary checks therefore
This commit is contained in:
parent
c5486156cc
commit
f6f8572a82
@ -35,26 +35,25 @@ import { RIGHTS } from '../../auth/RIGHTS'
|
|||||||
// helper helper function
|
// helper helper function
|
||||||
async function updateStateBalance(
|
async function updateStateBalance(
|
||||||
user: dbUser,
|
user: dbUser,
|
||||||
centAmount: number,
|
balance: number,
|
||||||
received: Date,
|
received: Date,
|
||||||
queryRunner: QueryRunner,
|
queryRunner: QueryRunner,
|
||||||
): Promise<dbBalance> {
|
): Promise<dbBalance> {
|
||||||
let balance = await dbBalance.findOne({ userId: user.id })
|
let userBalance = await dbBalance.findOne({ userId: user.id })
|
||||||
if (!balance) {
|
if (!userBalance) {
|
||||||
balance = new dbBalance()
|
userBalance = new dbBalance()
|
||||||
balance.userId = user.id
|
userBalance.userId = user.id
|
||||||
balance.amount = centAmount
|
userBalance.amount = balance
|
||||||
balance.modified = received
|
userBalance.modified = received
|
||||||
} else {
|
} else {
|
||||||
const decayedBalance = calculateDecay(balance.amount, balance.recordDate, received).balance
|
userBalance.amount = balance
|
||||||
balance.amount = decayedBalance + centAmount
|
userBalance.modified = new Date()
|
||||||
balance.modified = new Date()
|
|
||||||
}
|
}
|
||||||
if (balance.amount <= 0) {
|
if (userBalance.amount <= 0) {
|
||||||
throw new Error('error new balance <= 0')
|
throw new Error('error new balance <= 0')
|
||||||
}
|
}
|
||||||
balance.recordDate = received
|
userBalance.recordDate = received
|
||||||
return queryRunner.manager.save(balance).catch((error) => {
|
return queryRunner.manager.save(userBalance).catch((error) => {
|
||||||
throw new Error('error saving balance:' + error)
|
throw new Error('error saving balance:' + error)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -329,32 +328,11 @@ export class TransactionResolver {
|
|||||||
transactionSend.linkedTransactionId = transactionReceive.id
|
transactionSend.linkedTransactionId = transactionReceive.id
|
||||||
await queryRunner.manager.update(dbTransaction, { id: transactionSend.id }, transactionSend)
|
await queryRunner.manager.update(dbTransaction, { id: transactionSend.id }, transactionSend)
|
||||||
|
|
||||||
// Update Balance: sender - amount
|
// Update Balance sender
|
||||||
const senderStateBalance = await updateStateBalance(
|
await updateStateBalance(senderUser, sendBalance, receivedCallDate, queryRunner)
|
||||||
senderUser,
|
|
||||||
-centAmount,
|
|
||||||
receivedCallDate,
|
|
||||||
queryRunner,
|
|
||||||
)
|
|
||||||
|
|
||||||
// Update Balance: recipient + amount
|
// Update Balance recipient
|
||||||
const recipientStateBalance = await updateStateBalance(
|
await updateStateBalance(recipientUser, receiveBalance, receivedCallDate, queryRunner)
|
||||||
recipientUser,
|
|
||||||
centAmount,
|
|
||||||
receivedCallDate,
|
|
||||||
queryRunner,
|
|
||||||
)
|
|
||||||
|
|
||||||
if (senderStateBalance.amount !== sendBalance) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.log('db data corrupted, sender', senderStateBalance.amount, sendBalance)
|
|
||||||
throw new Error('db data corrupted, sender')
|
|
||||||
}
|
|
||||||
if (recipientStateBalance.amount !== receiveBalance) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.log('db data corrupted, sender', recipientStateBalance.amount, receiveBalance)
|
|
||||||
throw new Error('db data corrupted, recipient')
|
|
||||||
}
|
|
||||||
|
|
||||||
await queryRunner.commitTransaction()
|
await queryRunner.commitTransaction()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user