From f4e2588d0ea119677d9332359f661a4717cd3d14 Mon Sep 17 00:00:00 2001 From: Claus-Peter Huebner Date: Fri, 22 Sep 2023 01:24:19 +0200 Subject: [PATCH] remove check of receiver balance after calculation --- .../src/graphql/api/1_0/resolver/SendCoinsResolver.ts | 11 ++++------- .../api/1_0/util/settlePendingReceiveTransaction.ts | 9 +++------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.ts b/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.ts index f2fe5a88f..12e7eab20 100644 --- a/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.ts +++ b/federation/src/graphql/api/1_0/resolver/SendCoinsResolver.ts @@ -8,13 +8,13 @@ import { LogError } from '@/server/LogError' import { PendingTransactionState } from '../enum/PendingTransactionState' import { TransactionTypeId } from '../enum/TransactionTypeId' import { calculateRecipientBalance } from '../util/calculateRecipientBalance' -import Decimal from 'decimal.js-light' import { fullName } from '@/graphql/util/fullName' import { settlePendingReceiveTransaction } from '../util/settlePendingReceiveTransaction' // import { checkTradingLevel } from '@/graphql/util/checkTradingLevel' import { revertSettledReceiveTransaction } from '../util/revertSettledReceiveTransaction' import { findUserByIdentifier } from '@/graphql/util/findUserByIdentifier' import { SendCoinsResult } from '../model/SendCoinsResult' +import Decimal from 'decimal.js-light' @Resolver() // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -78,15 +78,12 @@ export class SendCoinsResolver { try { const txDate = new Date(args.creationDate) const receiveBalance = await calculateRecipientBalance(receiverUser.id, args.amount, txDate) - if (!receiveBalance) { - throw new LogError('Receiver has not enough GDD or amount is < 0', receiveBalance) - } const pendingTx = DbPendingTransaction.create() pendingTx.amount = args.amount - pendingTx.balance = receiveBalance.balance + pendingTx.balance = receiveBalance ? receiveBalance.balance : args.amount pendingTx.balanceDate = txDate - pendingTx.decay = receiveBalance.decay.decay - pendingTx.decayStart = receiveBalance.decay.start + pendingTx.decay = receiveBalance ? receiveBalance.decay.decay : new Decimal(0) + pendingTx.decayStart = receiveBalance ? receiveBalance.decay.start : null pendingTx.creationDate = new Date() pendingTx.linkedUserCommunityUuid = args.senderCommunityUuid pendingTx.linkedUserGradidoID = args.senderUserUuid diff --git a/federation/src/graphql/api/1_0/util/settlePendingReceiveTransaction.ts b/federation/src/graphql/api/1_0/util/settlePendingReceiveTransaction.ts index 106b2beb1..e0e600be9 100644 --- a/federation/src/graphql/api/1_0/util/settlePendingReceiveTransaction.ts +++ b/federation/src/graphql/api/1_0/util/settlePendingReceiveTransaction.ts @@ -77,13 +77,10 @@ export async function settlePendingReceiveTransaction( pendingTx.amount, pendingTx.balanceDate, ) - if (!receiveBalance) { - throw new LogError(`Receiver has not enough GDD or amount is < 0', sendBalance`) - } - transactionReceive.balance = receiveBalance.balance + transactionReceive.balance = receiveBalance ? receiveBalance.balance : pendingTx.amount transactionReceive.balanceDate = pendingTx.balanceDate - transactionReceive.decay = receiveBalance.decay.decay - transactionReceive.decayStart = receiveBalance.decay.start + transactionReceive.decay = receiveBalance ? receiveBalance.decay.decay : new Decimal(0) + transactionReceive.decayStart = receiveBalance ? receiveBalance.decay.start : null transactionReceive.previous = receiveBalance ? receiveBalance.lastTransactionId : null transactionReceive.linkedTransactionId = pendingTx.linkedTransactionId await queryRunner.manager.insert(dbTransaction, transactionReceive)