update sort

This commit is contained in:
Adisak 2025-10-02 18:07:53 +07:00
parent 57114edac3
commit 6fec2d906f

View file

@ -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();