This commit is contained in:
Warunee Tamkoo 2026-02-06 21:46:41 +07:00
commit 3177ffc42f
5 changed files with 265 additions and 188 deletions

View file

@ -33,7 +33,12 @@ import { PosMaster } from "../entities/PosMaster";
import { Profile } from "../entities/Profile";
import { RequestWithUser } from "../middlewares/user";
import permission from "../interfaces/permission";
import { checkQueueInProgress, setLogDataDiff } from "../interfaces/utils";
import {
checkQueueInProgress,
resolveNodeId,
resolveNodeLevel,
setLogDataDiff,
} from "../interfaces/utils";
import { sendToQueueOrg, sendToQueueOrgDraft } from "../services/rabbitmq";
import { PosType } from "../entities/PosType";
import { PosLevel } from "../entities/PosLevel";
@ -5513,6 +5518,9 @@ export class OrganizationController extends Controller {
}
}
const orgDna = await new permission().checkDna(request, request.user.sub);
let level: any = resolveNodeLevel(orgDna);
const orgRootData = await AppDataSource.getRepository(OrgRoot)
.createQueryBuilder("orgRoot")
.where("orgRoot.orgRevisionId = :id", { id })
@ -5619,6 +5627,35 @@ export class OrganizationController extends Controller {
.getMany()
: [];
const cannotViewRootPosMaster =
_privilege.privilege === "PARENT" ||
(_privilege.privilege === "BROTHER" && level > 1) ||
(_privilege.privilege === "CHILD" && level > 0) ||
(_privilege.privilege === "NORMAL" && level != 0);
const cannotViewChild1PosMaster =
(_privilege.privilege === "PARENT" && level > 1) ||
(_privilege.privilege === "BROTHER" && level > 2) ||
(_privilege.privilege === "CHILD" && level > 1) ||
(_privilege.privilege === "NORMAL" && level !== 1);
const cannotViewChild2PosMaster =
(_privilege.privilege === "PARENT" && level > 2) ||
(_privilege.privilege === "BROTHER" && level > 3) ||
(_privilege.privilege === "CHILD" && level > 2) ||
(_privilege.privilege === "NORMAL" && level !== 2);
const cannotViewChild3PosMaster =
(_privilege.privilege === "PARENT" && level > 3) ||
(_privilege.privilege === "BROTHER" && level > 4) ||
(_privilege.privilege === "CHILD" && level > 3) ||
(_privilege.privilege === "NORMAL" && level !== 3);
const cannotViewChild4PosMaster =
(_privilege.privilege === "PARENT" && level > 4) ||
(_privilege.privilege === "CHILD" && level > 4) ||
(_privilege.privilege === "NORMAL" && level !== 4);
// const formattedData = orgRootData.map((orgRoot) => {
const formattedData = await Promise.all(
orgRootData.map(async (orgRoot) => {
@ -5633,27 +5670,29 @@ export class OrganizationController extends Controller {
orgRootName: orgRoot.orgRootName,
labelName:
orgRoot.orgRootName + " " + orgRoot.orgRootCode + "00" + " " + orgRoot.orgRootShortName,
posMaster: await Promise.all(
orgRoot.posMasters
.filter(
(x) =>
x.orgChild1Id == null &&
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgRoot.orgRootShortName} ${x.posMasterNo}`,
orgTreeId: orgRoot.id,
orgLevel: 0,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
posMaster: cannotViewRootPosMaster
? []
: await Promise.all(
orgRoot.posMasters
.filter(
(x) =>
x.orgChild1Id == null &&
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgRoot.orgRootShortName} ${x.posMasterNo}`,
orgTreeId: orgRoot.id,
orgLevel: 0,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
children: await Promise.all(
orgChild1Data
.filter((orgChild1) => orgChild1.orgRootId === orgRoot.id)
@ -5681,27 +5720,29 @@ export class OrganizationController extends Controller {
"00" +
" " +
orgRoot.orgRootShortName,
posMaster: await Promise.all(
orgChild1.posMasters
.filter(
(x) =>
x.orgChild2Id == null &&
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgChild1.orgChild1ShortName} ${x.posMasterNo}`,
orgTreeId: orgChild1.id,
orgLevel: 1,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
posMaster: cannotViewChild1PosMaster
? []
: await Promise.all(
orgChild1.posMasters
.filter(
(x) =>
x.orgChild2Id == null &&
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgChild1.orgChild1ShortName} ${x.posMasterNo}`,
orgTreeId: orgChild1.id,
orgLevel: 1,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
children: await Promise.all(
orgChild2Data
@ -5737,27 +5778,29 @@ export class OrganizationController extends Controller {
"00" +
" " +
orgRoot.orgRootShortName,
posMaster: await Promise.all(
orgChild2.posMasters
.filter(
(x) =>
x.orgChild3Id == null &&
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgChild2.orgChild2ShortName} ${x.posMasterNo}`,
orgTreeId: orgChild2.id,
orgLevel: 2,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
posMaster: cannotViewChild2PosMaster
? []
: await Promise.all(
orgChild2.posMasters
.filter(
(x) =>
x.orgChild3Id == null &&
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgChild2.orgChild2ShortName} ${x.posMasterNo}`,
orgTreeId: orgChild2.id,
orgLevel: 2,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
children: await Promise.all(
orgChild3Data
@ -5800,27 +5843,29 @@ export class OrganizationController extends Controller {
"00" +
" " +
orgRoot.orgRootShortName,
posMaster: await Promise.all(
orgChild3.posMasters
.filter(
(x) =>
x.orgChild4Id == null &&
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgChild3.orgChild3ShortName} ${x.posMasterNo}`,
orgTreeId: orgChild3.id,
orgLevel: 3,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
posMaster: cannotViewChild3PosMaster
? []
: await Promise.all(
orgChild3.posMasters
.filter(
(x) =>
x.orgChild4Id == null &&
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgChild3.orgChild3ShortName} ${x.posMasterNo}`,
orgTreeId: orgChild3.id,
orgLevel: 3,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
children: await Promise.all(
orgChild4Data
@ -5870,26 +5915,28 @@ export class OrganizationController extends Controller {
"00" +
" " +
orgRoot.orgRootShortName,
posMaster: await Promise.all(
orgChild4.posMasters
.filter(
(x) =>
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgChild4.orgChild4ShortName} ${x.posMasterNo}`,
orgTreeId: orgChild4.id,
orgLevel: 4,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
posMaster: cannotViewChild4PosMaster
? []
: await Promise.all(
orgChild4.posMasters
.filter(
(x) =>
// x.current_holderId != null &&
x.isDirector === true,
)
// .sort((a, b) => a.posMasterOrder - b.posMasterOrder) // Sort by posMasterOrder ASC
// .slice(0, 3) // Select the first 3 rows
.map(async (x) => ({
posmasterId: x.id,
posNo: `${orgChild4.orgChild4ShortName} ${x.posMasterNo}`,
orgTreeId: orgChild4.id,
orgLevel: 4,
fullNameCurrentHolder:
x.current_holder == null
? null
: `${x.current_holder.prefix}${x.current_holder.firstName} ${x.current_holder.lastName}`,
})),
),
})),
),
})),