From 2bc036f251bfc7c03fe7d17b03f6e216f5ef9ffb Mon Sep 17 00:00:00 2001 From: Yannick1712 Date: Tue, 13 Sep 2022 03:37:35 +0200 Subject: [PATCH 1/2] [DEV-697] set new bankTx update Time when merging --- .../buy-crypto/services/buy-crypto.service.ts | 2 ++ .../models/user-data/user-data.service.ts | 35 +++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/payment/models/buy-crypto/services/buy-crypto.service.ts b/src/payment/models/buy-crypto/services/buy-crypto.service.ts index f8d36846a1..3472d4a4c7 100644 --- a/src/payment/models/buy-crypto/services/buy-crypto.service.ts +++ b/src/payment/models/buy-crypto/services/buy-crypto.service.ts @@ -91,12 +91,14 @@ export class BuyCryptoService { if (dto.buyId) { if (!entity.buy) throw new BadRequestException(`Cannot assign BuyCrypto ${id} to a buy route`); update.buy = await this.getBuy(dto.buyId); + if (entity.bankTx) await this.bankTxRepo.setNewUpdateTime(entity.bankTx.id); } // crypto route if (dto.cryptoRouteId) { if (!entity.cryptoRoute) throw new BadRequestException(`Cannot assign BuyCrypto ${id} to a crypto route`); update.cryptoRoute = await this.getCryptoRoute(dto.cryptoRouteId); + if (entity.bankTx) await this.bankTxRepo.setNewUpdateTime(entity.bankTx.id); } Util.removeNullFields(entity); diff --git a/src/user/models/user-data/user-data.service.ts b/src/user/models/user-data/user-data.service.ts index c26e12b629..51e15fe27b 100644 --- a/src/user/models/user-data/user-data.service.ts +++ b/src/user/models/user-data/user-data.service.ts @@ -4,7 +4,7 @@ import { UserDataRepository } from './user-data.repository'; import { KycInProgress, KycState, UserData } from './user-data.entity'; import { BankDataRepository } from 'src/user/models/bank-data/bank-data.repository'; import { CountryService } from 'src/shared/models/country/country.service'; -import { MoreThan, Not } from 'typeorm'; +import { getRepository, MoreThan, Not } from 'typeorm'; import { UpdateUserDto } from '../user/dto/update-user.dto'; import { LanguageService } from 'src/shared/models/language/language.service'; import { FiatService } from 'src/shared/models/fiat/fiat.service'; @@ -15,6 +15,7 @@ import { SpiderApiService } from 'src/user/services/spider/spider-api.service'; import { Util } from 'src/shared/util'; import { Cron, CronExpression } from '@nestjs/schedule'; import { KycProcessService } from '../kyc/kyc-process.service'; +import { BankTx } from 'src/payment/models/bank-tx/bank-tx.entity'; @Injectable() export class UserDataService { @@ -185,7 +186,10 @@ export class UserDataService { async mergeUserData(masterId: number, slaveId: number): Promise { const [master, slave] = await Promise.all([ this.userDataRepo.findOne({ where: { id: masterId }, relations: ['users', 'bankDatas'] }), - this.userDataRepo.findOne({ where: { id: slaveId }, relations: ['users', 'bankDatas'] }), + this.userDataRepo.findOne({ + where: { id: slaveId }, + relations: ['users', 'bankDatas'], + }), ]); console.log( `Merging user ${master.id} (master) and ${slave.id} (slave): reassigning bank datas ${slave.bankDatas @@ -193,6 +197,8 @@ export class UserDataService { .join(', ')} and users ${slave.users.map((u) => u.id).join(', ')}`, ); + await this.setNewUpdateTimeWithUser(slave.id); + // reassign bank datas and users master.bankDatas = master.bankDatas.concat(slave.bankDatas); master.users = master.users.concat(slave.users); @@ -213,4 +219,29 @@ export class UserDataService { return idList; } + + private async setNewUpdateTimeWithUser(userDataId: number): Promise { + const txList = await getRepository(BankTx).find({ + select: ['id'], + where: [ + { buyCrypto: { buy: { user: { userData: { id: userDataId } } } } }, + { buyFiat: { sell: { user: { userData: { id: userDataId } } } } }, + ], + relations: [ + 'buyCrypto', + 'buyCrypto.buy', + 'buyCrypto.buy.user', + 'buyCrypto.buy.user.userData', + 'buyFiat', + 'buyFiat.sell', + 'buyFiat.sell.user', + 'buyFiat.sell.user.userData', + ], + }); + + getRepository(BankTx).update( + txList.map((tx) => tx.id), + { updated: new Date() }, + ); + } } From bafa2cc59c94babe9d2281102da2a0dd15cd76f9 Mon Sep 17 00:00:00 2001 From: Yannick1712 Date: Thu, 15 Sep 2022 10:10:34 +0200 Subject: [PATCH 2/2] [DEV-697] Refactoring --- src/payment/models/buy-crypto/services/buy-crypto.service.ts | 2 +- src/user/models/user-data/user-data.service.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/payment/models/buy-crypto/services/buy-crypto.service.ts b/src/payment/models/buy-crypto/services/buy-crypto.service.ts index 3472d4a4c7..ceda355ec3 100644 --- a/src/payment/models/buy-crypto/services/buy-crypto.service.ts +++ b/src/payment/models/buy-crypto/services/buy-crypto.service.ts @@ -71,7 +71,7 @@ export class BuyCryptoService { async update(id: number, dto: UpdateBuyCryptoDto): Promise { let entity = await this.buyCryptoRepo.findOne(id, { - relations: ['buy', 'buy.user', 'cryptoRoute', 'cryptoRoute.user'], + relations: ['buy', 'buy.user', 'cryptoRoute', 'cryptoRoute.user', 'bankTx'], }); if (!entity) throw new NotFoundException('Buy crypto not found'); diff --git a/src/user/models/user-data/user-data.service.ts b/src/user/models/user-data/user-data.service.ts index 51e15fe27b..ed283e6a09 100644 --- a/src/user/models/user-data/user-data.service.ts +++ b/src/user/models/user-data/user-data.service.ts @@ -197,7 +197,7 @@ export class UserDataService { .join(', ')} and users ${slave.users.map((u) => u.id).join(', ')}`, ); - await this.setNewUpdateTimeWithUser(slave.id); + await this.updateBankTxTime(slave.id); // reassign bank datas and users master.bankDatas = master.bankDatas.concat(slave.bankDatas); @@ -220,7 +220,7 @@ export class UserDataService { return idList; } - private async setNewUpdateTimeWithUser(userDataId: number): Promise { + private async updateBankTxTime(userDataId: number): Promise { const txList = await getRepository(BankTx).find({ select: ['id'], where: [