mirror of
https://github.com/IT4Change/gradido.git
synced 2026-02-06 09:56:05 +00:00
local transactions with homeCom_uuid
This commit is contained in:
parent
b88ff9b3df
commit
8b2bbfdb2b
@ -1,6 +1,7 @@
|
|||||||
import { randomBytes } from 'crypto'
|
import { randomBytes } from 'crypto'
|
||||||
|
|
||||||
import { getConnection } from '@dbTools/typeorm'
|
import { getConnection } from '@dbTools/typeorm'
|
||||||
|
import { Community as DbCommunity } from '@entity/Community'
|
||||||
import { Contribution as DbContribution } from '@entity/Contribution'
|
import { Contribution as DbContribution } from '@entity/Contribution'
|
||||||
import { ContributionLink as DbContributionLink } from '@entity/ContributionLink'
|
import { ContributionLink as DbContributionLink } from '@entity/ContributionLink'
|
||||||
import { Transaction as DbTransaction } from '@entity/Transaction'
|
import { Transaction as DbTransaction } from '@entity/Transaction'
|
||||||
@ -165,6 +166,7 @@ export class TransactionLinkResolver {
|
|||||||
@Ctx() context: Context,
|
@Ctx() context: Context,
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
const clientTimezoneOffset = getClientTimezoneOffset(context)
|
const clientTimezoneOffset = getClientTimezoneOffset(context)
|
||||||
|
const homeCom = await DbCommunity.findOneOrFail({ where: { foreign: false } })
|
||||||
const user = getUser(context)
|
const user = getUser(context)
|
||||||
|
|
||||||
if (code.match(/^CL-/)) {
|
if (code.match(/^CL-/)) {
|
||||||
@ -271,6 +273,9 @@ export class TransactionLinkResolver {
|
|||||||
transaction.typeId = TransactionTypeId.CREATION
|
transaction.typeId = TransactionTypeId.CREATION
|
||||||
transaction.memo = contribution.memo
|
transaction.memo = contribution.memo
|
||||||
transaction.userId = contribution.userId
|
transaction.userId = contribution.userId
|
||||||
|
if (homeCom.communityUuid) {
|
||||||
|
transaction.userCommunityUuid = homeCom.communityUuid
|
||||||
|
}
|
||||||
transaction.userGradidoID = user.gradidoID
|
transaction.userGradidoID = user.gradidoID
|
||||||
transaction.userName = fullName(user.firstName, user.lastName)
|
transaction.userName = fullName(user.firstName, user.lastName)
|
||||||
transaction.previous = lastTransaction ? lastTransaction.id : null
|
transaction.previous = lastTransaction ? lastTransaction.id : null
|
||||||
@ -343,6 +348,7 @@ export class TransactionLinkResolver {
|
|||||||
transactionLink.memo,
|
transactionLink.memo,
|
||||||
linkedUser,
|
linkedUser,
|
||||||
user,
|
user,
|
||||||
|
homeCom,
|
||||||
transactionLink,
|
transactionLink,
|
||||||
)
|
)
|
||||||
await EVENT_TRANSACTION_LINK_REDEEM(
|
await EVENT_TRANSACTION_LINK_REDEEM(
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
||||||
|
|
||||||
import { getConnection, In, IsNull } from '@dbTools/typeorm'
|
import { getConnection, In, IsNull } from '@dbTools/typeorm'
|
||||||
|
import { Community as dbCommunity } from '@entity/Community'
|
||||||
import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction'
|
import { PendingTransaction as DbPendingTransaction } from '@entity/PendingTransaction'
|
||||||
import { Transaction as dbTransaction } from '@entity/Transaction'
|
import { Transaction as dbTransaction } from '@entity/Transaction'
|
||||||
import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink'
|
import { TransactionLink as dbTransactionLink } from '@entity/TransactionLink'
|
||||||
@ -46,12 +47,13 @@ export const executeTransaction = async (
|
|||||||
memo: string,
|
memo: string,
|
||||||
sender: dbUser,
|
sender: dbUser,
|
||||||
recipient: dbUser,
|
recipient: dbUser,
|
||||||
|
homeCom: dbCommunity,
|
||||||
transactionLink?: dbTransactionLink | null,
|
transactionLink?: dbTransactionLink | null,
|
||||||
): Promise<boolean> => {
|
): Promise<boolean> => {
|
||||||
// acquire lock
|
// acquire lock
|
||||||
const releaseLock = await TRANSACTIONS_LOCK.acquire()
|
const releaseLock = await TRANSACTIONS_LOCK.acquire()
|
||||||
try {
|
try {
|
||||||
logger.info('executeTransaction', amount, memo, sender, recipient)
|
logger.info('executeTransaction', amount, memo, homeCom, sender, recipient)
|
||||||
|
|
||||||
const openSenderPendingTx = await DbPendingTransaction.count({
|
const openSenderPendingTx = await DbPendingTransaction.count({
|
||||||
where: [
|
where: [
|
||||||
@ -96,9 +98,15 @@ export const executeTransaction = async (
|
|||||||
transactionSend.typeId = TransactionTypeId.SEND
|
transactionSend.typeId = TransactionTypeId.SEND
|
||||||
transactionSend.memo = memo
|
transactionSend.memo = memo
|
||||||
transactionSend.userId = sender.id
|
transactionSend.userId = sender.id
|
||||||
|
if (homeCom.communityUuid) {
|
||||||
|
transactionSend.userCommunityUuid = homeCom.communityUuid
|
||||||
|
}
|
||||||
transactionSend.userGradidoID = sender.gradidoID
|
transactionSend.userGradidoID = sender.gradidoID
|
||||||
transactionSend.userName = fullName(sender.firstName, sender.lastName)
|
transactionSend.userName = fullName(sender.firstName, sender.lastName)
|
||||||
transactionSend.linkedUserId = recipient.id
|
transactionSend.linkedUserId = recipient.id
|
||||||
|
if (homeCom.communityUuid) {
|
||||||
|
transactionSend.linkedUserCommunityUuid = homeCom.communityUuid
|
||||||
|
}
|
||||||
transactionSend.linkedUserGradidoID = recipient.gradidoID
|
transactionSend.linkedUserGradidoID = recipient.gradidoID
|
||||||
transactionSend.linkedUserName = fullName(recipient.firstName, recipient.lastName)
|
transactionSend.linkedUserName = fullName(recipient.firstName, recipient.lastName)
|
||||||
transactionSend.amount = amount.mul(-1)
|
transactionSend.amount = amount.mul(-1)
|
||||||
@ -116,9 +124,15 @@ export const executeTransaction = async (
|
|||||||
transactionReceive.typeId = TransactionTypeId.RECEIVE
|
transactionReceive.typeId = TransactionTypeId.RECEIVE
|
||||||
transactionReceive.memo = memo
|
transactionReceive.memo = memo
|
||||||
transactionReceive.userId = recipient.id
|
transactionReceive.userId = recipient.id
|
||||||
|
if (homeCom.communityUuid) {
|
||||||
|
transactionReceive.userCommunityUuid = homeCom.communityUuid
|
||||||
|
}
|
||||||
transactionReceive.userGradidoID = recipient.gradidoID
|
transactionReceive.userGradidoID = recipient.gradidoID
|
||||||
transactionReceive.userName = fullName(recipient.firstName, recipient.lastName)
|
transactionReceive.userName = fullName(recipient.firstName, recipient.lastName)
|
||||||
transactionReceive.linkedUserId = sender.id
|
transactionReceive.linkedUserId = sender.id
|
||||||
|
if (homeCom.communityUuid) {
|
||||||
|
transactionReceive.linkedUserCommunityUuid = homeCom.communityUuid
|
||||||
|
}
|
||||||
transactionReceive.linkedUserGradidoID = sender.gradidoID
|
transactionReceive.linkedUserGradidoID = sender.gradidoID
|
||||||
transactionReceive.linkedUserName = fullName(sender.firstName, sender.lastName)
|
transactionReceive.linkedUserName = fullName(sender.firstName, sender.lastName)
|
||||||
transactionReceive.amount = amount
|
transactionReceive.amount = amount
|
||||||
@ -348,12 +362,13 @@ export class TransactionResolver {
|
|||||||
@Mutation(() => Boolean)
|
@Mutation(() => Boolean)
|
||||||
async sendCoins(
|
async sendCoins(
|
||||||
@Args()
|
@Args()
|
||||||
{ /* recipientCommunityIdentifier, */ recipientIdentifier, amount, memo }: TransactionSendArgs,
|
{ recipientCommunityIdentifier, recipientIdentifier, amount, memo }: TransactionSendArgs,
|
||||||
@Ctx() context: Context,
|
@Ctx() context: Context,
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
logger.info(
|
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)
|
const senderUser = getUser(context)
|
||||||
|
|
||||||
@ -363,7 +378,7 @@ export class TransactionResolver {
|
|||||||
throw new LogError('The recipient user was not found', recipientUser)
|
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)
|
logger.info('successful executeTransaction', amount, memo, senderUser, recipientUser)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user