Skip to content

Commit e942094

Browse files
committed
PM-1345 - check of id verification on winnings creation & withdrawal
1 parent 1473e1a commit e942094

File tree

4 files changed

+29
-2
lines changed

4 files changed

+29
-2
lines changed

src/api/winnings/winnings.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { WinningsRepository } from '../repository/winnings.repo';
66
import { TaxFormRepository } from '../repository/taxForm.repo';
77
import { PaymentMethodRepository } from '../repository/paymentMethod.repo';
88
import { TopcoderModule } from 'src/shared/topcoder/topcoder.module';
9+
import { IdentityVerificationRepository } from '../repository/identiti-verification.repo';
910

1011
@Module({
1112
imports: [TopcoderModule],
@@ -16,6 +17,7 @@ import { TopcoderModule } from 'src/shared/topcoder/topcoder.module';
1617
TaxFormRepository,
1718
WinningsRepository,
1819
PaymentMethodRepository,
20+
IdentityVerificationRepository,
1921
],
2022
})
2123
export class WinningsModule {}

src/api/winnings/winnings.service.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { BASIC_MEMBER_FIELDS } from 'src/shared/topcoder';
1919
import { ENV_CONFIG } from 'src/config';
2020
import { Logger } from 'src/shared/global';
2121
import { TopcoderEmailService } from 'src/shared/topcoder/tc-email.service';
22+
import { IdentityVerificationRepository } from '../repository/identiti-verification.repo';
2223

2324
/**
2425
* The winning service.
@@ -37,6 +38,7 @@ export class WinningsService {
3738
private readonly paymentMethodRepo: PaymentMethodRepository,
3839
private readonly originRepo: OriginRepository,
3940
private readonly tcMembersService: TopcoderMembersService,
41+
private readonly identityVerificationRepo: IdentityVerificationRepository,
4042
private readonly tcEmailService: TopcoderEmailService,
4143
) {}
4244

@@ -182,6 +184,10 @@ export class WinningsService {
182184
const hasConnectedPaymentMethod = Boolean(
183185
await this.paymentMethodRepo.getConnectedPaymentMethod(body.winnerId),
184186
);
187+
const completedIdentityVerification =
188+
await this.identityVerificationRepo.completedIdentityVerification(
189+
userId,
190+
);
185191

186192
for (const detail of body.details || []) {
187193
const paymentModel = {
@@ -198,7 +204,9 @@ export class WinningsService {
198204

199205
paymentModel.net_amount = Prisma.Decimal(detail.grossAmount);
200206
paymentModel.payment_status =
201-
hasConnectedPaymentMethod && hasActiveTaxForm
207+
hasConnectedPaymentMethod &&
208+
hasActiveTaxForm &&
209+
completedIdentityVerification
202210
? PaymentStatus.OWED
203211
: PaymentStatus.ON_HOLD;
204212

src/api/withdrawal/withdrawal.module.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ import { WithdrawalService } from './withdrawal.service';
55
import { TaxFormRepository } from '../repository/taxForm.repo';
66
import { PaymentMethodRepository } from '../repository/paymentMethod.repo';
77
import { TopcoderModule } from 'src/shared/topcoder/topcoder.module';
8+
import { IdentityVerificationRepository } from '../repository/identiti-verification.repo';
89

910
@Module({
1011
imports: [PaymentsModule, TopcoderModule],
1112
controllers: [WithdrawalController],
12-
providers: [WithdrawalService, TaxFormRepository, PaymentMethodRepository],
13+
providers: [
14+
WithdrawalService,
15+
TaxFormRepository,
16+
PaymentMethodRepository,
17+
IdentityVerificationRepository,
18+
],
1319
})
1420
export class WithdrawalModule {}

src/api/withdrawal/withdrawal.service.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { ENV_CONFIG } from 'src/config';
33
import { PrismaService } from 'src/shared/global/prisma.service';
44
import { TaxFormRepository } from '../repository/taxForm.repo';
55
import { PaymentMethodRepository } from '../repository/paymentMethod.repo';
6+
import { IdentityVerificationRepository } from '../repository/identiti-verification.repo';
67
import { payment_releases, payment_status, Prisma } from '@prisma/client';
78
import { TrolleyService } from 'src/shared/global/trolley.service';
89
import { PaymentsService } from 'src/shared/payments';
@@ -47,6 +48,7 @@ export class WithdrawalService {
4748
private readonly taxFormRepo: TaxFormRepository,
4849
private readonly paymentsService: PaymentsService,
4950
private readonly paymentMethodRepo: PaymentMethodRepository,
51+
private readonly identityVerificationRepo: IdentityVerificationRepository,
5052
private readonly trolleyService: TrolleyService,
5153
private readonly tcChallengesService: TopcoderChallengesService,
5254
private readonly tcMembersService: TopcoderMembersService,
@@ -198,6 +200,15 @@ export class WithdrawalService {
198200
);
199201
}
200202

203+
const completedIdentityVerification =
204+
await this.identityVerificationRepo.completedIdentityVerification(userId);
205+
206+
if (!completedIdentityVerification) {
207+
throw new Error(
208+
'Please compelte identity verification before making a withdrawal.',
209+
);
210+
}
211+
201212
let userInfo: { email: string };
202213
this.logger.debug(`Getting user details for user ${userHandle}(${userId})`);
203214
try {

0 commit comments

Comments
 (0)