From 9aea3cc88ca82dc163c7efa8b71d79b0029a8600 Mon Sep 17 00:00:00 2001 From: harid Date: Fri, 9 Jan 2026 14:25:04 +0700 Subject: [PATCH] test(2) #2160 --- src/controllers/ProfileController.ts | 3 + src/controllers/ProfileEmployeeController.ts | 5 +- src/services/rabbitmq.ts | 128 +++++++++---------- 3 files changed, 69 insertions(+), 67 deletions(-) diff --git a/src/controllers/ProfileController.ts b/src/controllers/ProfileController.ts index dab843ee..2e2148c1 100644 --- a/src/controllers/ProfileController.ts +++ b/src/controllers/ProfileController.ts @@ -10828,15 +10828,18 @@ export class ProfileController extends Controller { queryLike = "profile.citizenId LIKE :keyword"; break; + case "fullname": case "fullName": queryLike = "CONCAT(profile.prefix, profile.firstName, ' ', profile.lastName) LIKE :keyword"; break; + case "firstname": case "firstName": queryLike = "profile.firstName LIKE :keyword"; break; + case "lastname": case "lastName": queryLike = "profile.lastName LIKE :keyword"; break; diff --git a/src/controllers/ProfileEmployeeController.ts b/src/controllers/ProfileEmployeeController.ts index d52bae77..8ef90cc0 100644 --- a/src/controllers/ProfileEmployeeController.ts +++ b/src/controllers/ProfileEmployeeController.ts @@ -5741,16 +5741,19 @@ export class ProfileEmployeeController extends Controller { case "citizenId": queryLike = "profile.citizenId LIKE :keyword"; break; - + + case "fullname": case "fullName": queryLike = "CONCAT(profile.prefix, profile.firstName, ' ', profile.lastName) LIKE :keyword"; break; + case "firstname": case "firstName": queryLike = "profile.firstName LIKE :keyword"; break; + case "lastname": case "lastName": queryLike = "profile.lastName LIKE :keyword"; break; diff --git a/src/services/rabbitmq.ts b/src/services/rabbitmq.ts index 6bf7c70d..e8205187 100644 --- a/src/services/rabbitmq.ts +++ b/src/services/rabbitmq.ts @@ -560,74 +560,70 @@ async function handler_org(msg: amqp.ConsumeMessage): Promise { "positions.posExecutive", ], }); - // // xxx - // // ดึง assignment ของ revision เดิม - // const oldAssigns = await posMasterAssignRepository.find({ - // relations: ["posMaster"], - // where: { - // posMaster: { - // orgRevisionId: orgRevisionPublish?.id, - // }, - // }, - // }); - // // สร้าง Map: ancestorDNA → assignments[] - // const assignMap = new Map(); - // for (const a of oldAssigns) { - // const dna = a.posMaster.ancestorDNA; - // if (!assignMap.has(dna)) { - // assignMap.set(dna, []); - // } - // assignMap.get(dna)!.push(a); - // } - // const permissionProfiles = await permissionProfilesRepository.find({ - // relations: ["orgRootTree"], - // where: { - // orgRootTree: { - // orgRevisionId: orgRevisionPublish?.id, - // } - // } - // }); - // const permissionMap = new Map(); - // for (const p of permissionProfiles) { - // const dna = p.orgRootTree.ancestorDNA; - // if (!permissionMap.has(dna)) { - // permissionMap.set(dna, []); - // } - // permissionMap.get(dna)!.push(p); - // } - // const newRoots = await orgRootRepository.find({ - // where: { orgRevisionId: orgRevisionDraft?.id }, - // }); - // const newRootMap = new Map( - // newRoots.map(r => [r.ancestorDNA, r.id]) - // ); + // ดึง posMasterAssign ของ revision เดิม xxx + const oldposMasterAssigns = await posMasterAssignRepository.find({ + relations: ["posMaster"], + where: { + posMaster: { + orgRevisionId: orgRevisionPublish?.id, + }, + }, + }); + // สร้าง Map: ancestorDNA → posMasterAssign[] + const assignMap = new Map(); + for (const posmasterAssign of oldposMasterAssigns) { + const dna = posmasterAssign.posMaster.ancestorDNA; + if (!assignMap.has(dna)) { + assignMap.set(dna, []); + } + assignMap.get(dna)!.push(posmasterAssign); + } + // ดึง permissionProfiles ของ revision เดิม + const oldPermissionProfiles = await permissionProfilesRepository.find({ + relations: ["orgRootTree"], + where: { + orgRootTree: { + orgRevisionId: orgRevisionPublish?.id, + } + } + }); + // สร้าง Map: ancestorDNA → permissionProfiles[] + const permissionMap = new Map(); + for (const permissionProfile of oldPermissionProfiles) { + const dna = permissionProfile.orgRootTree.ancestorDNA; + if (!permissionMap.has(dna)) { + permissionMap.set(dna, []); + } + permissionMap.get(dna)!.push(permissionProfile); + } + const newRoots = await orgRootRepository.find({ + where: { orgRevisionId: orgRevisionDraft?.id }, + }); + const newRootMap = new Map( + newRoots.map(r => [r.ancestorDNA, r.id]) + ); const _null: any = null; for (const item of posMaster) { - // /* =============================== - // * Clone posMasterAssign & permissionProfiles xxx - // * =============================== */ - // const assigns = assignMap.get(item.ancestorDNA); - - // if (assigns && assigns.length > 0) { - // const newAssigns = assigns.map(({ id, ...rest }) => ({ - // ...rest, // copy ทุก field ยกเว้น id - // posMasterId: item.id, // ผูกกับ posMaster ใหม่ - // })); - - // await posMasterAssignRepository.save(newAssigns); - // } - - // const perms = permissionMap.get(item.ancestorDNA); - // const newRootId = newRootMap.get(item.ancestorDNA); - - // if (perms && perms.length > 0 && newRootId) { - // const newPerms = perms.map(({ id, orgRootTree, ...rest }) => ({ - // ...rest, // profileId, isEdit, isCheck - // orgRootId: newRootId, - // })); - - // await permissionProfilesRepository.save(newPerms); - // } + + // Clone posMasterAssign xxx + const assigns = assignMap.get(item.ancestorDNA); + if (assigns && assigns.length > 0) { + const newAssigns = assigns.map(({ id, ...fields }) => ({ + ...fields, // copy ทุก field ยกเว้น id + posMasterId: item.id, // ผูกกับ posMasterId ใหม่ + })); + await posMasterAssignRepository.save(newAssigns); + } + // Clone permissionProfiles + const perms = permissionMap.get(item.orgRoot.ancestorDNA); + const newRootId = newRootMap.get(item.orgRoot.ancestorDNA); + if (perms && perms.length > 0 && newRootId) { + const newPerms = perms.map(({ id, ...fields }) => ({ + ...fields, + orgRootId: newRootId, + })); + await permissionProfilesRepository.save(newPerms); + } if (item.next_holderId != null) { const profile = await repoProfile.findOne({