fixed api web service case select ROOT, NORMAL, CHILD
All checks were successful
Build & Deploy on Dev / build (push) Successful in 1m0s

This commit is contained in:
Warunee Tamkoo 2026-05-22 21:57:25 +07:00
parent 33bd92af11
commit 0c7c8e9fd3

View file

@ -607,18 +607,28 @@ export class ApiWebServiceController extends Controller {
}
// join กับ posMaster/employeePosMaster/employeeTempPosMaster เพื่อกรองตามสิทธิ์การเข้าถึง
// Skip duplicate join - posMaster already joined for registry systems at lines 569-571
// Permission condition will use the existing alias
const posMasterAlreadyJoined = (system === "registry" || system === "registry_emp" || system === "registry_temp") && tbMain === "Profile";
if ((tbMain === "Profile" || tbMain === "ProfileEmployee") && posMasterCondition !== "1=1") {
if (tbMain === "Profile") {
queryBuilder.innerJoin("Profile.current_holders", "posMaster", "posMaster.orgRevisionId = :currentRevisionIdPerm");
queryBuilder.setParameter("currentRevisionIdPerm", this.currentRevisionId);
} else if (tbMain === "ProfileEmployee") {
// Use the correct relation based on posMasterAlias
if (posMasterAlias === "employeeTempPosMaster") {
queryBuilder.innerJoin("ProfileEmployee.current_holderTemps", "employeeTempPosMaster", "employeeTempPosMaster.orgRevisionId = :currentRevisionIdPerm");
} else {
queryBuilder.innerJoin("ProfileEmployee.current_holders", "employeePosMaster", "employeePosMaster.orgRevisionId = :currentRevisionIdPerm");
// Only join if not already joined for registry systems
if (!posMasterAlreadyJoined) {
queryBuilder.innerJoin("Profile.current_holders", "posMaster", "posMaster.orgRevisionId = :currentRevisionIdPerm");
queryBuilder.setParameter("currentRevisionIdPerm", this.currentRevisionId);
}
} else if (tbMain === "ProfileEmployee") {
// Check if already joined for registry_emp systems
const alreadyJoined = (system === "registry_emp" || system === "registry_temp");
// Use the correct relation based on posMasterAlias
if (posMasterAlias === "employeeTempPosMaster" && !alreadyJoined) {
queryBuilder.innerJoin("ProfileEmployee.current_holderTemps", "employeeTempPosMaster", "employeeTempPosMaster.orgRevisionId = :currentRevisionIdPerm");
queryBuilder.setParameter("currentRevisionIdPerm", this.currentRevisionId);
} else if (posMasterAlias === "employeePosMaster" && !alreadyJoined) {
queryBuilder.innerJoin("ProfileEmployee.current_holders", "employeePosMaster", "employeePosMaster.orgRevisionId = :currentRevisionIdPerm");
queryBuilder.setParameter("currentRevisionIdPerm", this.currentRevisionId);
}
queryBuilder.setParameter("currentRevisionIdPerm", this.currentRevisionId);
}
}