From 6fec2d906f60dab821d7e237ad3a39244c11fc48 Mon Sep 17 00:00:00 2001 From: Adisak Date: Thu, 2 Oct 2025 18:07:53 +0700 Subject: [PATCH] update sort --- .../DevelopmentEmployeeHistoryController.ts | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/controllers/DevelopmentEmployeeHistoryController.ts b/src/controllers/DevelopmentEmployeeHistoryController.ts index 007d978..ba3827e 100644 --- a/src/controllers/DevelopmentEmployeeHistoryController.ts +++ b/src/controllers/DevelopmentEmployeeHistoryController.ts @@ -249,11 +249,13 @@ export class DevelopmentEmployeeHistoryController extends Controller { keyword?: string; year?: number; root: string | null; + sortBy?: string; + descending?: boolean; }, ) { await new permission().PermissionList(request, "SYS_DEV_HISTORY_EMP"); const type = "EMPLOYEE"; - const [development, total] = await AppDataSource.getRepository(DevelopmentHistory) + let query = await AppDataSource.getRepository(DevelopmentHistory) .createQueryBuilder("developmentHistory") .leftJoinAndSelect("developmentHistory.development", "development") .leftJoinAndSelect("developmentHistory.employeePosLevel", "employeePosLevel") @@ -326,8 +328,39 @@ export class DevelopmentEmployeeHistoryController extends Controller { ); }), ) - .orderBy("development.year", "DESC") - .addOrderBy("developmentHistory.createdAt", "DESC") + + if (body.sortBy) { + if(body.sortBy === "year" || body.sortBy === "projectName"){ + query = query.orderBy( + `development.${body.sortBy}`, + body.descending ? "DESC" : "ASC" + ); + }else if(body.sortBy === "posType"){ + query = query.orderBy( + `employeePosType.posTypeName`, + body.descending ? "DESC" : "ASC" + ); + }else if(body.sortBy === "posLevel"){ + query = query + .orderBy(`employeePosLevel.posTypeShortName`,body.descending ? "DESC" : "ASC") + .addOrderBy(`employeePosLevel.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();