From 0172aa9496f5e7941a971d88b7857d4491a372ad Mon Sep 17 00:00:00 2001 From: Adisak Date: Fri, 3 Oct 2025 10:28:51 +0700 Subject: [PATCH 1/2] sort --- src/controllers/ProfileController.ts | 59 ++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 13 deletions(-) diff --git a/src/controllers/ProfileController.ts b/src/controllers/ProfileController.ts index e6f4c1e7..db52598d 100644 --- a/src/controllers/ProfileController.ts +++ b/src/controllers/ProfileController.ts @@ -6220,8 +6220,10 @@ export class ProfileController extends Controller { @Query() nodeId?: string, @Query() isAll?: boolean, @Query() retireType?: string, - @Query() sortBy: string = "current_holders.posMasterNo", + // @Query() sortBy: string = "current_holders.posMasterNo", @Query() sort: "ASC" | "DESC" = "ASC", + @Query("sortBy") sortBy?: string, + @Query("descending") descending?: boolean, ) { let _data = await new permission().PermissionOrgList(request, "SYS_REGISTRY_OFFICER"); let queryLike = @@ -6261,7 +6263,7 @@ export class ProfileController extends Controller { nodeCondition = nodeCondition + nodeAll; // เลือกเฉพาะฟิลด์ที่จำเป็น - const [record, total] = await this.profileRepo + let query = await this.profileRepo .createQueryBuilder("profile") .leftJoin("profile.posLevel", "posLevel") .leftJoin("profile.posType", "posType") @@ -6307,6 +6309,9 @@ export class ProfileController extends Controller { "orgChild4.orgChild4Name", "orgChild4.orgChild4ShortName", "orgChild4.orgChild4Order", + "positions.id", + "posExecutive.id", + "posExecutive.posExecutiveName" ]) // .where(node && nodeId ? "current_holders.orgRevisionId = :orgRevisionId" : "1=1", { // orgRevisionId: @@ -6384,17 +6389,44 @@ export class ProfileController extends Controller { }), ) .addSelect("CASE WHEN current_holders.posMasterNo IS NULL THEN 1 ELSE 0 END", "sort_order") - .orderBy("sort_order", "ASC") - .addOrderBy("orgRoot.orgRootOrder", sort) - .addOrderBy("orgChild1.orgChild1Order", sort) - .addOrderBy("orgChild2.orgChild2Order", sort) - .addOrderBy("orgChild3.orgChild3Order", sort) - .addOrderBy("orgChild4.orgChild4Order", sort) - .addOrderBy("current_holders.posMasterNo", sort) - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); + if (sortBy) { + if(sortBy === "posLevel"){ + query = query.orderBy( + `posLevel.posLevelName`, + descending ? "DESC" : "ASC" + ); + }else if(sortBy === "posType"){ + query = query.orderBy( + `posType.posTypeName`, + descending ? "DESC" : "ASC" + ); + }else if(sortBy === "posExecutive"){ + query = query.orderBy( + `posExecutive.posExecutiveName`, + descending ? "DESC" : "ASC" + ); + }else{ + query = query.orderBy( + `profile.${sortBy}`, + descending ? "DESC" : "ASC" + ); + } + }else{ + query = query.orderBy("sort_order", "ASC") + .addOrderBy("orgRoot.orgRootOrder", sort) + .addOrderBy("orgChild1.orgChild1Order", sort) + .addOrderBy("orgChild2.orgChild2Order", sort) + .addOrderBy("orgChild3.orgChild3Order", sort) + .addOrderBy("orgChild4.orgChild4Order", sort) + .addOrderBy("current_holders.posMasterNo", sort) + } + + const [record, total] = await query + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); + // map ข้อมูลแบบเร็วขึ้น const data = record.map((_data) => { const holder = _data.current_holders?.[0]; @@ -6431,12 +6463,13 @@ export class ProfileController extends Controller { rank: _data.rank, firstName: _data.firstName, lastName: _data.lastName, - citizenId: _data.citizenId, + citizenId: _data.citizenId, posLevel: _data.posLevel?.posLevelName ?? null, posType: _data.posType?.posTypeName ?? null, posLevelId: _data.posLevel?.id ?? null, posTypeId: _data.posType?.id ?? null, position: _data.position, + posExecutive: _data.current_holders[0].positions[0].posExecutive?.posExecutiveName ?? null, posNo: shortName ?? null, rootId: holder?.orgRoot?.id ?? null, root: holder?.orgRoot?.orgRootName ?? null, From f507bd8677577b9180586abb94d1e6b161ddc7b4 Mon Sep 17 00:00:00 2001 From: Adisak Date: Fri, 3 Oct 2025 10:45:28 +0700 Subject: [PATCH 2/2] fix --- src/controllers/ProfileController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/ProfileController.ts b/src/controllers/ProfileController.ts index db52598d..0d1f0432 100644 --- a/src/controllers/ProfileController.ts +++ b/src/controllers/ProfileController.ts @@ -6469,7 +6469,7 @@ export class ProfileController extends Controller { posLevelId: _data.posLevel?.id ?? null, posTypeId: _data.posType?.id ?? null, position: _data.position, - posExecutive: _data.current_holders[0].positions[0].posExecutive?.posExecutiveName ?? null, + posExecutive: _data.current_holders[0]?.positions[0]?.posExecutive?.posExecutiveName ?? null, posNo: shortName ?? null, rootId: holder?.orgRoot?.id ?? null, root: holder?.orgRoot?.orgRootName ?? null,