From 57114edac39264636857704597fa86cf272dc459 Mon Sep 17 00:00:00 2001 From: Adisak Date: Thu, 2 Oct 2025 17:31:37 +0700 Subject: [PATCH] =?UTF-8?q?sort=20=E0=B8=9E=E0=B8=B1=E0=B8=92=E0=B8=99?= =?UTF-8?q?=E0=B8=B2=E0=B8=9A=E0=B8=B8=E0=B8=84=E0=B8=A5=E0=B8=B2=E0=B8=81?= =?UTF-8?q?=E0=B8=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/DevelopmentController.ts | 18 ++++++-- .../DevelopmentHistoryController.ts | 41 +++++++++++++++++-- .../DevelopmentScholarshipController.ts | 41 +++++++++++++++++-- 3 files changed, 91 insertions(+), 9 deletions(-) diff --git a/src/controllers/DevelopmentController.ts b/src/controllers/DevelopmentController.ts index 0642d60..c88ed1d 100644 --- a/src/controllers/DevelopmentController.ts +++ b/src/controllers/DevelopmentController.ts @@ -2022,6 +2022,8 @@ export class DevelopmentController extends Controller { @Query("nodeId") nodeId?: string | null, @Query("node") node?: number | null, @Query("keyword") keyword?: string, + @Query("sortBy") sortBy?: string, + @Query("descending") descending?: boolean, ) { let _data = await new permission().PermissionOrgList(request, "SYS_DEV_PROJECT"); await new CallAPI() @@ -2030,7 +2032,7 @@ export class DevelopmentController extends Controller { _data = x; }) .catch((x) => {}); - const [development, total] = await AppDataSource.getRepository(Development) + let query = await AppDataSource.getRepository(Development) .createQueryBuilder("development") .andWhere(year > 0 ? "development.year LIKE :year" : "1=1", { year: `${year.toString()}`, @@ -2129,8 +2131,18 @@ export class DevelopmentController extends Controller { "development.child3", "development.child4", ]) - .orderBy("development.year", "DESC") - .addOrderBy("development.createdAt", "DESC") + + if (sortBy) { + query = query.orderBy( + `development.${sortBy}`, + descending ? "DESC" : "ASC" + ); + }else{ + query = query.orderBy("development.year", "DESC") + .addOrderBy("development.createdAt", "DESC") + } + + const [development, total] = await query .skip((page - 1) * pageSize) .take(pageSize) .getManyAndCount(); diff --git a/src/controllers/DevelopmentHistoryController.ts b/src/controllers/DevelopmentHistoryController.ts index edb65eb..64c38ec 100644 --- a/src/controllers/DevelopmentHistoryController.ts +++ b/src/controllers/DevelopmentHistoryController.ts @@ -241,11 +241,13 @@ export class DevelopmentOfficerHistoryController extends Controller { keyword?: string; year?: number; root: string | null; + sortBy?: string; + descending?: boolean; }, ) { await new permission().PermissionList(request, "SYS_DEV_HISTORY_OFFICER"); const type = "OFFICER"; - const [development, total] = await AppDataSource.getRepository(DevelopmentHistory) + let query = await AppDataSource.getRepository(DevelopmentHistory) .createQueryBuilder("developmentHistory") .leftJoinAndSelect("developmentHistory.development", "development") .leftJoinAndSelect("developmentHistory.posLevel", "posLevel") @@ -314,11 +316,44 @@ export class DevelopmentOfficerHistoryController extends Controller { ); }), ) - .orderBy("development.year", "DESC") - .addOrderBy("developmentHistory.createdAt", "DESC") + + if (body.sortBy) { + if(body.sortBy === "year" || body.sortBy === "root" || body.sortBy === "projectName"){ + query = query.orderBy( + `development.${body.sortBy}`, + body.descending ? "DESC" : "ASC" + ); + }else if(body.sortBy === "posType"){ + query = query.orderBy( + `posType.posTypeName`, + body.descending ? "DESC" : "ASC" + ); + }else if(body.sortBy === "posLevel"){ + query = query.orderBy( + `posLevel.posLevelName`, + body.descending ? "DESC" : "ASC" + ); + }else if(body.sortBy === "fullName"){ + query = query + .orderBy(`developmentHistory.prefix`,body.descending ? "DESC" : "ASC") + .addOrderBy(`developmentHistory.firstName`,body.descending ? "DESC" : "ASC") + .addOrderBy(`developmentHistory.lastName`,body.descending ? "DESC" : "ASC") + }else{ + query = query.orderBy( + `developmentHistory.${body.sortBy}`, + body.descending ? "DESC" : "ASC" + ); + } + }else{ + query = query.orderBy("development.year", "DESC") + .addOrderBy("developmentHistory.createdAt", "DESC") + } + + const [development, total] = await query .skip((body.page - 1) * body.pageSize) .take(body.pageSize) .getManyAndCount(); + const formattedData = development.map((item) => ({ id: item.id, citizenId: item.citizenId, diff --git a/src/controllers/DevelopmentScholarshipController.ts b/src/controllers/DevelopmentScholarshipController.ts index af23f0a..2fd18d8 100644 --- a/src/controllers/DevelopmentScholarshipController.ts +++ b/src/controllers/DevelopmentScholarshipController.ts @@ -160,6 +160,8 @@ export class DevelopmentScholarshipController extends Controller { @Query("keyword") keyword?: string, @Query("year") year?: number, @Query("scholarshipType") scholarshipType?: string, + @Query("sortBy") sortBy?: string, + @Query("descending") descending?: boolean, ) { let _data = await new permission().PermissionOrgList(request, "SYS_DEV_SCHOLARSHIP"); await new CallAPI() @@ -168,7 +170,7 @@ export class DevelopmentScholarshipController extends Controller { _data = x; }) .catch((x) => {}); - const [development, total] = await AppDataSource.getRepository(DevelopmentScholarship) + let query = await AppDataSource.getRepository(DevelopmentScholarship) .createQueryBuilder("developmentScholarship") .leftJoinAndSelect("developmentScholarship.posLevel", "posLevel") .leftJoinAndSelect("developmentScholarship.posType", "posType") @@ -242,11 +244,44 @@ export class DevelopmentScholarshipController extends Controller { root: _data.root, }, ) - .orderBy("developmentScholarship.scholarshipYear", "DESC") - .addOrderBy("developmentScholarship.createdAt", "DESC") + + if (sortBy) { + if(sortBy === "posType"){ + query = query.orderBy( + `posType.posTypeName`, + descending ? "DESC" : "ASC" + ); + }else if(sortBy === "posLevel"){ + query = query.orderBy( + `posLevel.posLevelName`, + descending ? "DESC" : "ASC" + ); + }else if(sortBy === "year"){ + query = query.orderBy( + `developmentScholarship.scholarshipYear`, + descending ? "DESC" : "ASC" + ); + }else if(sortBy === "fullName"){ + query = query + .orderBy(`developmentScholarship.prefix`,descending ? "DESC" : "ASC") + .addOrderBy(`developmentScholarship.firstName`,descending ? "DESC" : "ASC") + .addOrderBy(`developmentScholarship.lastName`,descending ? "DESC" : "ASC") + }else{ + query = query.orderBy( + `developmentScholarship.${sortBy}`, + descending ? "DESC" : "ASC" + ); + } + }else{ + query = query.orderBy("developmentScholarship.scholarshipYear", "DESC") + .addOrderBy("developmentScholarship.createdAt", "DESC") + } + + const [development, total] = await query .skip((page - 1) * pageSize) .take(pageSize) .getManyAndCount(); + const formattedData = development.map((item) => ({ id: item.id, year: item.scholarshipYear,