fix: #2234
All checks were successful
Build & Deploy on Dev / build (push) Successful in 1m26s

This commit is contained in:
Adisak 2026-02-11 15:13:40 +07:00
parent 17760212d1
commit 1f809d3e22

View file

@ -38,7 +38,7 @@ import { EmployeePosLevel } from "../entities/EmployeePosLevel";
import { AuthRole } from "../entities/AuthRole"; import { AuthRole } from "../entities/AuthRole";
import { RequestWithUser } from "../middlewares/user"; import { RequestWithUser } from "../middlewares/user";
import permission from "../interfaces/permission"; import permission from "../interfaces/permission";
import { setLogDataDiff } from "../interfaces/utils"; import { resolveNodeLevel, setLogDataDiff } from "../interfaces/utils";
import { PosMasterAssign } from "../entities/PosMasterAssign"; import { PosMasterAssign } from "../entities/PosMasterAssign";
import { Assign } from "../entities/Assign"; import { Assign } from "../entities/Assign";
import { ProfileEmployee } from "../entities/ProfileEmployee"; import { ProfileEmployee } from "../entities/ProfileEmployee";
@ -5272,9 +5272,45 @@ export class PositionController extends Controller {
let searchShortName3 = `CONCAT(orgChild3.orgChild3ShortName," ",COALESCE(posMaster.posMasterNoPrefix, ""),posMaster.posMasterNo,COALESCE(posMaster.posMasterNoSuffix, ""))`; let searchShortName3 = `CONCAT(orgChild3.orgChild3ShortName," ",COALESCE(posMaster.posMasterNoPrefix, ""),posMaster.posMasterNo,COALESCE(posMaster.posMasterNoSuffix, ""))`;
let searchShortName4 = `CONCAT(orgChild4.orgChild4ShortName," ",COALESCE(posMaster.posMasterNoPrefix, ""),posMaster.posMasterNo,COALESCE(posMaster.posMasterNoSuffix, ""))`; let searchShortName4 = `CONCAT(orgChild4.orgChild4ShortName," ",COALESCE(posMaster.posMasterNoPrefix, ""),posMaster.posMasterNo,COALESCE(posMaster.posMasterNoSuffix, ""))`;
let _data = await new permission().PermissionOrgList(request, "SYS_POS_CONDITION"); let _data = await new permission().PermissionOrgList(request, "SYS_POS_CONDITION");
const orgDna = await new permission().checkDna(request, request.user.sub);
let level: any = resolveNodeLevel(orgDna);
const cannotViewRootPosMaster =
(_data.privilege === "ROOT" && level > 0) ||
(_data.privilege === "PARENT") ||
(_data.privilege === "BROTHER" && level > 1) ||
(_data.privilege === "CHILD" && level > 0) ||
(_data.privilege === "NORMAL" && level != 0);
const cannotViewChild1PosMaster =
(_data.privilege === "ROOT" && level > 1) ||
(_data.privilege === "PARENT" && level > 1) ||
(_data.privilege === "BROTHER" && level > 2) ||
(_data.privilege === "CHILD" && level > 1) ||
(_data.privilege === "NORMAL" && level !== 1);
const cannotViewChild2PosMaster =
(_data.privilege === "ROOT" && level > 2) ||
(_data.privilege === "PARENT" && level > 2) ||
(_data.privilege === "BROTHER" && level > 3) ||
(_data.privilege === "CHILD" && level > 2) ||
(_data.privilege === "NORMAL" && level !== 2);
const cannotViewChild3PosMaster =
(_data.privilege === "ROOT" && level > 3) ||
(_data.privilege === "PARENT" && level > 3) ||
(_data.privilege === "BROTHER" && level > 4) ||
(_data.privilege === "CHILD" && level > 3) ||
(_data.privilege === "NORMAL" && level !== 3);
const cannotViewChild4PosMaster =
(_data.privilege === "PARENT" && level > 4) ||
(_data.privilege === "CHILD" && level > 4) ||
(_data.privilege === "NORMAL" && level !== 4);
if (body.type === 0) { if (body.type === 0) {
typeCondition = { typeCondition = {
orgRootId: body.id, ...(cannotViewRootPosMaster ? { orgRootId: null } : { orgRootId: body.id }),
}; };
if (!body.isAll) { if (!body.isAll) {
checkChildConditions = { checkChildConditions = {
@ -5285,7 +5321,7 @@ export class PositionController extends Controller {
} }
} else if (body.type === 1) { } else if (body.type === 1) {
typeCondition = { typeCondition = {
orgChild1Id: body.id, ...(cannotViewChild1PosMaster ? { orgChild1Id: null } : { orgChild1Id: body.id }),
}; };
if (!body.isAll) { if (!body.isAll) {
checkChildConditions = { checkChildConditions = {
@ -5296,7 +5332,7 @@ export class PositionController extends Controller {
} }
} else if (body.type === 2) { } else if (body.type === 2) {
typeCondition = { typeCondition = {
orgChild2Id: body.id, ...(cannotViewChild2PosMaster ? { orgChild2Id: null } : { orgChild2Id: body.id }),
}; };
if (!body.isAll) { if (!body.isAll) {
checkChildConditions = { checkChildConditions = {
@ -5307,7 +5343,7 @@ export class PositionController extends Controller {
} }
} else if (body.type === 3) { } else if (body.type === 3) {
typeCondition = { typeCondition = {
orgChild3Id: body.id, ...(cannotViewChild3PosMaster ? { orgChild3Id: null } : { orgChild3Id: body.id }),
}; };
if (!body.isAll) { if (!body.isAll) {
checkChildConditions = { checkChildConditions = {
@ -5318,7 +5354,7 @@ export class PositionController extends Controller {
} }
} else if (body.type === 4) { } else if (body.type === 4) {
typeCondition = { typeCondition = {
orgChild4Id: body.id, ...(cannotViewChild4PosMaster ? { orgChild4Id: null } : { orgChild4Id: body.id }),
}; };
searchShortName = `CONCAT(orgChild4.orgChild4ShortName," ",COALESCE(posMaster.posMasterNoPrefix, ""),posMaster.posMasterNo,COALESCE(posMaster.posMasterNoSuffix, "")) like '%${body.keyword}%'`; searchShortName = `CONCAT(orgChild4.orgChild4ShortName," ",COALESCE(posMaster.posMasterNoPrefix, ""),posMaster.posMasterNo,COALESCE(posMaster.posMasterNoSuffix, "")) like '%${body.keyword}%'`;
} }
@ -5403,56 +5439,56 @@ export class PositionController extends Controller {
.leftJoinAndSelect("current_holder.posType", "posType") .leftJoinAndSelect("current_holder.posType", "posType")
.leftJoinAndSelect("current_holder.posLevel", "posLevel") .leftJoinAndSelect("current_holder.posLevel", "posLevel")
.where(conditions) .where(conditions)
.andWhere( // .andWhere(
_data.root != undefined && _data.root != null // _data.root != undefined && _data.root != null
? _data.root[0] != null // ? _data.root[0] != null
? `posMaster.orgRootId IN (:...root)` // ? `posMaster.orgRootId IN (:...root)`
: `posMaster.orgRootId is null` // : `posMaster.orgRootId is null`
: "1=1", // : "1=1",
{ // {
root: _data.root, // root: _data.root,
}, // },
) // )
.andWhere( // .andWhere(
_data.child1 != undefined && _data.child1 != null // _data.child1 != undefined && _data.child1 != null
? _data.child1[0] != null // ? _data.child1[0] != null
? `posMaster.orgChild1Id IN (:...child1)` // ? `posMaster.orgChild1Id IN (:...child1)`
: `posMaster.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` // : `posMaster.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}`
: "1=1", // : "1=1",
{ // {
child1: _data.child1, // child1: _data.child1,
}, // },
) // )
.andWhere( // .andWhere(
_data.child2 != undefined && _data.child2 != null // _data.child2 != undefined && _data.child2 != null
? _data.child2[0] != null // ? _data.child2[0] != null
? `posMaster.orgChild2Id IN (:...child2)` // ? `posMaster.orgChild2Id IN (:...child2)`
: `posMaster.orgChild2Id is null` // : `posMaster.orgChild2Id is null`
: "1=1", // : "1=1",
{ // {
child2: _data.child2, // child2: _data.child2,
}, // },
) // )
.andWhere( // .andWhere(
_data.child3 != undefined && _data.child3 != null // _data.child3 != undefined && _data.child3 != null
? _data.child3[0] != null // ? _data.child3[0] != null
? `posMaster.orgChild3Id IN (:...child3)` // ? `posMaster.orgChild3Id IN (:...child3)`
: `posMaster.orgChild3Id is null` // : `posMaster.orgChild3Id is null`
: "1=1", // : "1=1",
{ // {
child3: _data.child3, // child3: _data.child3,
}, // },
) // )
.andWhere( // .andWhere(
_data.child4 != undefined && _data.child4 != null // _data.child4 != undefined && _data.child4 != null
? _data.child4[0] != null // ? _data.child4[0] != null
? `posMaster.orgChild4Id IN (:...child4)` // ? `posMaster.orgChild4Id IN (:...child4)`
: `posMaster.orgChild4Id is null` // : `posMaster.orgChild4Id is null`
: "1=1", // : "1=1",
{ // {
child4: _data.child4, // child4: _data.child4,
}, // },
) // )
.orWhere( .orWhere(
new Brackets((qb) => { new Brackets((qb) => {
qb.andWhere( qb.andWhere(