diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index f0b976d..dbd5be4 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -25,7 +25,7 @@ import { } from "../entities/DevelopmentHistory"; import { PosType } from "../entities/PosType"; import { PosLevel } from "../entities/PosLevel"; - +import Extension from "../interfaces/extension"; @Route("api/v1/development/report") @Tags("Report") @Security("bearerAuth") @@ -63,18 +63,49 @@ export class ReportController extends Controller { * * @summary DEV_0xx - Report รายการประวัติการฝึกอบรม/ดูงานของข้าราชการกรุงเทพมหานครสามัญ #xx * - * @param {string} type type ประเภท report */ - @Get("history-officer/{type}") - async GetReportDevelopemtHistoryOfficer(@Path() type: string) { - const _type = type.trim().toUpperCase(); - const formattedData = { - org: _type, - }; + @Get("history-officer/{year}") + async GetReportDevelopemtHistoryOfficer(@Query("year") year: number) { + const type = "OFFICER"; + const development = await AppDataSource.getRepository(DevelopmentHistory) + .createQueryBuilder("developmentHistory") + .leftJoinAndSelect("developmentHistory.posLevel", "posLevel") + .leftJoinAndSelect("developmentHistory.posType", "posType") + .leftJoinAndSelect("developmentHistory.development", "development") + .andWhere( + year != 0 && year != null && year != undefined ? "development.year = :year" : "1=1", + { year: year }, + ) + .andWhere("developmentHistory.type = :type", { type: type }) + .select([ + "developmentHistory.citizenId", + "developmentHistory.rank", + "developmentHistory.position", + "developmentHistory.posExecutive", + "developmentHistory.developmentId", + "developmentHistory.prefix", + "developmentHistory.firstName", + "developmentHistory.lastName", + "posLevel.posLevelName", + "posType.posTypeName", + "development.projectName", + ]) + .getMany(); + + const formattedData = development.map((item) => ({ + id: item.id, + citizenId: Extension.ToThaiNumber(item.citizenId.toString()), + fullName: item.prefix + item.firstName + " " + item.lastName, + position: item.position, + posType: item.posType ? item.posType.posTypeName : null, + posLevel: item.posLevel ? item.posLevel.posLevelName : null, + posExecutive: item.posExecutive, + projectName: item.development ? item.development.projectName : null, + })); return new HttpSuccess({ - template: "development", - reportName: "development", + template: "developmentHistoryOfficer", + reportName: "developmentHistoryOfficer", data: { data: formattedData, }, @@ -86,18 +117,48 @@ export class ReportController extends Controller { * * @summary DEV_0xx - Report รายการประวัติฝึกอบรม/ดูงานลูกจ้าง #xx * - * @param {string} type type ประเภท report + * @param {number} year year ปี report */ - @Get("history-employee/{type}") - async GetReportDevelopemtHistoryEmployee(@Path() type: string) { - const _type = type.trim().toUpperCase(); - const formattedData = { - org: _type, - }; + @Get("history-employee/{year}") + async GetReportDevelopemtHistoryEmployee(@Query("year") year: number = 2024) { + const type = "EMPLOYEE"; + const development = await AppDataSource.getRepository(DevelopmentHistory) + .createQueryBuilder("developmentHistory") + .leftJoinAndSelect("developmentHistory.employeePosLevel", "employeePosLevel") + .leftJoinAndSelect("developmentHistory.employeePosType", "employeePosType") + .leftJoinAndSelect("developmentHistory.development", "development") + .where("development.year = :year", { year }) + .andWhere("developmentHistory.type = :type", { type: type }) + .select([ + "developmentHistory.citizenId", + "developmentHistory.position", + "developmentHistory.developmentId", + "developmentHistory.prefix", + "developmentHistory.firstName", + "developmentHistory.lastName", + "employeePosLevel.posLevelName", + "employeePosType.posTypeName", + "employeePosType.posTypeShortName", + "development.projectName", + ]) + .getMany(); + + const formattedData = development.map((item) => ({ + id: item.id, + citizenId: Extension.ToThaiNumber(item.citizenId.toString()), + fullName: item.prefix + item.firstName + " " + item.lastName, + position: item.position, + employeePosType: item.employeePosType ? item.employeePosType.posTypeName : null, + employeePosLevel: + item.employeePosType.posTypeShortName + + " " + + Extension.ToThaiNumber(item.employeePosLevel.posLevelName.toString()), + projectName: item.development ? item.development.projectName : null, + })); return new HttpSuccess({ - template: "development", - reportName: "development", + template: "developmentHistoryEmployee", + reportName: "developmentHistoryEmployee", data: { data: formattedData, },