@@ -50,29 +50,24 @@ export class AdminWinningService {
50
50
51
51
try {
52
52
let winnerIds : string [ ] | undefined ;
53
+ let externalIds : string [ ] | undefined ;
53
54
if ( body . winnerId ) {
54
55
winnerIds = [ body . winnerId ] ;
55
56
} else if ( body . winnerIds ) {
56
57
winnerIds = [ ...body . winnerIds ] ;
58
+ } else if ( body . externalIds ?. length > 0 ) {
59
+ externalIds = body . externalIds ;
57
60
}
58
61
59
- let query ;
60
- let orderBy ;
61
-
62
- if ( body . externalIds && body . externalIds . length > 0 ) {
63
- query = this . getQueryByExternalIDs ( body ) ;
64
- orderBy = this . getOrderByWithExternalIDs ( body ) ;
65
- } else if ( winnerIds ) {
66
- query = this . getQueryByWinnerId ( body , winnerIds ) ;
67
- orderBy = this . getOrderByWithWinnerId ( body ) ;
68
- } else {
69
- query = this . getQueryByWinnerId ( body , undefined ) ;
70
- orderBy = this . getOrderByWithExternalIDs ( body ) ;
71
- }
62
+ const queryWhere = this . getQueryByWinnerId ( body , winnerIds , externalIds ) ;
63
+ const orderBy = this . getOrderByWithWinnerId (
64
+ body ,
65
+ ! winnerIds && ! ! externalIds ?. length ,
66
+ ) ;
72
67
73
68
const [ winnings , count ] = await this . prisma . $transaction ( [
74
69
this . prisma . winnings . findMany ( {
75
- ...query ,
70
+ ...queryWhere ,
76
71
include : {
77
72
payment : {
78
73
where : {
@@ -90,7 +85,7 @@ export class AdminWinningService {
90
85
skip : body . offset ,
91
86
take : body . limit ,
92
87
} ) ,
93
- this . prisma . winnings . count ( { where : query . where } ) ,
88
+ this . prisma . winnings . count ( { where : queryWhere . where } ) ,
94
89
] ) ;
95
90
96
91
result . data = {
@@ -173,6 +168,7 @@ export class AdminWinningService {
173
168
private getQueryByWinnerId (
174
169
body : WinningRequestDto ,
175
170
winnerIds : string [ ] | undefined ,
171
+ externalIds : string [ ] | undefined ,
176
172
) {
177
173
const filterDate : object | undefined = this . generateFilterDate ( body ) ;
178
174
@@ -183,6 +179,11 @@ export class AdminWinningService {
183
179
in : winnerIds ,
184
180
}
185
181
: undefined ,
182
+ external_id : externalIds
183
+ ? {
184
+ in : body . externalIds ,
185
+ }
186
+ : undefined ,
186
187
category : body . type
187
188
? {
188
189
equals : body . type ,
@@ -213,70 +214,21 @@ export class AdminWinningService {
213
214
return query ;
214
215
}
215
216
216
- private getOrderByWithWinnerId ( body : WinningRequestDto ) {
217
- let orderBy : object = [
217
+ private getOrderByWithWinnerId (
218
+ body : WinningRequestDto ,
219
+ externalIds ?: boolean ,
220
+ ) {
221
+ const orderBy : object = [
218
222
{
219
223
created_at : 'desc' ,
220
224
} ,
221
- {
222
- external_id : 'asc' ,
223
- } ,
225
+ ...( externalIds ? [ { external_id : 'asc' } ] : [ ] ) ,
224
226
] ;
225
- if ( body . sortBy && body . sortOrder ) {
226
- orderBy = [
227
- {
228
- [ body . sortBy ] : body . sortOrder . toString ( ) ,
229
- } ,
230
- {
231
- external_id : 'asc' ,
232
- } ,
233
- ] ;
234
- }
235
-
236
- return orderBy ;
237
- }
238
-
239
- private getQueryByExternalIDs ( body : WinningRequestDto ) {
240
- const filterDate : object | undefined = this . generateFilterDate ( body ) ;
241
-
242
- const query = {
243
- where : {
244
- external_id : {
245
- in : body . externalIds ,
246
- } ,
247
- category : body . type
248
- ? {
249
- equals : body . type ,
250
- }
251
- : undefined ,
252
- created_at : filterDate ,
253
- payment : body . status
254
- ? {
255
- some : {
256
- payment_status : {
257
- equals : body . status ,
258
- } ,
259
- } ,
260
- }
261
- : undefined ,
262
- } ,
263
- } ;
264
-
265
- return query ;
266
- }
267
227
268
- private getOrderByWithExternalIDs ( body : WinningRequestDto ) {
269
- let orderBy : object = [
270
- {
271
- created_at : 'desc' ,
272
- } ,
273
- ] ;
274
228
if ( body . sortBy && body . sortOrder ) {
275
- orderBy = [
276
- {
277
- [ body . sortBy ] : body . sortOrder . toString ( ) ,
278
- } ,
279
- ] ;
229
+ orderBy [ 0 ] = {
230
+ [ body . sortBy ] : body . sortOrder . toString ( ) ,
231
+ } ;
280
232
}
281
233
282
234
return orderBy ;
0 commit comments