@@ -11,7 +11,7 @@ import {
11
11
CREATE_USER_INVALID_EMAIL ,
12
12
CREATE_USER_WEAK_PASSWORD ,
13
13
} from 'src/utils/errors' ;
14
- import { Repository } from 'typeorm' ;
14
+ import { ILike , Repository } from 'typeorm' ;
15
15
import {
16
16
addCrispProfile ,
17
17
deleteCrispProfile ,
@@ -407,46 +407,31 @@ export class UserService {
407
407
fields : Array < string > ,
408
408
limit : number ,
409
409
) : Promise < GetUserDto [ ] | undefined > {
410
- const query = this . userRepository . createQueryBuilder ( 'user' ) ;
411
- // TODO this needs some refactoring but deprioritised for now
412
- if ( relations . partnerAccess ) {
413
- query . leftJoinAndSelect ( 'user.partnerAccess' , 'partnerAccess' ) ;
414
- }
415
-
416
- if ( relations . partnerAdmin ) {
417
- query . leftJoinAndSelect ( 'user.partnerAdmin' , 'partnerAdmin' ) ;
418
- }
419
-
420
- if ( filters ?. partnerAdmin ?. partnerAdminId === 'IS NOT NULL' ) {
421
- query . andWhere ( 'partnerAdmin.partnerAdminId IS NOT NULL' ) ;
422
- }
423
-
424
- if ( filters . partnerAccess ?. userId === 'IS NOT NULL' ) {
425
- query . andWhere ( 'partnerAccess.userId IS NOT NULL' ) ;
426
- }
427
-
428
- if ( filters . partnerAccess ?. featureTherapy ) {
429
- query . andWhere ( 'partnerAccess.featureTherapy = :featureTherapy' , {
430
- featureTherapy : filters . partnerAccess . featureTherapy ,
431
- } ) ;
432
- }
433
-
434
- if ( filters . partnerAccess ?. active ) {
435
- query . andWhere ( 'partnerAccess.active = :active' , {
436
- active : filters . partnerAccess . active ,
437
- } ) ;
438
- }
439
-
440
- if ( filters . email ) {
441
- query . andWhere ( 'user.email ILike :email' , { email : `%${ filters . email } %` } ) ;
442
- }
443
-
444
- if ( limit ) {
445
- query . limit ( limit ) ;
446
- }
410
+ const users = await this . userRepository . find ( {
411
+ relations : relations ,
412
+ where : {
413
+ ...( filters . email && { email : ILike ( filters . email ) } ) ,
414
+ ...( filters . partnerAccess && {
415
+ partnerAccess : {
416
+ ...( filters . partnerAccess . userId && { userId : filters . partnerAccess . userId } ) ,
417
+ ...( typeof filters . partnerAccess . featureTherapy !== 'undefined' && {
418
+ featureTherapy : filters . partnerAccess . featureTherapy ,
419
+ } ) ,
420
+ ...( typeof filters . partnerAccess . active !== 'undefined' && {
421
+ active : filters . partnerAccess . active ,
422
+ } ) ,
423
+ } ,
424
+ } ) ,
425
+ ...( filters . partnerAdmin && {
426
+ partnerAdmin : {
427
+ ...( filters . partnerAdmin && { id : filters . partnerAdmin . partnerAdminId } ) ,
428
+ } ,
429
+ } ) ,
430
+ } ,
431
+ ...( limit && { take : limit } ) ,
432
+ } ) ;
447
433
448
- const queryResult = await query . getMany ( ) ;
449
- const formattedUsers = queryResult . map ( ( user ) => formatGetUsersObject ( user ) ) ;
434
+ const formattedUsers = users . map ( ( user ) => formatGetUsersObject ( user ) ) ;
450
435
return formattedUsers ;
451
436
}
452
437
}
0 commit comments