From 060ac81532cc34b6cf1c606d18db0a35809f6944 Mon Sep 17 00:00:00 2001 From: Adisak Date: Mon, 9 Mar 2026 14:44:38 +0700 Subject: [PATCH] #2345 --- src/controllers/CommandController.ts | 298 ++++++++++-------- src/controllers/EmployeePositionController.ts | 8 + .../EmployeeTempPositionController.ts | 9 + src/controllers/PositionController.ts | 9 + 4 files changed, 201 insertions(+), 123 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index a62ddadc..24a0d17d 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -101,6 +101,7 @@ import { } from "../services/PositionService"; import { PostRetireToExprofile } from "./ExRetirementController"; import { LeaveType } from "../entities/LeaveType"; +import { KeycloakAttributeService } from "../services/KeycloakAttributeService"; @Route("api/v1/org/command") @Tags("Command") @Security("bearerAuth") @@ -157,6 +158,8 @@ export class CommandController extends Controller { private genderRepo = AppDataSource.getRepository(Gender); private avatarRepository = AppDataSource.getRepository(ProfileAvatar); private leaveType = AppDataSource.getRepository(LeaveType); + private keycloakAttributeService = new KeycloakAttributeService(); + /** * API list รายการคำสั่ง * @@ -188,12 +191,12 @@ export class CommandController extends Controller { x.orgRevision?.orgRevisionIsCurrent == true && x.orgRevision?.orgRevisionIsDraft == false, )[0]?.isDirector || false; let _data: any = { - root: null, - child1: null, - child2: null, - child3: null, - child4: null, - }; + root: null, + child1: null, + child2: null, + child3: null, + child4: null, + }; if (!request.user.role.includes("SUPER_ADMIN")) { _data = await new permission().PermissionOrgList(request, "COMMAND"); } @@ -231,7 +234,7 @@ export class CommandController extends Controller { ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` : // : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` - `current_holders.orgChild1Id is null` + `current_holders.orgChild1Id is null` : "1=1", { child1: _data.child1, @@ -309,7 +312,7 @@ export class CommandController extends Controller { status == null || status == undefined || status == "" ? null : status.trim().toLocaleUpperCase() == "NEW" || - status.trim().toLocaleUpperCase() == "DRAFT" + status.trim().toLocaleUpperCase() == "DRAFT" ? ["NEW", "DRAFT"] : [status.trim().toLocaleUpperCase()], }, @@ -810,8 +813,8 @@ export class CommandController extends Controller { .PostData(request, path + "/delete", { refIds: [commandRecive.refId], }) - .then(async (res) => {}) - .catch(() => {}); + .then(async (res) => { }) + .catch(() => { }); const commandId = commandRecive.commandId; await this.commandReciveRepository.delete(commandRecive.id); @@ -854,8 +857,8 @@ export class CommandController extends Controller { .PostData(request, path + "/delete", { refIds: [commandRecive.refId], }) - .then(async (res) => {}) - .catch(() => {}); + .then(async (res) => { }) + .catch(() => { }); const commandId = commandRecive.commandId; await this.commandReciveRepository.delete(commandRecive.id); @@ -898,8 +901,8 @@ export class CommandController extends Controller { .PostData(request, path + "/delete", { refIds: [commandRecive.refId], }) - .then(async (res) => {}) - .catch(() => {}); + .then(async (res) => { }) + .catch(() => { }); const commandId = commandRecive.commandId; await this.commandReciveRepository.delete(commandRecive.id); @@ -1183,8 +1186,8 @@ export class CommandController extends Controller { .PostData(request, path + "/delete", { refIds: command.commandRecives.map((x) => x.refId), }) - .then(async (res) => {}) - .catch(() => {}); + .then(async (res) => { }) + .catch(() => { }); await this.commandReciveRepository.delete({ commandId: command.id }); command.status = "CANCEL"; @@ -1249,8 +1252,8 @@ export class CommandController extends Controller { .PostData(request, path + "/delete", { refIds: command.commandRecives.map((x) => x.refId), }) - .then(async (res) => {}) - .catch(() => {}); + .then(async (res) => { }) + .catch(() => { }); await this.commandSendCCRepository.delete({ commandSendId: In(commandSend.map((x) => x.id)) }); await this.commandReciveRepository.delete({ commandId: command.id }); @@ -1403,11 +1406,11 @@ export class CommandController extends Controller { let profiles = command && command.commandRecives.length > 0 ? command.commandRecives - .filter((x) => x.profileId != null) - .map((x) => ({ - receiverUserId: x.profileId, - notiLink: "", - })) + .filter((x) => x.profileId != null) + .map((x) => ({ + receiverUserId: x.profileId, + notiLink: "", + })) : []; const msgNoti = { @@ -1439,8 +1442,8 @@ export class CommandController extends Controller { refIds: command.commandRecives.filter((x) => x.refId != null).map((x) => x.refId), status: "WAITING", }) - .then(async (res) => {}) - .catch(() => {}); + .then(async (res) => { }) + .catch(() => { }); await this.commandRepository.save(command); } else { const path = commandTypePath(command.commandType.code); @@ -1577,7 +1580,7 @@ export class CommandController extends Controller { ); await this.profileRepository.save(profiles); } - } catch {} + } catch { } type = "EMPLOYEE"; try { @@ -1609,7 +1612,7 @@ export class CommandController extends Controller { ); await this.profileEmployeeRepository.save(profiles); } - } catch {} + } catch { } return new HttpSuccess(); } @@ -1673,7 +1676,7 @@ export class CommandController extends Controller { }), ); } - } catch {} + } catch { } type = "EMPLOYEE"; try { @@ -1728,7 +1731,7 @@ export class CommandController extends Controller { }), ); } - } catch {} + } catch { } return new HttpSuccess(); } @@ -1941,7 +1944,7 @@ export class CommandController extends Controller { .then((x) => { res = x; }) - .catch((x) => {}); + .catch((x) => { }); } let _command; @@ -2019,76 +2022,76 @@ export class CommandController extends Controller { profile?.current_holders.length == 0 ? null : profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id) != - null && - profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id) - ?.orgChild4 != null + null && + profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id) + ?.orgChild4 != null ? `${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.orgChild4.orgChild4ShortName} ${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.posMasterNo}` : profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id) != - null && - profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id) - ?.orgChild3 != null + null && + profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id) + ?.orgChild3 != null ? `${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.orgChild3.orgChild3ShortName} ${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.posMasterNo}` : profile?.current_holders.find( - (x) => x.orgRevisionId == orgRevisionActive?.id, - ) != null && - profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id) - ?.orgChild2 != null + (x) => x.orgRevisionId == orgRevisionActive?.id, + ) != null && + profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id) + ?.orgChild2 != null ? `${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.orgChild2.orgChild2ShortName} ${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.posMasterNo}` : profile?.current_holders.find( - (x) => x.orgRevisionId == orgRevisionActive?.id, - ) != null && - profile?.current_holders.find( - (x) => x.orgRevisionId == orgRevisionActive?.id, - )?.orgChild1 != null + (x) => x.orgRevisionId == orgRevisionActive?.id, + ) != null && + profile?.current_holders.find( + (x) => x.orgRevisionId == orgRevisionActive?.id, + )?.orgChild1 != null ? `${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.orgChild1.orgChild1ShortName} ${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.posMasterNo}` : profile?.current_holders.find( - (x) => x.orgRevisionId == orgRevisionActive?.id, - ) != null && - profile?.current_holders.find( - (x) => x.orgRevisionId == orgRevisionActive?.id, - )?.orgRoot != null + (x) => x.orgRevisionId == orgRevisionActive?.id, + ) != null && + profile?.current_holders.find( + (x) => x.orgRevisionId == orgRevisionActive?.id, + )?.orgRoot != null ? `${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.orgRoot.orgRootShortName} ${profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive?.id)?.posMasterNo}` : null; const root = profile?.current_holders == null || - profile?.current_holders.length == 0 || - profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null + profile?.current_holders.length == 0 || + profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null ? null : profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) - ?.orgRoot; + ?.orgRoot; const child1 = profile?.current_holders == null || - profile?.current_holders.length == 0 || - profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null + profile?.current_holders.length == 0 || + profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null ? null : profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) - ?.orgChild1; + ?.orgChild1; const child2 = profile?.current_holders == null || - profile?.current_holders.length == 0 || - profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null + profile?.current_holders.length == 0 || + profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null ? null : profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) - ?.orgChild2; + ?.orgChild2; const child3 = profile?.current_holders == null || - profile?.current_holders.length == 0 || - profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null + profile?.current_holders.length == 0 || + profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null ? null : profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) - ?.orgChild3; + ?.orgChild3; const child4 = profile?.current_holders == null || - profile?.current_holders.length == 0 || - profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null + profile?.current_holders.length == 0 || + profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) == null ? null : profile?.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) - ?.orgChild4; + ?.orgChild4; let _root = root?.orgRootName; let _child1 = child1?.orgChild1Name; @@ -2149,10 +2152,10 @@ export class CommandController extends Controller { commandCode != "C-PM-21" ? profile?.isLeave == false ? (_child4 == null ? "" : _child4 + "\n") + - (_child3 == null ? "" : _child3 + "\n") + - (_child2 == null ? "" : _child2 + "\n") + - (_child1 == null ? "" : _child1 + "\n") + - (_root == null ? "" : _root) + (_child3 == null ? "" : _child3 + "\n") + + (_child2 == null ? "" : _child2 + "\n") + + (_child1 == null ? "" : _child1 + "\n") + + (_root == null ? "" : _root) : orgLeave : profileTemp.org, fullName: `${x.prefix}${x.firstName} ${x.lastName}`, @@ -2167,8 +2170,8 @@ export class CommandController extends Controller { commandCode != "C-PM-21" ? profile?.posType && profile?.posLevel ? Extension.ToThaiNumber( - `${profile?.posType.posTypeShortName} ${profile?.posLevel.posLevelName}`, - ) + `${profile?.posType.posTypeShortName} ${profile?.posLevel.posLevelName}`, + ) : "-" : Extension.ToThaiNumber(profileTemp.posLevel), posNo: @@ -2182,19 +2185,19 @@ export class CommandController extends Controller { ? Extension.ToThaiNumber(Extension.ToThaiShortDate_monthYear(profile?.dateRetire)) : profile?.birthDate && commandCode == "C-PM-21" ? Extension.ToThaiNumber( - Extension.ToThaiShortDate_monthYear( - new Date( - profile.birthDate.getFullYear() + 60, - profile.birthDate.getMonth(), - profile.birthDate.getDate(), - ), + Extension.ToThaiShortDate_monthYear( + new Date( + profile.birthDate.getFullYear() + 60, + profile.birthDate.getMonth(), + profile.birthDate.getDate(), ), - ) + ), + ) : "-", dateExecute: command.commandExcecuteDate ? Extension.ToThaiNumber( - Extension.ToThaiShortDate_monthYear(command.commandExcecuteDate), - ) + Extension.ToThaiShortDate_monthYear(command.commandExcecuteDate), + ) : "-", remark: x.remarkVertical ? x.remarkVertical : "-", }; @@ -2295,7 +2298,7 @@ export class CommandController extends Controller { .then(async (res) => { _command = res; }) - .catch(() => {}); + .catch(() => { }); let issue = command.isBangkok == "OFFICE" @@ -2353,15 +2356,15 @@ export class CommandController extends Controller { operators: operators.length > 0 ? operators.map((x) => ({ - fullName: `${x.prefix ?? ""}${x.firstName ?? ""} ${x.lastName ?? ""}`, - roleName: x.roleName, - })) + fullName: `${x.prefix ?? ""}${x.firstName ?? ""} ${x.lastName ?? ""}`, + roleName: x.roleName, + })) : [ - { - fullName: "", - roleName: "เจ้าหน้าที่ดำเนินการ", - }, - ], + { + fullName: "", + roleName: "เจ้าหน้าที่ดำเนินการ", + }, + ], }, }); } @@ -2666,8 +2669,8 @@ export class CommandController extends Controller { refIds: requestBody.persons.filter((x) => x.refId != null).map((x) => x.refId), status: "REPORT", }) - .then(async (res) => {}) - .catch(() => {}); + .then(async (res) => { }) + .catch(() => { }); let order = command.commandRecives == null || command.commandRecives.length <= 0 ? 0 @@ -3440,27 +3443,27 @@ export class CommandController extends Controller { ? x.orgChild1.orgChild1Name + "\n" + x.orgRoot.orgRootName : x.orgChild3 == null ? x.orgChild2.orgChild2Name + + "\n" + + x.orgChild1.orgChild1Name + + "\n" + + x.orgRoot.orgRootName + : x.orgChild4 == null + ? x.orgChild3.orgChild3Name + + "\n" + + x.orgChild2.orgChild2Name + "\n" + x.orgChild1.orgChild1Name + "\n" + x.orgRoot.orgRootName - : x.orgChild4 == null - ? x.orgChild3.orgChild3Name + - "\n" + - x.orgChild2.orgChild2Name + - "\n" + - x.orgChild1.orgChild1Name + - "\n" + - x.orgRoot.orgRootName : x.orgChild4.orgChild4Name + - "\n" + - x.orgChild3.orgChild3Name + - "\n" + - x.orgChild2.orgChild2Name + - "\n" + - x.orgChild1.orgChild1Name + - "\n" + - x.orgRoot.orgRootName, + "\n" + + x.orgChild3.orgChild3Name + + "\n" + + x.orgChild2.orgChild2Name + + "\n" + + x.orgChild1.orgChild1Name + + "\n" + + x.orgRoot.orgRootName, positionName: x?.current_holder.position ?? _null, profileId: x?.current_holder.id ?? _null, }); @@ -4253,6 +4256,14 @@ export class CommandController extends Controller { profile.isActive = true; } await this.profileRepository.save(profile); + + if (profile.id) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [profile.id], + "PROFILE", + ); + } + // update user attribute in keycloak await updateUserAttributes(profile.keycloak ?? "", { profileId: [profile.id], @@ -4499,6 +4510,14 @@ export class CommandController extends Controller { // profile.posLevelId = _null; } await this.profileEmployeeRepository.save(profile); + + if (profile.id) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [profile.id], + "PROFILE_EMPLOYEE", + ); + } + // Task #2190 if (code && ["C-PM-23", "C-PM-43"].includes(code)) { let organizeName = ""; @@ -4714,6 +4733,13 @@ export class CommandController extends Controller { profile.amount = item.amount ?? _null; profile.amountSpecial = item.amountSpecial ?? _null; await this.profileRepository.save(profile, { data: req }); + + if (profile.id) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [profile.id], + "PROFILE", + ); + } } Object.assign(data, { ...item, ...meta }); const history = new ProfileSalaryHistory(); @@ -5198,6 +5224,12 @@ export class CommandController extends Controller { // _profile.posLevelId = _null; } await this.profileRepository.save(_profile); + if (_profile.id) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [_profile.id], + "PROFILE", + ); + } } } // ลูกจ้าง @@ -5375,6 +5407,12 @@ export class CommandController extends Controller { // _profile.posLevelId = _null; } await this.profileEmployeeRepository.save(_profile); + if (_profile.id) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [_profile.id], + "PROFILE_EMPLOYEE", + ); + } } } // Task #2190 @@ -5706,6 +5744,13 @@ export class CommandController extends Controller { // _profile.posLevelId = _null; } await this.profileEmployeeRepository.save(_profile); + + if (_profile.id) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [_profile.id], + "PROFILE_EMPLOYEE", + ); + } } }), ); @@ -6040,26 +6085,26 @@ export class CommandController extends Controller { !profile.current_holders || profile.current_holders.length == 0 ? null : profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) != null && - profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) - ?.orgChild4 != null + profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) + ?.orgChild4 != null ? `${profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id)?.orgChild4.orgChild4ShortName}` : profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) != null && - profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) - ?.orgChild3 != null + profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) + ?.orgChild3 != null ? `${profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id)?.orgChild3.orgChild3ShortName}` : profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) != null && - profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) - ?.orgChild2 != null + profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) + ?.orgChild2 != null ? `${profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id)?.orgChild2.orgChild2ShortName}` : profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) != - null && - profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) - ?.orgChild1 != null + null && + profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) + ?.orgChild1 != null ? `${profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id)?.orgChild1.orgChild1ShortName}` : profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) != - null && - profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) - ?.orgRoot != null + null && + profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id) + ?.orgRoot != null ? `${profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id)?.orgRoot.orgRootShortName}` : null; const posNo = `${profile.current_holders.find((x) => x.orgRevisionId == orgRevision?.id)?.posMasterNo}`; @@ -6139,6 +6184,14 @@ export class CommandController extends Controller { this.profileRepository.save(_profile), this.salaryRepo.save(profileSalary), ]); + + if (profile.id) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [profile.id], + "PROFILE", + ); + } + const history = new ProfileSalaryHistory(); Object.assign(history, { ...profileSalary, id: undefined }); history.profileSalaryId = profileSalary.id; @@ -6170,7 +6223,6 @@ export class CommandController extends Controller { ); }), ); - return new HttpSuccess(); } @@ -6883,8 +6935,8 @@ export class CommandController extends Controller { prefix: avatar, fileName: fileName, }) - .then(() => {}) - .catch(() => {}); + .then(() => { }) + .catch(() => { }); } } }), @@ -7995,7 +8047,7 @@ export class CommandController extends Controller { .then(async (res) => { _command = res; }) - .catch(() => {}); + .catch(() => { }); let issue = command.isBangkok == "OFFICE" diff --git a/src/controllers/EmployeePositionController.ts b/src/controllers/EmployeePositionController.ts index 39f239c4..7b09973e 100644 --- a/src/controllers/EmployeePositionController.ts +++ b/src/controllers/EmployeePositionController.ts @@ -43,6 +43,7 @@ import { CreatePosMasterHistoryOfficer, } from "../services/PositionService"; import { PosMasterEmployeeHistory } from "../entities/PosMasterEmployeeHistory"; +import { KeycloakAttributeService } from "../services/KeycloakAttributeService"; @Route("api/v1/org/employee/pos") @Tags("Employee") @Security("bearerAuth") @@ -65,6 +66,7 @@ export class EmployeePositionController extends Controller { private child3Repository = AppDataSource.getRepository(OrgChild3); private child4Repository = AppDataSource.getRepository(OrgChild4); private authRoleRepo = AppDataSource.getRepository(AuthRole); + private keycloakAttributeService = new KeycloakAttributeService(); /** * API เพิ่มตำแหน่งลูกจ้างประจำ @@ -2435,6 +2437,12 @@ export class EmployeePositionController extends Controller { // await this.profileRepository.save(profile); // } // } + if (dataMaster.current_holderId) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [dataMaster.current_holderId], + "PROFILE_EMPLOYEE", + ); + } await this.employeePosMasterRepository.update(id, { isSit: false, diff --git a/src/controllers/EmployeeTempPositionController.ts b/src/controllers/EmployeeTempPositionController.ts index d7ffdf62..69dc3b92 100644 --- a/src/controllers/EmployeeTempPositionController.ts +++ b/src/controllers/EmployeeTempPositionController.ts @@ -43,6 +43,7 @@ import permission from "../interfaces/permission"; import { setLogDataDiff } from "../interfaces/utils"; import { CreatePosMasterHistoryEmployeeTemp } from "../services/PositionService"; import { PosMasterEmployeeTempHistory } from "../entities/PosMasterEmployeeTempHistory"; +import { KeycloakAttributeService } from "../services/KeycloakAttributeService"; @Route("api/v1/org/employee-temp/pos") @Tags("Employee") @Security("bearerAuth") @@ -65,6 +66,7 @@ export class EmployeeTempPositionController extends Controller { private child3Repository = AppDataSource.getRepository(OrgChild3); private child4Repository = AppDataSource.getRepository(OrgChild4); private authRoleRepo = AppDataSource.getRepository(AuthRole); + private keycloakAttributeService = new KeycloakAttributeService(); /** * API เพิ่มตำแหน่งลูกจ้างประจำ @@ -2141,6 +2143,13 @@ export class EmployeeTempPositionController extends Controller { // } // } + if (dataMaster.current_holderId) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [dataMaster.current_holderId], + "PROFILE_EMPLOYEE", + ); + } + await this.employeeTempPosMasterRepository.update(id, { isSit: false, next_holderId: null, diff --git a/src/controllers/PositionController.ts b/src/controllers/PositionController.ts index f35c3632..3fff25c4 100644 --- a/src/controllers/PositionController.ts +++ b/src/controllers/PositionController.ts @@ -44,6 +44,7 @@ import { Assign } from "../entities/Assign"; import { ProfileEmployee } from "../entities/ProfileEmployee"; import { PosMasterHistory } from "../entities/PosMasterHistory"; import { CreatePosMasterHistoryOfficer } from "../services/PositionService"; +import { KeycloakAttributeService } from "../services/KeycloakAttributeService"; @Route("api/v1/org/pos") @Tags("Position") @Security("bearerAuth") @@ -73,6 +74,7 @@ export class PositionController extends Controller { private authRoleRepo = AppDataSource.getRepository(AuthRole); private posMasterAssignRepo = AppDataSource.getRepository(PosMasterAssign); private assignRepo = AppDataSource.getRepository(Assign); + private keycloakAttributeService = new KeycloakAttributeService(); /** * API เพิ่มตำแหน่ง @@ -3868,6 +3870,13 @@ export class PositionController extends Controller { await CreatePosMasterHistoryOfficer(dataMaster.id, request, "DELETE"); } + if (dataMaster.current_holderId) { + await this.keycloakAttributeService.clearOrgDnaAttributes( + [dataMaster.current_holderId], + "PROFILE", + ); + } + let _profileId: string = ""; if (dataMaster?.current_holderId) { _profileId = dataMaster?.current_holderId;