diff --git a/backend/src/graphql/resolver/TransactionLinkResolver.ts b/backend/src/graphql/resolver/TransactionLinkResolver.ts index 32ec5a654..667e168b5 100644 --- a/backend/src/graphql/resolver/TransactionLinkResolver.ts +++ b/backend/src/graphql/resolver/TransactionLinkResolver.ts @@ -1,6 +1,7 @@ import { randomBytes } from 'crypto' import { getConnection } from '@dbTools/typeorm' +import { Community as DbCommunity } from '@entity/Community' import { Contribution as DbContribution } from '@entity/Contribution' import { ContributionLink as DbContributionLink } from '@entity/ContributionLink' import { Transaction as DbTransaction } from '@entity/Transaction' @@ -165,6 +166,7 @@ export class TransactionLinkResolver { @Ctx() context: Context, ): Promise { const clientTimezoneOffset = getClientTimezoneOffset(context) + const homeCom = await DbCommunity.findOneOrFail({ where: { foreign: false } }) const user = getUser(context) if (code.match(/^CL-/)) { @@ -271,6 +273,9 @@ export class TransactionLinkResolver { transaction.typeId = TransactionTypeId.CREATION transaction.memo = contribution.memo transaction.userId = contribution.userId + if (homeCom.communityUuid) { + transaction.userCommunityUuid = homeCom.communityUuid + } transaction.userGradidoID = user.gradidoID transaction.userName = fullName(user.firstName, user.lastName) transaction.previous = lastTransaction ? lastTransaction.id : null @@ -343,6 +348,7 @@ export class TransactionLinkResolver { transactionLink.memo, linkedUser, user, + homeCom, transactionLink, ) await EVENT_TRANSACTION_LINK_REDEEM( diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 2dff4af79..7560ba306 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -3,6 +3,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ import { getConnection, In, IsNull } from '@dbTools/typeorm' +import { Community as dbCommunity } from '@entity/Community' import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction' import { Transaction as dbTransaction } from '@entity/Transaction' import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink' @@ -46,12 +47,13 @@ export const executeTransaction = async ( memo: string, sender: dbUser, recipient: dbUser, + homeCom: dbCommunity, transactionLink?: dbTransactionLink | null, ): Promise => { // acquire lock const releaseLock = await TRANSACTIONS_LOCK.acquire() try { - logger.info('executeTransaction', amount, memo, sender, recipient) + logger.info('executeTransaction', amount, memo, homeCom, sender, recipient) const openSenderPendingTx = await DbPendingTransaction.count({ where: [ @@ -96,9 +98,15 @@ export const executeTransaction = async ( transactionSend.typeId = TransactionTypeId.SEND transactionSend.memo = memo transactionSend.userId = sender.id + if (homeCom.communityUuid) { + transactionSend.userCommunityUuid = homeCom.communityUuid + } transactionSend.userGradidoID = sender.gradidoID transactionSend.userName = fullName(sender.firstName, sender.lastName) transactionSend.linkedUserId = recipient.id + if (homeCom.communityUuid) { + transactionSend.linkedUserCommunityUuid = homeCom.communityUuid + } transactionSend.linkedUserGradidoID = recipient.gradidoID transactionSend.linkedUserName = fullName(recipient.firstName, recipient.lastName) transactionSend.amount = amount.mul(-1) @@ -116,9 +124,15 @@ export const executeTransaction = async ( transactionReceive.typeId = TransactionTypeId.RECEIVE transactionReceive.memo = memo transactionReceive.userId = recipient.id + if (homeCom.communityUuid) { + transactionReceive.userCommunityUuid = homeCom.communityUuid + } transactionReceive.userGradidoID = recipient.gradidoID transactionReceive.userName = fullName(recipient.firstName, recipient.lastName) transactionReceive.linkedUserId = sender.id + if (homeCom.communityUuid) { + transactionReceive.linkedUserCommunityUuid = homeCom.communityUuid + } transactionReceive.linkedUserGradidoID = sender.gradidoID transactionReceive.linkedUserName = fullName(sender.firstName, sender.lastName) transactionReceive.amount = amount @@ -348,12 +362,13 @@ export class TransactionResolver { @Mutation(() => Boolean) async sendCoins( @Args() - { /* recipientCommunityIdentifier, */ recipientIdentifier, amount, memo }: TransactionSendArgs, + { recipientCommunityIdentifier, recipientIdentifier, amount, memo }: TransactionSendArgs, @Ctx() context: Context, ): Promise { logger.info( - `sendCoins(recipientIdentifier=${recipientIdentifier}, amount=${amount}, memo=${memo})`, + `sendCoins(recipientCommunityIdentifier=${recipientCommunityIdentifier}, recipientIdentifier=${recipientIdentifier}, amount=${amount}, memo=${memo})`, ) + const homeCom = await dbCommunity.findOneOrFail({ where: { foreign: false } }) const senderUser = getUser(context) @@ -363,7 +378,7 @@ export class TransactionResolver { throw new LogError('The recipient user was not found', recipientUser) } - await executeTransaction(amount, memo, senderUser, recipientUser) + await executeTransaction(amount, memo, senderUser, recipientUser, homeCom) logger.info('successful executeTransaction', amount, memo, senderUser, recipientUser) return true }