From e40c9eb001835d375101e8b69a5376255e41380d Mon Sep 17 00:00:00 2001 From: Bright Date: Wed, 6 Aug 2025 11:15:08 +0700 Subject: [PATCH] update issue #1642 --- src/controllers/ProfileController.ts | 41 +++++++------ .../ProfileDevelopmentEmployeeController.ts | 59 +++++++++++++++++-- src/controllers/ProfileEmployeeController.ts | 29 ++++----- 3 files changed, 89 insertions(+), 40 deletions(-) diff --git a/src/controllers/ProfileController.ts b/src/controllers/ProfileController.ts index 7645a375..e75e7878 100644 --- a/src/controllers/ProfileController.ts +++ b/src/controllers/ProfileController.ts @@ -1149,7 +1149,7 @@ export class ProfileController extends Controller { where: { profileId: id, commandCode: In(["5", "6"]), - isEntry: false, + // isEntry: false, }, order: { order: "ASC" }, }); @@ -1317,15 +1317,11 @@ export class ProfileController extends Controller { .createQueryBuilder("profileLeave") .leftJoinAndSelect("profileLeave.leaveType", "leaveType") .select([ - "profileLeave.leaveTypeId", - "profileLeave.dateLeaveStart", - "profileLeave.dateLeaveEnd", - "leaveType.name as name", - "leaveType.code as code", - "profileLeave.status", - "profileLeave.profileId", - "profileLeave.leaveDays", - "profileLeave.reason", + "profileLeave.dateLeaveStart AS dateLeaveStart", + "profileLeave.dateLeaveEnd AS dateLeaveEnd", + "profileLeave.leaveDays AS leaveDays", + "profileLeave.reason AS reason", + "leaveType.name as name" ]) .where("profileLeave.profileId = :profileId", { profileId: id }) .andWhere("leaveType.code IN (:...codes)", { codes: ["LV-008", "LV-009", "LV-010"] }) @@ -1335,13 +1331,12 @@ export class ProfileController extends Controller { const leaves2 = leave2_raw.length > 0 ? leave2_raw.map((item) => ({ - date: item.dateLeaveStart - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) - : item.dateLeaveEnd - ? " - " + Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveEnd)) - : "", + date: item.dateLeaveStart && item.dateLeaveEnd + ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) + " - " + + Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveEnd)) + : "-", type: item.name || "-", - leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays) : "-", + leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays.toString()) : "-", reason: item.reason || "-", })) : [ @@ -1611,7 +1606,7 @@ export class ProfileController extends Controller { where: { profileId: id, commandCode: "7", - isEntry: false, + // isEntry: false, }, order: { order: "ASC" }, }); @@ -1688,6 +1683,17 @@ export class ProfileController extends Controller { (profiles.currentZipCode ? " " + profiles.currentZipCode : ""), ) : ""; + + let portfolio:any + await new CallAPI() + .GetData(req, `/development/portfolio/kk1/${profiles?.keycloak}`) + .then((x) => { + portfolio = x.result; + }) + .catch(() => {}); + if (!portfolio) + portfolio = [{name: "-", year: "-"}] + const data = { fullName: `${profiles?.prefix}${profiles?.firstName} ${profiles?.lastName}`, prefix: profiles?.prefix != null ? profiles.prefix : "", @@ -1841,6 +1847,7 @@ export class ProfileController extends Controller { assessments, profileAbility, otherIncome, + portfolio }; return new HttpSuccess({ diff --git a/src/controllers/ProfileDevelopmentEmployeeController.ts b/src/controllers/ProfileDevelopmentEmployeeController.ts index 5843cee5..f64498c5 100644 --- a/src/controllers/ProfileDevelopmentEmployeeController.ts +++ b/src/controllers/ProfileDevelopmentEmployeeController.ts @@ -10,6 +10,7 @@ import { Route, Security, Tags, + Query } from "tsoa"; import { AppDataSource } from "../database/data-source"; import HttpSuccess from "../interfaces/http-success"; @@ -25,6 +26,7 @@ import { } from "../entities/ProfileDevelopment"; import permission from "../interfaces/permission"; import { DevelopmentProject } from "../entities/DevelopmentProject"; +import { In, Brackets } from "typeorm"; @Route("api/v1/org/profile-employee/development") @Tags("ProfileDevelopment") @Security("bearerAuth") @@ -48,15 +50,60 @@ export class ProfileDevelopmentEmployeeController extends Controller { } @Get("{profileId}") - public async getDevelopment(@Path() profileId: string, @Request() req: RequestWithUser) { + public async getDevelopment( + @Path() profileId: string, + @Request() req: RequestWithUser, + @Query("page") page: number = 1, + @Query("pageSize") pageSize: number = 10, + @Query() searchKeyword: string = "", + ) { let _workflow = await new permission().Workflow(req, profileId, "SYS_REGISTRY_EMP"); if (_workflow == false) await new permission().PermissionOrgUserGet(req, "SYS_REGISTRY_EMP", profileId); - const lists = await this.developmentRepository.find({ - where: { profileEmployeeId: profileId }, - order: { createdAt: "ASC" }, - }); - return new HttpSuccess(lists); + const [profileDevelopment, total] = await AppDataSource.getRepository(ProfileDevelopment) + .createQueryBuilder("profileDevelopment") + .where({ profileEmployeeId: profileId }) + .andWhere( + new Brackets((qb) => { + qb.where( + searchKeyword != undefined && searchKeyword != null && searchKeyword != "" + ? "profileDevelopment.name LIKE :keyword" + : "1=1", + { + keyword: `%${searchKeyword}%`, + }, + ) + .orWhere( + searchKeyword != undefined && searchKeyword != null && searchKeyword != "" + ? "profileDevelopment.developmentTarget LIKE :keyword" + : "1=1", + { + keyword: `%${searchKeyword}%`, + }, + ) + .orWhere( + searchKeyword != undefined && searchKeyword != null && searchKeyword != "" + ? "profileDevelopment.developmentResults LIKE :keyword" + : "1=1", + { + keyword: `%${searchKeyword}%`, + }, + ) + .orWhere( + searchKeyword != undefined && searchKeyword != null && searchKeyword != "" + ? "profileDevelopment.developmentReport LIKE :keyword" + : "1=1", + { + keyword: `%${searchKeyword}%`, + }, + ); + }), + ) + .orderBy("profileDevelopment.createdAt", "ASC") + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); + return new HttpSuccess({ data: profileDevelopment, total }); } @Get("history/{developmentId}") diff --git a/src/controllers/ProfileEmployeeController.ts b/src/controllers/ProfileEmployeeController.ts index 1bf4cadf..647be1f2 100644 --- a/src/controllers/ProfileEmployeeController.ts +++ b/src/controllers/ProfileEmployeeController.ts @@ -1144,7 +1144,7 @@ export class ProfileEmployeeController extends Controller { where: { profileEmployeeId: id, commandCode: In(["5", "6"]), - isEntry: false, + // isEntry: false, }, order: { order: "ASC" }, }); @@ -1310,15 +1310,11 @@ export class ProfileEmployeeController extends Controller { .createQueryBuilder("profileLeave") .leftJoinAndSelect("profileLeave.leaveType", "leaveType") .select([ - "profileLeave.leaveTypeId", - "profileLeave.dateLeaveStart", - "profileLeave.dateLeaveEnd", - "leaveType.name as name", - "leaveType.code as code", - "profileLeave.status", - "profileLeave.profileEmployeeId", - "profileLeave.leaveDays", - "profileLeave.reason", + "profileLeave.dateLeaveStart AS dateLeaveStart", + "profileLeave.dateLeaveEnd AS dateLeaveEnd", + "profileLeave.leaveDays AS leaveDays", + "profileLeave.reason AS reason", + "leaveType.name as name" ]) .where("profileLeave.profileEmployeeId = :profileId", { profileId: id }) .andWhere("leaveType.code IN (:...codes)", { codes: ["LV-008", "LV-009", "LV-010"] }) @@ -1328,13 +1324,12 @@ export class ProfileEmployeeController extends Controller { const leaves2 = leave2_raw.length > 0 ? leave2_raw.map((item) => ({ - date: item.dateLeaveStart - ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) - : item.dateLeaveEnd - ? " - " + Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveEnd)) - : "", + date: item.dateLeaveStart && item.dateLeaveEnd + ? Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveStart)) + " - " + + Extension.ToThaiNumber(Extension.ToThaiFullDate2(item.dateLeaveEnd)) + : "-", type: item.name || "-", - leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays) : "-", + leaveDays: item.leaveDays ? Extension.ToThaiNumber(item.leaveDays.toString()) : "-", reason: item.reason || "-", })) : [ @@ -1601,7 +1596,7 @@ export class ProfileEmployeeController extends Controller { where: { profileEmployeeId: id, commandCode: "7", - isEntry: false, + // isEntry: false, }, order: { order: "ASC" }, });