diff --git a/src/controllers/DevelopmentHistoryController.ts b/src/controllers/DevelopmentHistoryController.ts index 7b48fc1..70cdf5c 100644 --- a/src/controllers/DevelopmentHistoryController.ts +++ b/src/controllers/DevelopmentHistoryController.ts @@ -13,7 +13,7 @@ import { Query, } from "tsoa"; import { AppDataSource } from "../database/data-source"; -import { Not } from "typeorm"; +import { Brackets, Not } from "typeorm"; import HttpSuccess from "../interfaces/http-success"; import HttpError from "../interfaces/http-error"; import HttpStatusCode from "../interfaces/http-status"; @@ -189,10 +189,79 @@ export class DevelopmentOfficerHistoryController extends Controller { const type = "OFFICER"; const [development, total] = await AppDataSource.getRepository(DevelopmentHistory) .createQueryBuilder("developmentHistory") - // .andWhere(year == null ? "developmentHistory.year LIKE :year" : "1=1", { year: `${year}` }) - // .orWhere("developmentHistory.projectName LIKE :keyword", { keyword: `${keyword}` }) - // .select(["development.id", "development.projectName", "development.year"]) - // .orderBy("developmentHistory.year", "DESC") + .leftJoinAndSelect("developmentHistory.development", "development") + .leftJoinAndSelect("developmentHistory.posLevel", "posLevel") + .leftJoinAndSelect("developmentHistory.posType", "posType") + .andWhere("development.year = :year", { year: year }) + .andWhere("developmentHistory.type = :type", { type: type }) + .andWhere( + new Brackets((qb) => { + qb.where( + keyword != null && keyword != "" + ? "developmentHistory.prefix LIKE :keyword" + : "1=1", + { + keyword: `%${keyword}%`, + }, + ) + .orWhere( + keyword != null && keyword != "" + ? "developmentHistory.firstName LIKE :keyword" + : "1=1", + { + keyword: `%${keyword}%`, + }, + ) + .orWhere( + keyword != null && keyword != "" + ? "developmentHistory.lastName LIKE :keyword" + : "1=1", + { + keyword: `%${keyword}%`, + }, + ) + .orWhere( + keyword != null && keyword != "" + ? "developmentHistory.position LIKE :keyword" + : "1=1", + { + keyword: `%${keyword}%`, + }, + ) + .orWhere( + keyword != null && keyword != "" + ? "developmentHistory.position LIKE :keyword" + : "1=1", + { + keyword: `%${keyword}%`, + }, + ) + .orWhere( + keyword != null && keyword != "" + ? "development.projectName LIKE :keyword" + : "1=1", + { + keyword: `%${keyword}%`, + }, + ) + .orWhere( + keyword != null && keyword != "" + ? "posType.posTypeName LIKE :keyword" + : "1=1", + { + keyword: `%${keyword}%`, + }, + ) + .orWhere( + keyword != null && keyword != "" + ? "posLevel.posLevelName LIKE :keyword" + : "1=1", + { + keyword: `%${keyword}%`, + }, + ); + }), + ) .orderBy("developmentHistory.createdAt", "DESC") .skip((page - 1) * pageSize) .take(pageSize) diff --git a/tsoa.json b/tsoa.json index c0d60df..63f028c 100644 --- a/tsoa.json +++ b/tsoa.json @@ -33,7 +33,10 @@ "name": "Development", "description": "ชื่อโครงการ/กิจกรรม/หลักสูตร" }, { - "name": "DevelopmentHistory", "description": "ประวัติการฝึกอบรม/ดูงาน" + "name": "DevelopmentOfficerHistory", "description": "ประวัติการฝึกอบรม/ดูงาน ขรก." + }, + { + "name": "DevelopmentEmployeeHistory", "description": "ประวัติการฝึกอบรม/ดูงานลูกจ้าง." } ] },