From f2fcdbaaaef8ca97ab1c16644f1836dc7e38bf31 Mon Sep 17 00:00:00 2001 From: Adisak Date: Wed, 1 Oct 2025 13:24:26 +0700 Subject: [PATCH] sort --- src/controllers/SalaryController.ts | 34 ++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/controllers/SalaryController.ts b/src/controllers/SalaryController.ts index 90b72c7..975fc25 100644 --- a/src/controllers/SalaryController.ts +++ b/src/controllers/SalaryController.ts @@ -306,9 +306,11 @@ export class SalaryController extends Controller { @Query("page") page: number = 1, @Query("pageSize") pageSize: number = 10, @Query("keyword") keyword?: string, + @Query("sortBy") sortBy?: string, + @Query("descending") descending?: boolean, ) { await new permission().PermissionList(request, "SYS_SALARY_CHART_OFFICER"); - const [salary, total] = await AppDataSource.getRepository(Salarys) + let query = await AppDataSource.getRepository(Salarys) .createQueryBuilder("salary") .leftJoinAndSelect("salary.posType_", "posType_") .leftJoinAndSelect("salary.posLevel_", "posLevel_") @@ -319,13 +321,35 @@ export class SalaryController extends Controller { .orWhere("posLevel_.posLevelName LIKE :keyword", { keyword: `%${keyword}%` }); }), ) - .orderBy("salary.isActive", "DESC") - .addOrderBy("posType_.posTypeRank", "DESC") - .addOrderBy("posLevel_.posLevelRank", "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{ + query = query.orderBy( + `salary.${sortBy}`, + descending ? "DESC" : "ASC" + ); + } + }else{ + query = query.orderBy("salary.isActive", "DESC") + .addOrderBy("posType_.posTypeRank", "DESC") + .addOrderBy("posLevel_.posLevelRank", "DESC") + } + + const [salary, total] = await query .skip((page - 1) * pageSize) .take(pageSize) .getManyAndCount(); - + const _salary = salary.map((item) => ({ id: item.id, name: item.name,