diff --git a/src/subdomains/generic/support/dto/user-data-support.dto.ts b/src/subdomains/generic/support/dto/user-data-support.dto.ts index 69c97f46e3..cc5b5d19a4 100644 --- a/src/subdomains/generic/support/dto/user-data-support.dto.ts +++ b/src/subdomains/generic/support/dto/user-data-support.dto.ts @@ -80,6 +80,13 @@ export class SellSupportInfo { volume: number; } +export class KycFileListEntry { + kycFileId: number; + id: number; + amlAccountType?: string; + verifiedName?: string; +} + export class UserDataSupportInfoDetails { userData: UserData; kycFiles: KycFile[]; diff --git a/src/subdomains/generic/support/support.controller.ts b/src/subdomains/generic/support/support.controller.ts index cf5f0979a2..9f8d49b5d2 100644 --- a/src/subdomains/generic/support/support.controller.ts +++ b/src/subdomains/generic/support/support.controller.ts @@ -17,6 +17,7 @@ import { UserRole } from 'src/shared/auth/user-role.enum'; import { RefundDataDto } from 'src/subdomains/core/history/dto/refund-data.dto'; import { BankRefundDto } from 'src/subdomains/core/history/dto/transaction-refund.dto'; import { + KycFileListEntry, UserDataSupportInfoDetails, UserDataSupportInfoResult, UserDataSupportQuery, @@ -35,6 +36,14 @@ export class SupportController { return this.supportService.searchUserDataByKey(query); } + @Get('kycFileList') + @ApiBearerAuth() + @ApiExcludeEndpoint() + @UseGuards(AuthGuard(), RoleGuard(UserRole.COMPLIANCE), UserActiveGuard()) + async getKycFileList(): Promise { + return this.supportService.getKycFileList(); + } + @Get(':id') @ApiBearerAuth() @ApiExcludeEndpoint() diff --git a/src/subdomains/generic/support/support.service.ts b/src/subdomains/generic/support/support.service.ts index 87938cc2d2..d7957d3886 100644 --- a/src/subdomains/generic/support/support.service.ts +++ b/src/subdomains/generic/support/support.service.ts @@ -39,6 +39,7 @@ import { BankTxSupportInfo, BuySupportInfo, ComplianceSearchType, + KycFileListEntry, KycStepSupportInfo, SellSupportInfo, TransactionSupportInfo, @@ -106,8 +107,21 @@ export class SupportService { }; } + getKycFileList(): Promise { + return this.userDataService.getUserDatasWithKycFile().then((u) => u.map((d) => this.toKycFileListEntry(d))); + } + // --- MAPPING METHODS --- // + private toKycFileListEntry(userData: UserData): KycFileListEntry { + return { + kycFileId: userData.kycFileId, + id: userData.id, + amlAccountType: userData.amlAccountType, + verifiedName: userData.verifiedName, + }; + } + private toKycStepSupportInfo(step: KycStep): KycStepSupportInfo { return { id: step.id, diff --git a/src/subdomains/generic/user/models/user-data/user-data.service.ts b/src/subdomains/generic/user/models/user-data/user-data.service.ts index acdc49e8cb..7d73b134be 100644 --- a/src/subdomains/generic/user/models/user-data/user-data.service.ts +++ b/src/subdomains/generic/user/models/user-data/user-data.service.ts @@ -218,6 +218,15 @@ export class UserDataService { return this.userDataRepo.findBy({ phone }); } + async getUserDatasWithKycFile(): Promise { + return this.userDataRepo + .createQueryBuilder('userData') + .select(['userData.id', 'userData.kycFileId', 'userData.amlAccountType', 'userData.verifiedName']) + .where('userData.kycFileId > 0') + .orderBy('userData.kycFileId', 'ASC') + .getMany(); + } + async getUserDataByKey(key: string, value: any): Promise { return this.userDataRepo .createQueryBuilder('userData')