11import { Injectable } from '@nestjs/common' ;
22import { TopcoderM2MService } from './topcoder-m2m.service' ;
3- import { ENV_CONFIG } from 'src/config' ;
4- import { payment_status } from '@prisma/client' ;
53import { Logger } from 'src/shared/global' ;
64
7- const { TOPCODER_API_BASE_URL } = ENV_CONFIG ;
8-
95export interface WithdrawUpdateData {
106 userId : number ;
117 status : string ;
@@ -18,77 +14,9 @@ export interface AdminPaymentUpdateData {
1814 amount : number ;
1915 releaseDate : string ;
2016}
21-
22- const mapStatus = ( payoutData : WithdrawUpdateData | AdminPaymentUpdateData ) => {
23- return {
24- ...payoutData ,
25- status : {
26- [ payment_status . CANCELLED ] : 'Cancelled' ,
27- [ payment_status . FAILED ] : 'Failed' ,
28- [ payment_status . ON_HOLD ] : 'OnHold' ,
29- [ payment_status . ON_HOLD_ADMIN ] : 'OnHoldAdmin' ,
30- [ payment_status . OWED ] : 'Owed' ,
31- [ payment_status . PAID ] : 'Paid' ,
32- [ payment_status . PROCESSING ] : 'Processing' ,
33- [ payment_status . RETURNED ] : 'Returned' ,
34- } [ payoutData . status ] ,
35- } ;
36- } ;
37-
3817@Injectable ( )
3918export class TopcoderChallengesService {
4019 private readonly logger = new Logger ( TopcoderChallengesService . name ) ;
4120
4221 constructor ( private readonly m2MService : TopcoderM2MService ) { }
43-
44- async updateLegacyPayments (
45- challengeId : string ,
46- payoutData : WithdrawUpdateData | AdminPaymentUpdateData ,
47- ) {
48- const requestData = mapStatus ( payoutData ) ;
49-
50- let m2mToken : string | undefined ;
51- try {
52- m2mToken = await this . m2MService . getToken ( ) ;
53- } catch ( e ) {
54- this . logger . error (
55- 'Failed to fetch m2m token for fetching member details!' ,
56- e . message ?? e ,
57- ) ;
58- }
59- const requestUrl = `${ TOPCODER_API_BASE_URL } /challenges/${ challengeId } /legacy-payment` ;
60-
61- this . logger . debug (
62- `Updating legacy payment for challenge ${ challengeId } with data: ${ JSON . stringify ( requestData , null , 2 ) } ` ,
63- ) ;
64-
65- try {
66- const response = await fetch ( requestUrl , {
67- method : 'PATCH' ,
68- body : JSON . stringify ( requestData ) ,
69- headers : {
70- Authorization : `Bearer ${ m2mToken } ` ,
71- 'Content-Type' : 'application/json' ,
72- } ,
73- } ) ;
74-
75- const jsonResponse : { [ key : string ] : string } = await response . json ( ) ;
76-
77- if ( response . status > 299 ) {
78- throw new Error ( jsonResponse . message ?? JSON . stringify ( jsonResponse ) ) ;
79- }
80-
81- this . logger . debug (
82- `Response from updating legacy payment for challenge ${ challengeId } : ${ JSON . stringify ( jsonResponse , null , 2 ) } ` ,
83- ) ;
84-
85- return jsonResponse ;
86- } catch ( e ) {
87- this . logger . error (
88- `Failed to update legacy payment for challenge ${ challengeId } ! Error: ${ e ?. message ?? e } ` ,
89- e ,
90- ) ;
91- throw e ;
92- }
93- }
9422}
0 commit comments