From d999241536a7f3dda5033d965a3bc482f6826294 Mon Sep 17 00:00:00 2001 From: adisak Date: Tue, 23 Sep 2025 11:54:17 +0700 Subject: [PATCH] sort admin --- .../DevelopmentRequestController.ts | 21 +++++++++++--- .../ProfileDevelopmentController.ts | 14 ++++++++- src/controllers/ProfileEditController.ts | 29 +++++++++++++++---- 3 files changed, 54 insertions(+), 10 deletions(-) diff --git a/src/controllers/DevelopmentRequestController.ts b/src/controllers/DevelopmentRequestController.ts index 752ae293..7c646230 100644 --- a/src/controllers/DevelopmentRequestController.ts +++ b/src/controllers/DevelopmentRequestController.ts @@ -127,6 +127,8 @@ export class DevelopmentRequestController extends Controller { @Query("keyword") keyword: string = "", @Query("page") page: number = 1, @Query("pageSize") pageSize: number = 10, + @Query("sortBy") sortBy?: string, + @Query("descending") descending?: boolean, ) { let data = await new permission().PermissionOrgList(request, "SYS_REGISTRY_OFFICER"); const orgRevisionPublish = await this.orgRevisionRepository @@ -134,7 +136,7 @@ export class DevelopmentRequestController extends Controller { .where("orgRevision.orgRevisionIsDraft = false") .andWhere("orgRevision.orgRevisionIsCurrent = true") .getOne(); - const [lists, total] = await AppDataSource.getRepository(DevelopmentRequest) + let query = await AppDataSource.getRepository(DevelopmentRequest) .createQueryBuilder("developmentRequest") .leftJoinAndSelect("developmentRequest.profile", "profile") .leftJoinAndSelect("profile.current_holders", "current_holders") @@ -249,9 +251,20 @@ export class DevelopmentRequestController extends Controller { }), ) .orderBy("developmentRequest.createdAt", "DESC") - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); + + + if (sortBy) { + query = query.orderBy( + `developmentRequest.${sortBy}`, + descending ? "DESC" : "ASC" + ); + } + + const [lists, total] = await query + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); + const _data = lists.map((item) => ({ ...item, profile: null })); return new HttpSuccess({ data: _data, total }); } diff --git a/src/controllers/ProfileDevelopmentController.ts b/src/controllers/ProfileDevelopmentController.ts index 7982fe7d..3a615a5a 100644 --- a/src/controllers/ProfileDevelopmentController.ts +++ b/src/controllers/ProfileDevelopmentController.ts @@ -58,11 +58,13 @@ export class ProfileDevelopmentController extends Controller { @Query("page") page: number = 1, @Query("pageSize") pageSize: number = 10, @Query() searchKeyword: string = "", + @Query("sortBy") sortBy?: string, + @Query("descending") descending?: boolean, ) { let _workflow = await new permission().Workflow(req, profileId, "SYS_REGISTRY_OFFICER"); if (_workflow == false) await new permission().PermissionOrgUserGet(req, "SYS_REGISTRY_OFFICER", profileId); - const [profileDevelopment, total] = await AppDataSource.getRepository(ProfileDevelopment) + let query = await AppDataSource.getRepository(ProfileDevelopment) .createQueryBuilder("profileDevelopment") .where({ profileId: profileId }) .andWhere( @@ -102,9 +104,19 @@ export class ProfileDevelopmentController extends Controller { }), ) .orderBy("profileDevelopment.createdAt", "ASC") + + if (sortBy) { + query = query.orderBy( + `profileDevelopment.${sortBy}`, + descending ? "DESC" : "ASC" + ); + } + + const [profileDevelopment, total] = await query .skip((page - 1) * pageSize) .take(pageSize) .getManyAndCount(); + return new HttpSuccess({ data: profileDevelopment, total }); } diff --git a/src/controllers/ProfileEditController.ts b/src/controllers/ProfileEditController.ts index 9e90d294..c7d66ee0 100644 --- a/src/controllers/ProfileEditController.ts +++ b/src/controllers/ProfileEditController.ts @@ -116,6 +116,8 @@ export class ProfileEditController extends Controller { @Query("pageSize") pageSize: number = 10, @Query("keyword") keyword: string = "", @Query("status") status: string = "", + @Query("sortBy") sortBy?: string, + @Query("descending") descending?: boolean, ) { let data = await new permission().PermissionOrgList(request, "SYS_REGISTRY_OFFICER"); const orgRevisionPublish = await this.orgRevisionRepository @@ -123,7 +125,7 @@ export class ProfileEditController extends Controller { .where("orgRevision.orgRevisionIsDraft = false") .andWhere("orgRevision.orgRevisionIsCurrent = true") .getOne(); - let [getProfileEdit, total] = await AppDataSource.getRepository(ProfileEdit) + let query = await AppDataSource.getRepository(ProfileEdit) .createQueryBuilder("ProfileEdit") .leftJoinAndSelect("ProfileEdit.profile", "profile") .leftJoinAndSelect("profile.current_holders", "current_holders") @@ -214,10 +216,27 @@ export class ProfileEditController extends Controller { ); }), ) - .orderBy("ProfileEdit.createdAt", "DESC") - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); + .orderBy("ProfileEdit.createdAt", "DESC") + + if (sortBy) { + if(sortBy == "fullname"){ + query = query.orderBy( + `profile.firstName`, + descending ? "DESC" : "ASC" + ); + }else{ + query = query.orderBy( + `ProfileEdit.${sortBy}`, + descending ? "DESC" : "ASC" + ); + } + } + + const [getProfileEdit, total] = await query + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); + const _data = getProfileEdit.map((item) => ({ id: item.id, idcard: item.profile.citizenId,