From f192c4ed0e6ce006b4b47b9be3ecfb19e1381960 Mon Sep 17 00:00:00 2001 From: adisak Date: Tue, 2 Sep 2025 10:13:57 +0700 Subject: [PATCH 01/23] update command test --- src/controllers/CommandController.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index c1e98a6c..b9d79ce3 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3166,12 +3166,6 @@ export class CommandController extends Controller { posMaster.lastUpdatedAt = new Date(); posMaster.conditionReason = _null; posMaster.isCondition = false; - if (posMasterOld != null) { - await this.posMasterRepository.save(posMasterOld); - await CreatePosMasterHistoryOfficer(posMasterOld.id, req); - } - await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { @@ -3189,6 +3183,13 @@ export class CommandController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } + + if (posMasterOld != null) { + await this.posMasterRepository.save(posMasterOld); + await CreatePosMasterHistoryOfficer(posMasterOld.id, req); + } + await this.posMasterRepository.save(posMaster); + await CreatePosMasterHistoryOfficer(posMaster.id, req); }), ); From 4075f5e55fc014d92cbc58c17d2741109ba444e9 Mon Sep 17 00:00:00 2001 From: adisak Date: Tue, 2 Sep 2025 10:36:56 +0700 Subject: [PATCH 02/23] #1781 --- src/controllers/CommandController.ts | 31 ++++++++++--------- src/controllers/EmployeePositionController.ts | 2 +- .../EmployeeTempPositionController.ts | 2 +- src/controllers/PositionController.ts | 5 +-- 4 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index b9d79ce3..d4c92703 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3166,6 +3166,11 @@ export class CommandController extends Controller { posMaster.lastUpdatedAt = new Date(); posMaster.conditionReason = _null; posMaster.isCondition = false; + if (posMasterOld != null) { + await this.posMasterRepository.save(posMasterOld); + await CreatePosMasterHistoryOfficer(posMasterOld.id, req); + } + await this.posMasterRepository.save(posMaster); const positionNew = await this.positionRepository.findOne({ where: { @@ -3183,12 +3188,6 @@ export class CommandController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } - - if (posMasterOld != null) { - await this.posMasterRepository.save(posMasterOld); - await CreatePosMasterHistoryOfficer(posMasterOld.id, req); - } - await this.posMasterRepository.save(posMaster); await CreatePosMasterHistoryOfficer(posMaster.id, req); }), ); @@ -3359,12 +3358,6 @@ export class CommandController extends Controller { posMaster.current_holderId = item.profileId; posMaster.lastUpdatedAt = new Date(); posMaster.next_holderId = null; - if (posMasterOld != null) { - await this.employeePosMasterRepository.save(posMasterOld); - await CreatePosMasterHistoryEmployee(posMasterOld.id, req); - } - await this.employeePosMasterRepository.save(posMaster); - await CreatePosMasterHistoryEmployee(posMaster.id, req); const positionNew = await this.employeePositionRepository.findOne({ where: { @@ -3384,6 +3377,13 @@ export class CommandController extends Controller { await this.profileEmployeeRepository.save(profile); await this.employeePositionRepository.save(positionNew); } + + if (posMasterOld != null) { + await this.employeePosMasterRepository.save(posMasterOld); + await CreatePosMasterHistoryEmployee(posMasterOld.id, req); + } + await this.employeePosMasterRepository.save(posMaster); + await CreatePosMasterHistoryEmployee(posMaster.id, req); }), ); @@ -6057,8 +6057,7 @@ export class CommandController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, req); } await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, req); - + const positionNew = await this.positionRepository.findOne({ where: { id: item.bodyPosition.positionId, @@ -6075,6 +6074,7 @@ export class CommandController extends Controller { setLogDataDiff(req, { before, after: profile }); await this.positionRepository.save(positionNew, { data: req }); } + await CreatePosMasterHistoryOfficer(posMaster.id, req); } // Insignia if (_oldInsigniaIds.length > 0) { @@ -6442,7 +6442,6 @@ export class CommandController extends Controller { await CreatePosMasterHistoryEmployee(posMasterOld.id, req); } await this.employeePosMasterRepository.save(posMaster); - await CreatePosMasterHistoryEmployee(posMaster.id, req); const clsTempPosmaster = await this.employeeTempPosMasterRepository.find({ where: { @@ -6571,6 +6570,8 @@ export class CommandController extends Controller { }); await this.profileEmployeeRepository.save(profile); await this.employeePositionRepository.save(positionNew); + await CreatePosMasterHistoryEmployee(posMaster.id, req); + //ลบออกคนออกจากโครงสร้างลูกจ้างชั่วคราว const posMasterTemp = await this.employeeTempPosMasterRepository.findOne({ where: { diff --git a/src/controllers/EmployeePositionController.ts b/src/controllers/EmployeePositionController.ts index 632261e0..cd6be34f 100644 --- a/src/controllers/EmployeePositionController.ts +++ b/src/controllers/EmployeePositionController.ts @@ -2451,7 +2451,6 @@ export class EmployeePositionController extends Controller { await CreatePosMasterHistoryEmployee(posMasterOld.id, request); } await this.employeePosMasterRepository.save(posMaster); - await CreatePosMasterHistoryEmployee(posMaster.id, request); const positionNew = await this.employeePositionRepository.findOne({ where: { @@ -2472,6 +2471,7 @@ export class EmployeePositionController extends Controller { await this.profileRepository.save(profile); await this.employeePositionRepository.save(positionNew); } + await CreatePosMasterHistoryEmployee(posMaster.id, request); return new HttpSuccess(); } diff --git a/src/controllers/EmployeeTempPositionController.ts b/src/controllers/EmployeeTempPositionController.ts index 5d304de0..4242af81 100644 --- a/src/controllers/EmployeeTempPositionController.ts +++ b/src/controllers/EmployeeTempPositionController.ts @@ -2187,7 +2187,6 @@ export class EmployeeTempPositionController extends Controller { await CreatePosMasterHistoryEmployeeTemp(posMasterOld.id, request); } await this.employeeTempPosMasterRepository.save(posMaster); - await CreatePosMasterHistoryEmployeeTemp(posMaster.id, request); const positionNew = await this.employeePositionRepository.findOne({ where: { @@ -2208,6 +2207,7 @@ export class EmployeeTempPositionController extends Controller { await this.profileRepository.save(profile); await this.employeePositionRepository.save(positionNew); } + await CreatePosMasterHistoryEmployeeTemp(posMaster.id, request); return new HttpSuccess(); } diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 6ffa9708..9bafbbe7 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -4924,8 +4924,7 @@ export class PositionController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, request); } await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, request); - + const positionNew = await this.positionRepository.findOne({ where: { id: body.positionId, @@ -4940,6 +4939,8 @@ export class PositionController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } + await CreatePosMasterHistoryOfficer(posMaster.id, request); + return new HttpSuccess(); } From e7533afb31fc5ae0dc69f53b872da89f75b14da5 Mon Sep 17 00:00:00 2001 From: adisak Date: Tue, 2 Sep 2025 10:40:16 +0700 Subject: [PATCH 03/23] update --- src/controllers/CommandController.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index d4c92703..d5a05800 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3358,7 +3358,11 @@ export class CommandController extends Controller { posMaster.current_holderId = item.profileId; posMaster.lastUpdatedAt = new Date(); posMaster.next_holderId = null; - + if (posMasterOld != null) { + await this.employeePosMasterRepository.save(posMasterOld); + await CreatePosMasterHistoryEmployee(posMasterOld.id, req); + } + await this.employeePosMasterRepository.save(posMaster); const positionNew = await this.employeePositionRepository.findOne({ where: { id: item.positionId, @@ -3377,12 +3381,6 @@ export class CommandController extends Controller { await this.profileEmployeeRepository.save(profile); await this.employeePositionRepository.save(positionNew); } - - if (posMasterOld != null) { - await this.employeePosMasterRepository.save(posMasterOld); - await CreatePosMasterHistoryEmployee(posMasterOld.id, req); - } - await this.employeePosMasterRepository.save(posMaster); await CreatePosMasterHistoryEmployee(posMaster.id, req); }), ); @@ -6571,7 +6569,6 @@ export class CommandController extends Controller { await this.profileEmployeeRepository.save(profile); await this.employeePositionRepository.save(positionNew); await CreatePosMasterHistoryEmployee(posMaster.id, req); - //ลบออกคนออกจากโครงสร้างลูกจ้างชั่วคราว const posMasterTemp = await this.employeeTempPosMasterRepository.findOne({ where: { From 6e4849c046e5208d7f705b2edd990462500fd948 Mon Sep 17 00:00:00 2001 From: adisak Date: Tue, 2 Sep 2025 12:39:50 +0700 Subject: [PATCH 04/23] add dateApp and dateStart --- src/controllers/OrganizationDotnetController.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/controllers/OrganizationDotnetController.ts b/src/controllers/OrganizationDotnetController.ts index 01cec5dd..2c5485b7 100644 --- a/src/controllers/OrganizationDotnetController.ts +++ b/src/controllers/OrganizationDotnetController.ts @@ -5284,6 +5284,8 @@ export class OrganizationDotnetController extends Controller { firstName: item.firstName, lastName: item.lastName, citizenId: item.citizenId, + dateStart: item.dateStart, + dateAppoint: item.dateAppoint, keycloak: item.keycloak, posNo: shortName, position: item.position, From c999b9cec7c2c8d61339f257517003407910a902 Mon Sep 17 00:00:00 2001 From: adisak Date: Tue, 2 Sep 2025 13:22:36 +0700 Subject: [PATCH 05/23] update --- src/controllers/OrganizationDotnetController.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/controllers/OrganizationDotnetController.ts b/src/controllers/OrganizationDotnetController.ts index 2c5485b7..415759af 100644 --- a/src/controllers/OrganizationDotnetController.ts +++ b/src/controllers/OrganizationDotnetController.ts @@ -4724,6 +4724,8 @@ export class OrganizationDotnetController extends Controller { firstName: item.firstName, lastName: item.lastName, citizenId: item.citizenId, + dateStart: item.dateStart, + dateAppoint: item.dateAppoint, keycloak: item.keycloak, posNo: shortName, position: item.position, From 12a6186fc430b6b07af27b2a77ae5719d3f885e6 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Tue, 2 Sep 2025 15:48:40 +0700 Subject: [PATCH 06/23] feat: add api passthough notification to socket --- src/controllers/SocketController.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/controllers/SocketController.ts diff --git a/src/controllers/SocketController.ts b/src/controllers/SocketController.ts new file mode 100644 index 00000000..3b6f455b --- /dev/null +++ b/src/controllers/SocketController.ts @@ -0,0 +1,25 @@ +import { Body, Controller, Post, Route } from "tsoa"; +import { sendWebSocket } from "../services/webSocket"; + +@Route("/api/v1/through-socket") +export class SocketController extends Controller { + @Post("notify") + async notify( + @Body() + payload: { + message: string; + userId?: string | string[]; + roles?: string | string[]; + error?: boolean; + }, + ) { + sendWebSocket( + "socket-notification", + { success: !payload.error, message: payload.message }, + { + roles: payload.roles || [], + userId: payload.userId || [], + }, + ); + } +} From 577a413ffa7bce72e61930626002efbfaa4a8028 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:18:48 +0700 Subject: [PATCH 07/23] fix: endpoint behind api gateway --- src/controllers/SocketController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/SocketController.ts b/src/controllers/SocketController.ts index 3b6f455b..eb0b72c2 100644 --- a/src/controllers/SocketController.ts +++ b/src/controllers/SocketController.ts @@ -1,7 +1,7 @@ import { Body, Controller, Post, Route } from "tsoa"; import { sendWebSocket } from "../services/webSocket"; -@Route("/api/v1/through-socket") +@Route("/api/v1/org/through-socket") export class SocketController extends Controller { @Post("notify") async notify( From f1436d148518626fa9c3ac0f655b6ec7bcd47bca Mon Sep 17 00:00:00 2001 From: mamoss <> Date: Tue, 2 Sep 2025 22:52:11 +0700 Subject: [PATCH 08/23] save profile before add his --- src/controllers/CommandController.ts | 15 +++++----- src/controllers/EmployeePositionController.ts | 2 +- .../EmployeeTempPositionController.ts | 2 +- src/controllers/PositionController.ts | 30 +++++++++---------- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index d5a05800..ca2352c5 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -93,6 +93,7 @@ import { Gender } from "../entities/Gender"; import { ProfileAvatar } from "../entities/ProfileAvatar"; import { CreatePosMasterHistoryEmployee, + CreatePosMasterHistoryEmployeeTemp, CreatePosMasterHistoryOfficer, } from "../services/PositionService"; @Route("api/v1/org/command") @@ -2175,8 +2176,7 @@ export class CommandController extends Controller { command.isDraft = true; command.isSign = true; command.status = "PENDING"; - } - else { + } else { command.status = "NEW"; } command.issue = commandType.name; @@ -3171,6 +3171,7 @@ export class CommandController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, req); } await this.posMasterRepository.save(posMaster); + await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { @@ -3188,7 +3189,6 @@ export class CommandController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } - await CreatePosMasterHistoryOfficer(posMaster.id, req); }), ); @@ -3363,6 +3363,7 @@ export class CommandController extends Controller { await CreatePosMasterHistoryEmployee(posMasterOld.id, req); } await this.employeePosMasterRepository.save(posMaster); + await CreatePosMasterHistoryEmployee(posMaster.id, req); const positionNew = await this.employeePositionRepository.findOne({ where: { id: item.positionId, @@ -3381,7 +3382,6 @@ export class CommandController extends Controller { await this.profileEmployeeRepository.save(profile); await this.employeePositionRepository.save(positionNew); } - await CreatePosMasterHistoryEmployee(posMaster.id, req); }), ); @@ -6055,7 +6055,8 @@ export class CommandController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, req); } await this.posMasterRepository.save(posMaster); - + await CreatePosMasterHistoryOfficer(posMaster.id, req); + const positionNew = await this.positionRepository.findOne({ where: { id: item.bodyPosition.positionId, @@ -6072,7 +6073,6 @@ export class CommandController extends Controller { setLogDataDiff(req, { before, after: profile }); await this.positionRepository.save(positionNew, { data: req }); } - await CreatePosMasterHistoryOfficer(posMaster.id, req); } // Insignia if (_oldInsigniaIds.length > 0) { @@ -6440,6 +6440,7 @@ export class CommandController extends Controller { await CreatePosMasterHistoryEmployee(posMasterOld.id, req); } await this.employeePosMasterRepository.save(posMaster); + await CreatePosMasterHistoryEmployee(posMaster.id, req); const clsTempPosmaster = await this.employeeTempPosMasterRepository.find({ where: { @@ -6568,7 +6569,6 @@ export class CommandController extends Controller { }); await this.profileEmployeeRepository.save(profile); await this.employeePositionRepository.save(positionNew); - await CreatePosMasterHistoryEmployee(posMaster.id, req); //ลบออกคนออกจากโครงสร้างลูกจ้างชั่วคราว const posMasterTemp = await this.employeeTempPosMasterRepository.findOne({ where: { @@ -6580,6 +6580,7 @@ export class CommandController extends Controller { await this.employeeTempPosMasterRepository.update(posMasterTemp.id, { current_holderId: _null, }); + await CreatePosMasterHistoryEmployeeTemp(posMasterTemp.id, req); } } }), diff --git a/src/controllers/EmployeePositionController.ts b/src/controllers/EmployeePositionController.ts index cd6be34f..632261e0 100644 --- a/src/controllers/EmployeePositionController.ts +++ b/src/controllers/EmployeePositionController.ts @@ -2451,6 +2451,7 @@ export class EmployeePositionController extends Controller { await CreatePosMasterHistoryEmployee(posMasterOld.id, request); } await this.employeePosMasterRepository.save(posMaster); + await CreatePosMasterHistoryEmployee(posMaster.id, request); const positionNew = await this.employeePositionRepository.findOne({ where: { @@ -2471,7 +2472,6 @@ export class EmployeePositionController extends Controller { await this.profileRepository.save(profile); await this.employeePositionRepository.save(positionNew); } - await CreatePosMasterHistoryEmployee(posMaster.id, request); return new HttpSuccess(); } diff --git a/src/controllers/EmployeeTempPositionController.ts b/src/controllers/EmployeeTempPositionController.ts index 4242af81..5d304de0 100644 --- a/src/controllers/EmployeeTempPositionController.ts +++ b/src/controllers/EmployeeTempPositionController.ts @@ -2187,6 +2187,7 @@ export class EmployeeTempPositionController extends Controller { await CreatePosMasterHistoryEmployeeTemp(posMasterOld.id, request); } await this.employeeTempPosMasterRepository.save(posMaster); + await CreatePosMasterHistoryEmployeeTemp(posMaster.id, request); const positionNew = await this.employeePositionRepository.findOne({ where: { @@ -2207,7 +2208,6 @@ export class EmployeeTempPositionController extends Controller { await this.profileRepository.save(profile); await this.employeePositionRepository.save(positionNew); } - await CreatePosMasterHistoryEmployeeTemp(posMaster.id, request); return new HttpSuccess(); } diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 9bafbbe7..875f838e 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -4087,17 +4087,17 @@ export class PositionController extends Controller { }); posLevel = await this.posLevelRepository.find({ where: { - posTypeId: In(posType.map((x: any) => x.id)), - posLevelName: In(["ทรงคุณวุฒิ", "สูง"]) - }, + posTypeId: In(posType.map((x: any) => x.id)), + posLevelName: In(["ทรงคุณวุฒิ", "สูง"]), + }, }); - conditionA = "positions.posTypeId IN (:...posTypeIds) AND positions.posLevelId IN (:...posLevelIds)"; + conditionA = + "positions.posTypeId IN (:...posTypeIds) AND positions.posLevelId IN (:...posLevelIds)"; params = { posTypeIds: posType.map((x: any) => x.id), posLevelIds: posLevel.map((x: any) => x.id), }; - } - else { + } else { posType = await this.posTypeRepository.findOne({ where: { id: String(body.posType) }, }); @@ -4195,13 +4195,13 @@ export class PositionController extends Controller { .andWhere( new Brackets((qb) => { qb.andWhere(typeCondition) - // .andWhere(conditionA == null ? "1=1" : conditionA, { - // posType: posType == null ? `%%` : `${posType.id}`, - // posLevel: posLevel == null ? `%%` : `${posLevel.id}`, - // posTypeRank: posType == null ? 0 : posType.posTypeRank, - // posLevelRank: posLevel == null ? 0 : posLevel.posLevelRank, - // }); - .andWhere(conditionA, params); + // .andWhere(conditionA == null ? "1=1" : conditionA, { + // posType: posType == null ? `%%` : `${posType.id}`, + // posLevel: posLevel == null ? `%%` : `${posLevel.id}`, + // posTypeRank: posType == null ? 0 : posType.posTypeRank, + // posLevelRank: posLevel == null ? 0 : posLevel.posLevelRank, + // }); + .andWhere(conditionA, params); }), ) .orderBy("orgRoot.orgRootOrder", "ASC") @@ -4924,7 +4924,8 @@ export class PositionController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, request); } await this.posMasterRepository.save(posMaster); - + await CreatePosMasterHistoryOfficer(posMaster.id, request); + const positionNew = await this.positionRepository.findOne({ where: { id: body.positionId, @@ -4939,7 +4940,6 @@ export class PositionController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } - await CreatePosMasterHistoryOfficer(posMaster.id, request); return new HttpSuccess(); } From 3f61b473146d57ff5b455a4faf12e0ec3b2b5cd7 Mon Sep 17 00:00:00 2001 From: adisak Date: Wed, 3 Sep 2025 11:20:23 +0700 Subject: [PATCH 09/23] update sort test --- src/controllers/DevelopmentRequestController.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/controllers/DevelopmentRequestController.ts b/src/controllers/DevelopmentRequestController.ts index ba4e8458..752ae293 100644 --- a/src/controllers/DevelopmentRequestController.ts +++ b/src/controllers/DevelopmentRequestController.ts @@ -45,13 +45,15 @@ export class DevelopmentRequestController extends Controller { @Query("page") page: number = 1, @Query("pageSize") pageSize: number = 10, @Query("status") status?: string, + @Query("sortBy") sortBy?: string, + @Query("descending") descending?: boolean, ) { const profile = await this.profileRepository.findOneBy({ keycloak: req.user.sub }); if (!profile) { throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว"); } - - const [lists, total] = await AppDataSource.getRepository(DevelopmentRequest) + + let query = await AppDataSource.getRepository(DevelopmentRequest) .createQueryBuilder("developmentRequest") .andWhere( status == undefined || status.trim().toUpperCase() == "ALL" || status == "" @@ -103,6 +105,15 @@ export class DevelopmentRequestController extends Controller { }), ) .orderBy("developmentRequest.createdAt", "DESC") + + if (sortBy) { + query = query.orderBy( + `developmentRequest.${sortBy}`, + descending ? "DESC" : "ASC" + ); + } + + const [lists, total] = await query .skip((page - 1) * pageSize) .take(pageSize) .getManyAndCount(); From 6c8d1586ce0e26d18f5e799ef2c8c659138c9332 Mon Sep 17 00:00:00 2001 From: adisak Date: Wed, 3 Sep 2025 13:52:52 +0700 Subject: [PATCH 10/23] fix test --- src/controllers/PositionController.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 875f838e..8356a773 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -4924,7 +4924,7 @@ export class PositionController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, request); } await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, request); + const positionNew = await this.positionRepository.findOne({ where: { @@ -4940,7 +4940,7 @@ export class PositionController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } - + await CreatePosMasterHistoryOfficer(posMaster.id, request); return new HttpSuccess(); } From 13687b41cb111d37117fae8d7736c6f06ac61306 Mon Sep 17 00:00:00 2001 From: adisak Date: Wed, 3 Sep 2025 14:37:29 +0700 Subject: [PATCH 11/23] test command save history --- src/controllers/CommandController.ts | 6 +++--- src/controllers/PositionController.ts | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index ca2352c5..983b6bb3 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3171,7 +3171,6 @@ export class CommandController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, req); } await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { @@ -3189,6 +3188,7 @@ export class CommandController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } + await CreatePosMasterHistoryOfficer(posMaster.id, req); }), ); @@ -3592,7 +3592,6 @@ export class CommandController extends Controller { posMaster.conditionReason = _null; posMaster.isCondition = false; await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { posMasterId: posMaster.id, @@ -3602,6 +3601,7 @@ export class CommandController extends Controller { positionNew.positionIsSelected = true; await this.positionRepository.save(positionNew, { data: req }); } + await CreatePosMasterHistoryOfficer(posMaster.id, req); } const newMapProfileSalary = { profileId: profile.id, @@ -6055,7 +6055,6 @@ export class CommandController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, req); } await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { @@ -6073,6 +6072,7 @@ export class CommandController extends Controller { setLogDataDiff(req, { before, after: profile }); await this.positionRepository.save(positionNew, { data: req }); } + await CreatePosMasterHistoryOfficer(posMaster.id, req); } // Insignia if (_oldInsigniaIds.length > 0) { diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 8356a773..e63e4f64 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -4924,7 +4924,7 @@ export class PositionController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, request); } await this.posMasterRepository.save(posMaster); - + await CreatePosMasterHistoryOfficer(posMaster.id, request); const positionNew = await this.positionRepository.findOne({ where: { @@ -4940,7 +4940,6 @@ export class PositionController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } - await CreatePosMasterHistoryOfficer(posMaster.id, request); return new HttpSuccess(); } From a1c8874925ba4f2ffeeb771d50a41a2654f25b39 Mon Sep 17 00:00:00 2001 From: adisak Date: Wed, 3 Sep 2025 15:06:03 +0700 Subject: [PATCH 12/23] revert code --- src/controllers/CommandController.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index 983b6bb3..ca2352c5 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3171,6 +3171,7 @@ export class CommandController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, req); } await this.posMasterRepository.save(posMaster); + await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { @@ -3188,7 +3189,6 @@ export class CommandController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } - await CreatePosMasterHistoryOfficer(posMaster.id, req); }), ); @@ -3592,6 +3592,7 @@ export class CommandController extends Controller { posMaster.conditionReason = _null; posMaster.isCondition = false; await this.posMasterRepository.save(posMaster); + await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { posMasterId: posMaster.id, @@ -3601,7 +3602,6 @@ export class CommandController extends Controller { positionNew.positionIsSelected = true; await this.positionRepository.save(positionNew, { data: req }); } - await CreatePosMasterHistoryOfficer(posMaster.id, req); } const newMapProfileSalary = { profileId: profile.id, @@ -6055,6 +6055,7 @@ export class CommandController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, req); } await this.posMasterRepository.save(posMaster); + await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { @@ -6072,7 +6073,6 @@ export class CommandController extends Controller { setLogDataDiff(req, { before, after: profile }); await this.positionRepository.save(positionNew, { data: req }); } - await CreatePosMasterHistoryOfficer(posMaster.id, req); } // Insignia if (_oldInsigniaIds.length > 0) { From 16622b47686b00afa978e2d8fc1beffb223cf7dd Mon Sep 17 00:00:00 2001 From: mamoss <> Date: Wed, 3 Sep 2025 23:50:45 +0700 Subject: [PATCH 13/23] =?UTF-8?q?=E0=B9=80=E0=B8=81=E0=B9=87=E0=B8=9A?= =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B8=A7=E0=B8=B1=E0=B8=95=E0=B8=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/CommandController.ts | 15 +++++++++++---- src/controllers/EmployeePositionController.ts | 10 ++++++---- src/controllers/EmployeeTempPositionController.ts | 7 +++++-- src/controllers/PositionController.ts | 8 ++++++-- 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index ca2352c5..be14db4c 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3171,7 +3171,6 @@ export class CommandController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, req); } await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { @@ -3189,6 +3188,7 @@ export class CommandController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } + await CreatePosMasterHistoryOfficer(posMaster.id, req); }), ); @@ -3363,7 +3363,6 @@ export class CommandController extends Controller { await CreatePosMasterHistoryEmployee(posMasterOld.id, req); } await this.employeePosMasterRepository.save(posMaster); - await CreatePosMasterHistoryEmployee(posMaster.id, req); const positionNew = await this.employeePositionRepository.findOne({ where: { id: item.positionId, @@ -3382,6 +3381,7 @@ export class CommandController extends Controller { await this.profileEmployeeRepository.save(profile); await this.employeePositionRepository.save(positionNew); } + await CreatePosMasterHistoryEmployee(posMaster.id, req); }), ); @@ -3592,7 +3592,6 @@ export class CommandController extends Controller { posMaster.conditionReason = _null; posMaster.isCondition = false; await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { posMasterId: posMaster.id, @@ -3602,6 +3601,7 @@ export class CommandController extends Controller { positionNew.positionIsSelected = true; await this.positionRepository.save(positionNew, { data: req }); } + await CreatePosMasterHistoryOfficer(posMaster.id, req); } const newMapProfileSalary = { profileId: profile.id, @@ -6055,7 +6055,6 @@ export class CommandController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, req); } await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, req); const positionNew = await this.positionRepository.findOne({ where: { @@ -6073,6 +6072,7 @@ export class CommandController extends Controller { setLogDataDiff(req, { before, after: profile }); await this.positionRepository.save(positionNew, { data: req }); } + await CreatePosMasterHistoryOfficer(posMaster.id, req); } // Insignia if (_oldInsigniaIds.length > 0) { @@ -6470,6 +6470,12 @@ export class CommandController extends Controller { })); await this.employeePositionRepository.save(clearTempPosition); } + await Promise.all( + clsTempPosmaster.map( + async (posMasterTemp) => + await CreatePosMasterHistoryEmployeeTemp(posMasterTemp.id, req), + ), + ); } const positionNew = await this.employeePositionRepository.findOne({ @@ -6569,6 +6575,7 @@ export class CommandController extends Controller { }); await this.profileEmployeeRepository.save(profile); await this.employeePositionRepository.save(positionNew); + await CreatePosMasterHistoryEmployee(posMaster.id, req); //ลบออกคนออกจากโครงสร้างลูกจ้างชั่วคราว const posMasterTemp = await this.employeeTempPosMasterRepository.findOne({ where: { diff --git a/src/controllers/EmployeePositionController.ts b/src/controllers/EmployeePositionController.ts index 632261e0..b0091494 100644 --- a/src/controllers/EmployeePositionController.ts +++ b/src/controllers/EmployeePositionController.ts @@ -39,8 +39,8 @@ import { RequestWithUser } from "../middlewares/user"; import permission from "../interfaces/permission"; import { setLogDataDiff } from "../interfaces/utils"; import { - CreatePosMasterHistoryOfficer, CreatePosMasterHistoryEmployee, + CreatePosMasterHistoryOfficer, } from "../services/PositionService"; import { PosMasterEmployeeHistory } from "../entities/PosMasterEmployeeHistory"; @Route("api/v1/org/employee/pos") @@ -2288,7 +2288,7 @@ export class EmployeePositionController extends Controller { await new permission().PermissionDelete(request, "SYS_ORG_EMP"); const dataMaster = await this.employeePosMasterRepository.findOne({ where: { id: id }, - relations: ["positions"], + relations: ["positions", "orgRevision"], }); if (!dataMaster) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้"); @@ -2321,7 +2321,9 @@ export class EmployeePositionController extends Controller { positionIsSelected: false, }); }); - + if (dataMaster.orgRevision.orgRevisionIsCurrent) { + await CreatePosMasterHistoryEmployee(dataMaster.id, request); + } return new HttpSuccess(); } @@ -2451,7 +2453,6 @@ export class EmployeePositionController extends Controller { await CreatePosMasterHistoryEmployee(posMasterOld.id, request); } await this.employeePosMasterRepository.save(posMaster); - await CreatePosMasterHistoryEmployee(posMaster.id, request); const positionNew = await this.employeePositionRepository.findOne({ where: { @@ -2472,6 +2473,7 @@ export class EmployeePositionController extends Controller { await this.profileRepository.save(profile); await this.employeePositionRepository.save(positionNew); } + await CreatePosMasterHistoryEmployee(posMaster.id, request); return new HttpSuccess(); } diff --git a/src/controllers/EmployeeTempPositionController.ts b/src/controllers/EmployeeTempPositionController.ts index 5d304de0..7f526c8d 100644 --- a/src/controllers/EmployeeTempPositionController.ts +++ b/src/controllers/EmployeeTempPositionController.ts @@ -2024,7 +2024,7 @@ export class EmployeeTempPositionController extends Controller { await new permission().PermissionDelete(request, "SYS_ORG_TEMP"); const dataMaster = await this.employeeTempPosMasterRepository.findOne({ where: { id: id }, - relations: ["positions"], + relations: ["positions", "orgRevision"], }); if (!dataMaster) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้"); @@ -2057,6 +2057,9 @@ export class EmployeeTempPositionController extends Controller { positionIsSelected: false, }); }); + if (dataMaster.orgRevision.orgRevisionIsCurrent) { + await CreatePosMasterHistoryEmployeeTemp(dataMaster.id, request); + } return new HttpSuccess(); } @@ -2187,7 +2190,6 @@ export class EmployeeTempPositionController extends Controller { await CreatePosMasterHistoryEmployeeTemp(posMasterOld.id, request); } await this.employeeTempPosMasterRepository.save(posMaster); - await CreatePosMasterHistoryEmployeeTemp(posMaster.id, request); const positionNew = await this.employeePositionRepository.findOne({ where: { @@ -2208,6 +2210,7 @@ export class EmployeeTempPositionController extends Controller { await this.profileRepository.save(profile); await this.employeePositionRepository.save(positionNew); } + await CreatePosMasterHistoryEmployeeTemp(posMaster.id, request); return new HttpSuccess(); } diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index e63e4f64..7ba51726 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -3676,7 +3676,7 @@ export class PositionController extends Controller { await new permission().PermissionDelete(request, "SYS_ORG"); const dataMaster = await this.posMasterRepository.findOne({ where: { id: id }, - relations: ["positions"], + relations: ["positions", "orgRevision"], }); if (!dataMaster) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้"); @@ -3697,6 +3697,9 @@ export class PositionController extends Controller { positionIsSelected: false, }); }); + if (dataMaster.orgRevision.orgRevisionIsCurrent) { + await CreatePosMasterHistoryOfficer(dataMaster.id, request); + } // //เช็คถ้า revision ปัจจุบันให้ปั๊มที่ profile // const chkRevision = await this.orgRevisionRepository.findOne({ // where: { id: dataMaster.orgRevisionId }, @@ -4924,7 +4927,6 @@ export class PositionController extends Controller { await CreatePosMasterHistoryOfficer(posMasterOld.id, request); } await this.posMasterRepository.save(posMaster); - await CreatePosMasterHistoryOfficer(posMaster.id, request); const positionNew = await this.positionRepository.findOne({ where: { @@ -4940,6 +4942,8 @@ export class PositionController extends Controller { await this.profileRepository.save(profile); await this.positionRepository.save(positionNew); } + await CreatePosMasterHistoryOfficer(posMaster.id, request); + return new HttpSuccess(); } From acbd0604f866c4067772e4ad48f5a23b73ec2fc8 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Thu, 4 Sep 2025 09:54:53 +0700 Subject: [PATCH 14/23] fix test --- src/services/PositionService.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/PositionService.ts b/src/services/PositionService.ts index cbf842bb..a2703c36 100644 --- a/src/services/PositionService.ts +++ b/src/services/PositionService.ts @@ -33,14 +33,14 @@ export async function CreatePosMasterHistoryOfficer( }); if (!pm) return false; - if (!pm.ancestorDNA) return false; + // if (!pm.ancestorDNA) return false; // ทำให้สร้างตำแหน่งใหม่โครงสร้างปัจจุบัน(ไม่มีancestorDNA)แล้วไม่ปั๊มประวัติ const _null: any = null; const h = new PosMasterHistory(); const selectedPosition = pm.positions.length > 0 - ? pm.positions.find((p) => p.positionIsSelected === true) ?? null + ? pm.positions.find((p) => p.positionIsSelected === true) ?? null : null; - h.ancestorDNA = pm.ancestorDNA; + h.ancestorDNA = pm.ancestorDNA? pm.ancestorDNA : _null; h.prefix = pm.current_holder?.prefix || _null; h.firstName = pm.current_holder?.firstName || _null; h.lastName = pm.current_holder?.lastName || _null; From 9a40e455c697a23c9c17444814b38f757e0d1013 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Thu, 4 Sep 2025 12:10:53 +0700 Subject: [PATCH 15/23] update save history position --- src/controllers/PositionController.ts | 23 ++++++++++++++++++----- src/services/PositionService.ts | 2 +- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 7ba51726..c6d2306b 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -1169,13 +1169,23 @@ export class PositionController extends Controller { ); } const before = null; + const chkRevision = await this.orgRevisionRepository.findOne({ + where: { id: orgRoot.orgRevisionId }, + }); posMaster.createdUserId = request.user.sub; posMaster.createdFullName = request.user.name; posMaster.lastUpdateUserId = request.user.sub; posMaster.lastUpdateFullName = request.user.name; posMaster.createdAt = new Date(); posMaster.lastUpdatedAt = new Date(); - await this.posMasterRepository.save(posMaster, { data: request }); + const saved = await this.posMasterRepository.save(posMaster, { data: request }); + + // รอบสอง set ancestorDNA = id ที่เพิ่งได้มา + if (chkRevision?.orgRevisionIsCurrent) { + saved.ancestorDNA = saved.id; //โครงสร้างปัจจุบันเอาตัวเองเป็น dna + await this.posMasterRepository.save(saved, { data: request }); + } + setLogDataDiff(request, { before, after: posMaster }); await Promise.all( requestBody.positions.map(async (x: any) => { @@ -3681,6 +3691,11 @@ export class PositionController extends Controller { if (!dataMaster) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้"); } + + if (dataMaster.orgRevision.orgRevisionIsCurrent) { + await CreatePosMasterHistoryOfficer(dataMaster.id, request); + } + let _profileId: string = ""; if (dataMaster?.current_holderId) { _profileId = dataMaster?.current_holderId; @@ -3691,15 +3706,13 @@ export class PositionController extends Controller { current_holderId: null, statusReport: "PENDING", }); - + dataMaster.positions.forEach(async (position) => { await this.positionRepository.update(position.id, { positionIsSelected: false, }); }); - if (dataMaster.orgRevision.orgRevisionIsCurrent) { - await CreatePosMasterHistoryOfficer(dataMaster.id, request); - } + // //เช็คถ้า revision ปัจจุบันให้ปั๊มที่ profile // const chkRevision = await this.orgRevisionRepository.findOne({ // where: { id: dataMaster.orgRevisionId }, diff --git a/src/services/PositionService.ts b/src/services/PositionService.ts index a2703c36..87672292 100644 --- a/src/services/PositionService.ts +++ b/src/services/PositionService.ts @@ -33,7 +33,7 @@ export async function CreatePosMasterHistoryOfficer( }); if (!pm) return false; - // if (!pm.ancestorDNA) return false; // ทำให้สร้างตำแหน่งใหม่โครงสร้างปัจจุบัน(ไม่มีancestorDNA)แล้วไม่ปั๊มประวัติ + if (!pm.ancestorDNA) return false; const _null: any = null; const h = new PosMasterHistory(); const selectedPosition = From e2332d49dfa94137f0ad3d570b48286ca2a35b1b Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Thu, 4 Sep 2025 15:53:19 +0700 Subject: [PATCH 16/23] update save position history --- src/controllers/CommandController.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index be14db4c..cd0785e4 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3601,7 +3601,7 @@ export class CommandController extends Controller { positionNew.positionIsSelected = true; await this.positionRepository.save(positionNew, { data: req }); } - await CreatePosMasterHistoryOfficer(posMaster.id, req); + // await CreatePosMasterHistoryOfficer(posMaster.id, req); } const newMapProfileSalary = { profileId: profile.id, @@ -3706,6 +3706,9 @@ export class CommandController extends Controller { profile.isActive = true; } await this.profileRepository.save(profile); + if (item.posmasterId && clearProfile.LeaveType != "RETIRE_OUT_EMP") { + await CreatePosMasterHistoryOfficer(item.posmasterId, req); + } }), ); From 6de0acd9df324e719f98ff20e5e5ab9f56e48664 Mon Sep 17 00:00:00 2001 From: mamoss <> Date: Thu, 4 Sep 2025 22:17:51 +0700 Subject: [PATCH 17/23] merge --- src/controllers/PositionController.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index c6d2306b..6208fc0d 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -1179,10 +1179,10 @@ export class PositionController extends Controller { posMaster.createdAt = new Date(); posMaster.lastUpdatedAt = new Date(); const saved = await this.posMasterRepository.save(posMaster, { data: request }); - + // รอบสอง set ancestorDNA = id ที่เพิ่งได้มา if (chkRevision?.orgRevisionIsCurrent) { - saved.ancestorDNA = saved.id; //โครงสร้างปัจจุบันเอาตัวเองเป็น dna + saved.ancestorDNA = saved.id; //โครงสร้างปัจจุบันเอาตัวเองเป็น dna await this.posMasterRepository.save(saved, { data: request }); } @@ -3691,7 +3691,7 @@ export class PositionController extends Controller { if (!dataMaster) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลตำแหน่งนี้"); } - + if (dataMaster.orgRevision.orgRevisionIsCurrent) { await CreatePosMasterHistoryOfficer(dataMaster.id, request); } @@ -3706,13 +3706,15 @@ export class PositionController extends Controller { current_holderId: null, statusReport: "PENDING", }); - + dataMaster.positions.forEach(async (position) => { await this.positionRepository.update(position.id, { positionIsSelected: false, }); }); - + if (dataMaster.orgRevision.orgRevisionIsCurrent) { + await CreatePosMasterHistoryOfficer(dataMaster.id, request); + } // //เช็คถ้า revision ปัจจุบันให้ปั๊มที่ profile // const chkRevision = await this.orgRevisionRepository.findOne({ // where: { id: dataMaster.orgRevisionId }, From 2a542e9f5ce919dba68440b24a05006853304731 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Fri, 5 Sep 2025 11:44:17 +0700 Subject: [PATCH 18/23] test --- src/controllers/CommandController.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index cd0785e4..fc9eebde 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3706,6 +3706,8 @@ export class CommandController extends Controller { profile.isActive = true; } await this.profileRepository.save(profile); + console.log("item>>>", item); + console.log("clearProfile.LeaveType >>>", clearProfile.LeaveType ); if (item.posmasterId && clearProfile.LeaveType != "RETIRE_OUT_EMP") { await CreatePosMasterHistoryOfficer(item.posmasterId, req); } From 8f62a41db3307ef4c59bbc32e3b49e539ee86bba Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Fri, 5 Sep 2025 13:06:52 +0700 Subject: [PATCH 19/23] update --- src/controllers/CommandController.ts | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index fc9eebde..701f8462 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3540,10 +3540,29 @@ export class CommandController extends Controller { profile.lastUpdateUserId = req.user.sub; profile.lastUpdateFullName = req.user.name; profile.lastUpdatedAt = new Date(); + const clearProfile = await checkCommandType(String(item.commandId)); + + //ปั๊มประวัติก่อนลบตำแหน่ง + const curRevition = await this.orgRevisionRepo.findOne({ + where: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false } + }) + + if(curRevition){ + const curPosMaster = await this.posMasterRepository.findOne({ + where:{ + current_holderId: profile.id, + orgRevisionId: curRevition.id + } + }) + if (curPosMaster && clearProfile.LeaveType != "RETIRE_OUT_EMP") { + await CreatePosMasterHistoryOfficer(curPosMaster.id, req); + } + } + + //ลบตำแหน่ง if (item.isLeave == true) { await removeProfileInOrganize(profile.id, "OFFICER"); } - const clearProfile = await checkCommandType(String(item.commandId)); if (clearProfile.status) { if (profile.keycloak != null) { const delUserKeycloak = await deleteUser(profile.keycloak); @@ -3601,7 +3620,7 @@ export class CommandController extends Controller { positionNew.positionIsSelected = true; await this.positionRepository.save(positionNew, { data: req }); } - // await CreatePosMasterHistoryOfficer(posMaster.id, req); + await CreatePosMasterHistoryOfficer(posMaster.id, req); } const newMapProfileSalary = { profileId: profile.id, @@ -3706,11 +3725,6 @@ export class CommandController extends Controller { profile.isActive = true; } await this.profileRepository.save(profile); - console.log("item>>>", item); - console.log("clearProfile.LeaveType >>>", clearProfile.LeaveType ); - if (item.posmasterId && clearProfile.LeaveType != "RETIRE_OUT_EMP") { - await CreatePosMasterHistoryOfficer(item.posmasterId, req); - } }), ); From 2f94ee747eac7c17fc43762e4905593ac4413e01 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Fri, 5 Sep 2025 13:08:26 +0700 Subject: [PATCH 20/23] update --- src/controllers/CommandController.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index 701f8462..b5e40dd4 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -3543,15 +3543,15 @@ export class CommandController extends Controller { const clearProfile = await checkCommandType(String(item.commandId)); //ปั๊มประวัติก่อนลบตำแหน่ง - const curRevition = await this.orgRevisionRepo.findOne({ + const curRevision = await this.orgRevisionRepo.findOne({ where: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false } }) - if(curRevition){ + if(curRevision){ const curPosMaster = await this.posMasterRepository.findOne({ where:{ current_holderId: profile.id, - orgRevisionId: curRevition.id + orgRevisionId: curRevision.id } }) if (curPosMaster && clearProfile.LeaveType != "RETIRE_OUT_EMP") { From b222cbae3fe0ba417a20e0dcbea0ff0017fc7565 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Fri, 5 Sep 2025 13:30:13 +0700 Subject: [PATCH 21/23] fix create position --- src/controllers/PositionController.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 6208fc0d..22e5fcda 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -964,34 +964,40 @@ export class PositionController extends Controller { let orgRoot: any = null; let SName: any = null; + let revisionId:any = null; if (requestBody.orgRootId != null) orgRoot = await this.orgRootRepository.findOne({ where: { id: requestBody.orgRootId }, }); + revisionId = orgRoot.orgRevisionId; if (!orgRoot) { let orgChild1: any = null; if (requestBody.orgChild1Id != null) orgChild1 = await this.child1Repository.findOne({ where: { id: requestBody.orgChild1Id }, }); + revisionId = orgChild1.orgRevisionId; if (!orgChild1) { let orgChild2: any = null; if (requestBody.orgChild2Id != null) orgChild2 = await this.child2Repository.findOne({ where: { id: requestBody.orgChild2Id }, }); + revisionId = orgChild2.orgRevisionId; if (!orgChild2) { let orgChild3: any = null; if (requestBody.orgChild3Id != null) orgChild3 = await this.child3Repository.findOne({ where: { id: requestBody.orgChild3Id }, }); + revisionId = orgChild3.orgRevisionId; if (!orgChild3) { let orgChild4: any = null; if (requestBody.orgChild4Id != null) orgChild4 = await this.child4Repository.findOne({ where: { id: requestBody.orgChild4Id }, }); + revisionId = orgChild4.orgRevisionId; if (!orgChild4) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงสร้าง"); } else { @@ -1169,9 +1175,12 @@ export class PositionController extends Controller { ); } const before = null; - const chkRevision = await this.orgRevisionRepository.findOne({ - where: { id: orgRoot.orgRevisionId }, - }); + let chkRevision:any = null; + if(revisionId){ + chkRevision = await this.orgRevisionRepository.findOne({ + where: { id: revisionId }, + }); + } posMaster.createdUserId = request.user.sub; posMaster.createdFullName = request.user.name; posMaster.lastUpdateUserId = request.user.sub; From cb5ebf0047561b6ce0ca5f77dbb0e2bc0c9f2bb9 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Fri, 5 Sep 2025 13:47:55 +0700 Subject: [PATCH 22/23] fix update --- src/controllers/PositionController.ts | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 22e5fcda..46dd813a 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -961,7 +961,6 @@ export class PositionController extends Controller { if (!posMaster) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); } - let orgRoot: any = null; let SName: any = null; let revisionId:any = null; @@ -969,35 +968,35 @@ export class PositionController extends Controller { orgRoot = await this.orgRootRepository.findOne({ where: { id: requestBody.orgRootId }, }); - revisionId = orgRoot.orgRevisionId; + revisionId = orgRoot?.orgRevisionId; if (!orgRoot) { let orgChild1: any = null; if (requestBody.orgChild1Id != null) orgChild1 = await this.child1Repository.findOne({ where: { id: requestBody.orgChild1Id }, }); - revisionId = orgChild1.orgRevisionId; + revisionId = orgChild1?.orgRevisionId; if (!orgChild1) { let orgChild2: any = null; if (requestBody.orgChild2Id != null) orgChild2 = await this.child2Repository.findOne({ where: { id: requestBody.orgChild2Id }, }); - revisionId = orgChild2.orgRevisionId; + revisionId = orgChild2?.orgRevisionId; if (!orgChild2) { let orgChild3: any = null; if (requestBody.orgChild3Id != null) orgChild3 = await this.child3Repository.findOne({ where: { id: requestBody.orgChild3Id }, }); - revisionId = orgChild3.orgRevisionId; + revisionId = orgChild3?.orgRevisionId; if (!orgChild3) { let orgChild4: any = null; if (requestBody.orgChild4Id != null) orgChild4 = await this.child4Repository.findOne({ where: { id: requestBody.orgChild4Id }, }); - revisionId = orgChild4.orgRevisionId; + revisionId = orgChild4?.orgRevisionId; if (!orgChild4) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงสร้าง"); } else { @@ -1095,7 +1094,6 @@ export class PositionController extends Controller { posMaster.orgRevisionId = orgRoot.orgRevisionId; SName = orgRoot.orgRootShortName; } - const chk_SName0 = await this.posMasterRepository.findOne({ where: { orgRevisionId: posMaster.orgRevisionId, @@ -1111,7 +1109,6 @@ export class PositionController extends Controller { "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", ); } - const chk_SName1 = await this.posMasterRepository.findOne({ where: { orgRevisionId: posMaster.orgRevisionId, @@ -1127,7 +1124,6 @@ export class PositionController extends Controller { "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", ); } - const chk_SName2 = await this.posMasterRepository.findOne({ where: { orgRevisionId: posMaster.orgRevisionId, @@ -1143,7 +1139,6 @@ export class PositionController extends Controller { "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", ); } - const chk_SName3 = await this.posMasterRepository.findOne({ where: { orgRevisionId: posMaster.orgRevisionId, @@ -1159,7 +1154,6 @@ export class PositionController extends Controller { "ไม่สามารถใส่เลขที่ตำแหน่งซ้ำกันได้", ); } - const chk_SName4 = await this.posMasterRepository.findOne({ where: { orgRevisionId: posMaster.orgRevisionId, From e7798402ebe3fc2f89419d5111f54fd512b1b71b Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Fri, 5 Sep 2025 15:09:33 +0700 Subject: [PATCH 23/23] fix update --- src/controllers/PositionController.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index 46dd813a..5279876a 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -3715,9 +3715,6 @@ export class PositionController extends Controller { positionIsSelected: false, }); }); - if (dataMaster.orgRevision.orgRevisionIsCurrent) { - await CreatePosMasterHistoryOfficer(dataMaster.id, request); - } // //เช็คถ้า revision ปัจจุบันให้ปั๊มที่ profile // const chkRevision = await this.orgRevisionRepository.findOne({ // where: { id: dataMaster.orgRevisionId },