no message
This commit is contained in:
parent
46b3df5e95
commit
e43c29dbc4
9 changed files with 1095 additions and 29 deletions
|
|
@ -1080,7 +1080,6 @@ export class CommandController extends Controller {
|
||||||
})),
|
})),
|
||||||
})
|
})
|
||||||
.then(async (res) => {
|
.then(async (res) => {
|
||||||
console.log(res);
|
|
||||||
_command = res;
|
_command = res;
|
||||||
})
|
})
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
|
|
@ -2207,7 +2206,6 @@ export class CommandController extends Controller {
|
||||||
await this.positionRepository.save(positionNew, { data: req });
|
await this.positionRepository.save(positionNew, { data: req });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// console.log(`${item.bodyProfile.citizenId} ==> Success`)
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
return new HttpSuccess();
|
return new HttpSuccess();
|
||||||
|
|
|
||||||
|
|
@ -1412,6 +1412,796 @@ export class OrganizationController extends Controller {
|
||||||
return new HttpSuccess(formattedData);
|
return new HttpSuccess(formattedData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API รายละเอียดโครงสร้าง
|
||||||
|
*
|
||||||
|
* @summary ORG_023 - รายละเอียดโครงสร้าง (ADMIN) #25
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Get("super-admin/{id}")
|
||||||
|
async detailSuperAdmin(@Path() id: string, @Request() request: RequestWithUser) {
|
||||||
|
let _data: any = {
|
||||||
|
root: null,
|
||||||
|
child1: null,
|
||||||
|
child2: null,
|
||||||
|
child3: null,
|
||||||
|
child4: null,
|
||||||
|
};
|
||||||
|
|
||||||
|
const orgRevision = await this.orgRevisionRepository.findOne({ where: { id } });
|
||||||
|
if (!orgRevision) {
|
||||||
|
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล");
|
||||||
|
}
|
||||||
|
if (!request.user.role.includes("SUPER_ADMIN")) {
|
||||||
|
_data = await new permission().PermissionOrgList(request, "SYS_ORG");
|
||||||
|
}
|
||||||
|
|
||||||
|
const orgRootData = await AppDataSource.getRepository(OrgRoot)
|
||||||
|
.createQueryBuilder("orgRoot")
|
||||||
|
.where("orgRoot.orgRevisionId = :id", { id })
|
||||||
|
.andWhere(
|
||||||
|
_data.root != undefined && _data.root != null
|
||||||
|
? _data.root[0] != null
|
||||||
|
? `orgRoot.id IN (:...node)`
|
||||||
|
: `orgRoot.id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
node: _data.root,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.select([
|
||||||
|
"orgRoot.id",
|
||||||
|
"orgRoot.orgRootName",
|
||||||
|
"orgRoot.orgRootShortName",
|
||||||
|
"orgRoot.orgRootCode",
|
||||||
|
"orgRoot.orgRootOrder",
|
||||||
|
"orgRoot.orgRootPhoneEx",
|
||||||
|
"orgRoot.orgRootPhoneIn",
|
||||||
|
"orgRoot.orgRootFax",
|
||||||
|
"orgRoot.orgRevisionId",
|
||||||
|
"orgRoot.orgRootRank",
|
||||||
|
"orgRoot.orgRootRankSub",
|
||||||
|
"orgRoot.responsibility",
|
||||||
|
])
|
||||||
|
.orderBy("orgRoot.orgRootOrder", "ASC")
|
||||||
|
.getMany();
|
||||||
|
const orgRootIds = orgRootData.map((orgRoot) => orgRoot.id) || null;
|
||||||
|
const orgChild1Data =
|
||||||
|
orgRootIds && orgRootIds.length > 0
|
||||||
|
? await AppDataSource.getRepository(OrgChild1)
|
||||||
|
.createQueryBuilder("orgChild1")
|
||||||
|
.where("orgChild1.orgRootId IN (:...ids)", { ids: orgRootIds })
|
||||||
|
.andWhere(
|
||||||
|
_data.child1 != undefined && _data.child1 != null
|
||||||
|
? _data.child1[0] != null
|
||||||
|
? `orgChild1.id IN (:...node)`
|
||||||
|
: `orgChild1.id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
node: _data.child1,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.select([
|
||||||
|
"orgChild1.id",
|
||||||
|
"orgChild1.isOfficer",
|
||||||
|
"orgChild1.orgChild1Name",
|
||||||
|
"orgChild1.orgChild1ShortName",
|
||||||
|
"orgChild1.orgChild1Code",
|
||||||
|
"orgChild1.orgChild1Order",
|
||||||
|
"orgChild1.orgChild1PhoneEx",
|
||||||
|
"orgChild1.orgChild1PhoneIn",
|
||||||
|
"orgChild1.orgChild1Fax",
|
||||||
|
"orgChild1.orgRootId",
|
||||||
|
"orgChild1.orgChild1Rank",
|
||||||
|
"orgChild1.orgChild1RankSub",
|
||||||
|
"orgChild1.responsibility",
|
||||||
|
])
|
||||||
|
.orderBy("orgChild1.orgChild1Order", "ASC")
|
||||||
|
.getMany()
|
||||||
|
: [];
|
||||||
|
|
||||||
|
const orgChild1Ids = orgChild1Data.map((orgChild1) => orgChild1.id) || null;
|
||||||
|
const orgChild2Data =
|
||||||
|
orgChild1Ids && orgChild1Ids.length > 0
|
||||||
|
? await AppDataSource.getRepository(OrgChild2)
|
||||||
|
.createQueryBuilder("orgChild2")
|
||||||
|
.where("orgChild2.orgChild1Id IN (:...ids)", { ids: orgChild1Ids })
|
||||||
|
.andWhere(
|
||||||
|
_data.child2 != undefined && _data.child2 != null
|
||||||
|
? _data.child2[0] != null
|
||||||
|
? `orgChild2.id IN (:...node)`
|
||||||
|
: `orgChild2.id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
node: _data.child2,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.select([
|
||||||
|
"orgChild2.id",
|
||||||
|
"orgChild2.orgChild2Name",
|
||||||
|
"orgChild2.orgChild2ShortName",
|
||||||
|
"orgChild2.orgChild2Code",
|
||||||
|
"orgChild2.orgChild2Order",
|
||||||
|
"orgChild2.orgChild2PhoneEx",
|
||||||
|
"orgChild2.orgChild2PhoneIn",
|
||||||
|
"orgChild2.orgChild2Fax",
|
||||||
|
"orgChild2.orgRootId",
|
||||||
|
"orgChild2.orgChild2Rank",
|
||||||
|
"orgChild2.orgChild2RankSub",
|
||||||
|
"orgChild2.orgChild1Id",
|
||||||
|
"orgChild2.responsibility",
|
||||||
|
])
|
||||||
|
.orderBy("orgChild2.orgChild2Order", "ASC")
|
||||||
|
.getMany()
|
||||||
|
: [];
|
||||||
|
|
||||||
|
const orgChild2Ids = orgChild2Data.map((orgChild2) => orgChild2.id) || null;
|
||||||
|
const orgChild3Data =
|
||||||
|
orgChild2Ids && orgChild2Ids.length > 0
|
||||||
|
? await AppDataSource.getRepository(OrgChild3)
|
||||||
|
.createQueryBuilder("orgChild3")
|
||||||
|
.where("orgChild3.orgChild2Id IN (:...ids)", { ids: orgChild2Ids })
|
||||||
|
.andWhere(
|
||||||
|
_data.child3 != undefined && _data.child3 != null
|
||||||
|
? _data.child3[0] != null
|
||||||
|
? `orgChild3.id IN (:...node)`
|
||||||
|
: `orgChild3.id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
node: _data.child3,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.select([
|
||||||
|
"orgChild3.id",
|
||||||
|
"orgChild3.orgChild3Name",
|
||||||
|
"orgChild3.orgChild3ShortName",
|
||||||
|
"orgChild3.orgChild3Code",
|
||||||
|
"orgChild3.orgChild3Order",
|
||||||
|
"orgChild3.orgChild3PhoneEx",
|
||||||
|
"orgChild3.orgChild3PhoneIn",
|
||||||
|
"orgChild3.orgChild3Fax",
|
||||||
|
"orgChild3.orgRootId",
|
||||||
|
"orgChild3.orgChild3Rank",
|
||||||
|
"orgChild3.orgChild3RankSub",
|
||||||
|
"orgChild3.orgChild2Id",
|
||||||
|
"orgChild3.responsibility",
|
||||||
|
])
|
||||||
|
.orderBy("orgChild3.orgChild3Order", "ASC")
|
||||||
|
.getMany()
|
||||||
|
: [];
|
||||||
|
|
||||||
|
const orgChild3Ids = orgChild3Data.map((orgChild3) => orgChild3.id) || null;
|
||||||
|
const orgChild4Data =
|
||||||
|
orgChild3Ids && orgChild3Ids.length > 0
|
||||||
|
? await AppDataSource.getRepository(OrgChild4)
|
||||||
|
.createQueryBuilder("orgChild4")
|
||||||
|
.where("orgChild4.orgChild3Id IN (:...ids)", { ids: orgChild3Ids })
|
||||||
|
.andWhere(
|
||||||
|
_data.child4 != undefined && _data.child4 != null
|
||||||
|
? _data.child4[0] != null
|
||||||
|
? `orgChild4.id IN (:...node)`
|
||||||
|
: `orgChild4.id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
node: _data.child4,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.select([
|
||||||
|
"orgChild4.id",
|
||||||
|
"orgChild4.orgChild4Name",
|
||||||
|
"orgChild4.orgChild4ShortName",
|
||||||
|
"orgChild4.orgChild4Code",
|
||||||
|
"orgChild4.orgChild4Order",
|
||||||
|
"orgChild4.orgChild4PhoneEx",
|
||||||
|
"orgChild4.orgChild4PhoneIn",
|
||||||
|
"orgChild4.orgChild4Fax",
|
||||||
|
"orgChild4.orgRootId",
|
||||||
|
"orgChild4.orgChild4Rank",
|
||||||
|
"orgChild4.orgChild4RankSub",
|
||||||
|
"orgChild4.orgChild3Id",
|
||||||
|
"orgChild4.responsibility",
|
||||||
|
])
|
||||||
|
.orderBy("orgChild4.orgChild4Order", "ASC")
|
||||||
|
.getMany()
|
||||||
|
: [];
|
||||||
|
|
||||||
|
// const formattedData = orgRootData.map((orgRoot) => {
|
||||||
|
const formattedData = await Promise.all(
|
||||||
|
orgRootData.map(async (orgRoot) => {
|
||||||
|
return {
|
||||||
|
orgTreeId: orgRoot.id,
|
||||||
|
orgLevel: 0,
|
||||||
|
orgName: orgRoot.orgRootName,
|
||||||
|
orgTreeName: orgRoot.orgRootName,
|
||||||
|
orgTreeShortName: orgRoot.orgRootShortName,
|
||||||
|
orgTreeCode: orgRoot.orgRootCode,
|
||||||
|
orgCode: orgRoot.orgRootCode + "00",
|
||||||
|
orgTreeRank: orgRoot.orgRootRank,
|
||||||
|
orgTreeRankSub: orgRoot.orgRootRankSub,
|
||||||
|
orgTreeOrder: orgRoot.orgRootOrder,
|
||||||
|
orgTreePhoneEx: orgRoot.orgRootPhoneEx,
|
||||||
|
orgTreePhoneIn: orgRoot.orgRootPhoneIn,
|
||||||
|
orgTreeFax: orgRoot.orgRootFax,
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootName: orgRoot.orgRootName,
|
||||||
|
responsibility: orgRoot.responsibility,
|
||||||
|
labelName:
|
||||||
|
orgRoot.orgRootName + " " + orgRoot.orgRootCode + "00" + " " + orgRoot.orgRootShortName,
|
||||||
|
totalPosition: await this.posMasterRepository.count({
|
||||||
|
where: { orgRevisionId: orgRoot.orgRevisionId, orgRootId: orgRoot.id },
|
||||||
|
}),
|
||||||
|
totalPositionCurrentUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionCurrentVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPosition: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: IsNull() || "",
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionCurrentUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: IsNull() || "",
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionCurrentVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: IsNull() || "",
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: IsNull() || "",
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: IsNull() || "",
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
|
||||||
|
children: await Promise.all(
|
||||||
|
orgChild1Data
|
||||||
|
.filter((orgChild1) => orgChild1.orgRootId === orgRoot.id)
|
||||||
|
.map(async (orgChild1) => ({
|
||||||
|
orgTreeId: orgChild1.id,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgLevel: 1,
|
||||||
|
orgName: `${orgChild1.orgChild1Name}/${orgRoot.orgRootName}`,
|
||||||
|
orgTreeName: orgChild1.orgChild1Name,
|
||||||
|
orgTreeShortName: orgChild1.orgChild1ShortName,
|
||||||
|
orgTreeCode: orgChild1.orgChild1Code,
|
||||||
|
orgCode: orgRoot.orgRootCode + orgChild1.orgChild1Code,
|
||||||
|
orgTreeRank: orgChild1.orgChild1Rank,
|
||||||
|
orgTreeRankSub: orgChild1.orgChild1RankSub,
|
||||||
|
orgTreeOrder: orgChild1.orgChild1Order,
|
||||||
|
orgRootCode: orgRoot.orgRootCode,
|
||||||
|
orgTreePhoneEx: orgChild1.orgChild1PhoneEx,
|
||||||
|
orgTreePhoneIn: orgChild1.orgChild1PhoneIn,
|
||||||
|
orgTreeFax: orgChild1.orgChild1Fax,
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootName: orgRoot.orgRootName,
|
||||||
|
responsibility: orgChild1.responsibility,
|
||||||
|
isOfficer: orgChild1.isOfficer,
|
||||||
|
labelName:
|
||||||
|
orgChild1.orgChild1Name +
|
||||||
|
" " +
|
||||||
|
orgRoot.orgRootCode +
|
||||||
|
orgChild1.orgChild1Code +
|
||||||
|
" " +
|
||||||
|
orgChild1.orgChild1ShortName,
|
||||||
|
totalPosition: await this.posMasterRepository.count({
|
||||||
|
where: { orgRevisionId: orgRoot.orgRevisionId, orgChild1Id: orgChild1.id },
|
||||||
|
}),
|
||||||
|
totalPositionCurrentUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionCurrentVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPosition: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionCurrentUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionCurrentVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: IsNull() || "",
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
|
||||||
|
children: await Promise.all(
|
||||||
|
orgChild2Data
|
||||||
|
.filter((orgChild2) => orgChild2.orgChild1Id === orgChild1.id)
|
||||||
|
.map(async (orgChild2) => ({
|
||||||
|
orgTreeId: orgChild2.id,
|
||||||
|
orgRootId: orgChild1.id,
|
||||||
|
orgLevel: 2,
|
||||||
|
orgName: `${orgChild2.orgChild2Name}/${orgChild1.orgChild1Name}/${orgRoot.orgRootName}`,
|
||||||
|
orgTreeName: orgChild2.orgChild2Name,
|
||||||
|
orgTreeShortName: orgChild2.orgChild2ShortName,
|
||||||
|
orgTreeCode: orgChild2.orgChild2Code,
|
||||||
|
orgCode: orgRoot.orgRootCode + orgChild2.orgChild2Code,
|
||||||
|
orgTreeRank: orgChild2.orgChild2Rank,
|
||||||
|
orgTreeRankSub: orgChild2.orgChild2RankSub,
|
||||||
|
orgTreeOrder: orgChild2.orgChild2Order,
|
||||||
|
orgRootCode: orgRoot.orgRootCode,
|
||||||
|
orgTreePhoneEx: orgChild2.orgChild2PhoneEx,
|
||||||
|
orgTreePhoneIn: orgChild2.orgChild2PhoneIn,
|
||||||
|
orgTreeFax: orgChild2.orgChild2Fax,
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootName: orgRoot.orgRootName,
|
||||||
|
responsibility: orgChild2.responsibility,
|
||||||
|
labelName:
|
||||||
|
orgChild2.orgChild2Name +
|
||||||
|
" " +
|
||||||
|
orgRoot.orgRootCode +
|
||||||
|
orgChild2.orgChild2Code +
|
||||||
|
" " +
|
||||||
|
orgChild2.orgChild2ShortName,
|
||||||
|
totalPosition: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionCurrentUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionCurrentVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPosition: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionCurrentUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionCurrentVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: IsNull() || "",
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
|
||||||
|
children: await Promise.all(
|
||||||
|
orgChild3Data
|
||||||
|
.filter((orgChild3) => orgChild3.orgChild2Id === orgChild2.id)
|
||||||
|
.map(async (orgChild3) => ({
|
||||||
|
orgTreeId: orgChild3.id,
|
||||||
|
orgRootId: orgChild2.id,
|
||||||
|
orgLevel: 3,
|
||||||
|
orgName: `${orgChild3.orgChild3Name}/${orgChild2.orgChild2Name}/${orgChild1.orgChild1Name}/${orgRoot.orgRootName}`,
|
||||||
|
orgTreeName: orgChild3.orgChild3Name,
|
||||||
|
orgTreeShortName: orgChild3.orgChild3ShortName,
|
||||||
|
orgTreeCode: orgChild3.orgChild3Code,
|
||||||
|
orgCode: orgRoot.orgRootCode + orgChild3.orgChild3Code,
|
||||||
|
orgTreeRank: orgChild3.orgChild3Rank,
|
||||||
|
orgTreeRankSub: orgChild3.orgChild3RankSub,
|
||||||
|
orgTreeOrder: orgChild3.orgChild3Order,
|
||||||
|
orgRootCode: orgRoot.orgRootCode,
|
||||||
|
orgTreePhoneEx: orgChild3.orgChild3PhoneEx,
|
||||||
|
orgTreePhoneIn: orgChild3.orgChild3PhoneIn,
|
||||||
|
orgTreeFax: orgChild3.orgChild3Fax,
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootName: orgRoot.orgRootName,
|
||||||
|
responsibility: orgChild3.responsibility,
|
||||||
|
labelName:
|
||||||
|
orgChild3.orgChild3Name +
|
||||||
|
" " +
|
||||||
|
orgRoot.orgRootCode +
|
||||||
|
orgChild3.orgChild3Code +
|
||||||
|
" " +
|
||||||
|
orgChild3.orgChild3ShortName,
|
||||||
|
totalPosition: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionCurrentUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionCurrentVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPosition: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionCurrentUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionCurrentVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: IsNull() || "",
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
|
||||||
|
children: await Promise.all(
|
||||||
|
orgChild4Data
|
||||||
|
.filter((orgChild4) => orgChild4.orgChild3Id === orgChild3.id)
|
||||||
|
.map(async (orgChild4) => ({
|
||||||
|
orgTreeId: orgChild4.id,
|
||||||
|
orgRootId: orgChild3.id,
|
||||||
|
orgLevel: 4,
|
||||||
|
orgName: `${orgChild4.orgChild4Name}/${orgChild3.orgChild3Name}/${orgChild2.orgChild2Name}/${orgChild1.orgChild1Name}/${orgRoot.orgRootName}`,
|
||||||
|
orgTreeName: orgChild4.orgChild4Name,
|
||||||
|
orgTreeShortName: orgChild4.orgChild4ShortName,
|
||||||
|
orgTreeCode: orgChild4.orgChild4Code,
|
||||||
|
orgCode: orgRoot.orgRootCode + orgChild4.orgChild4Code,
|
||||||
|
orgTreeRank: orgChild4.orgChild4Rank,
|
||||||
|
orgTreeRankSub: orgChild4.orgChild4RankSub,
|
||||||
|
orgTreeOrder: orgChild4.orgChild4Order,
|
||||||
|
orgRootCode: orgRoot.orgRootCode,
|
||||||
|
orgTreePhoneEx: orgChild4.orgChild4PhoneEx,
|
||||||
|
orgTreePhoneIn: orgChild4.orgChild4PhoneIn,
|
||||||
|
orgTreeFax: orgChild4.orgChild4Fax,
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootName: orgRoot.orgRootName,
|
||||||
|
responsibility: orgChild4.responsibility,
|
||||||
|
labelName:
|
||||||
|
orgChild4.orgChild4Name +
|
||||||
|
" " +
|
||||||
|
orgRoot.orgRootCode +
|
||||||
|
orgChild4.orgChild4Code +
|
||||||
|
" " +
|
||||||
|
orgChild4.orgChild4ShortName,
|
||||||
|
totalPosition: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionCurrentUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionCurrentVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalPositionNextVacant: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPosition: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionCurrentUse: await this.posMasterRepository.count(
|
||||||
|
{
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
current_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
totalRootPositionCurrentVacant:
|
||||||
|
await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
current_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextUse: await this.posMasterRepository.count({
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
next_holderId: Not(IsNull()) || Not(""),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
totalRootPositionNextVacant: await this.posMasterRepository.count(
|
||||||
|
{
|
||||||
|
where: {
|
||||||
|
orgRevisionId: orgRoot.orgRevisionId,
|
||||||
|
orgRootId: orgRoot.id,
|
||||||
|
orgChild1Id: orgChild1.id,
|
||||||
|
orgChild2Id: orgChild2.id,
|
||||||
|
orgChild3Id: orgChild3.id,
|
||||||
|
orgChild4Id: orgChild4.id,
|
||||||
|
next_holderId: IsNull() || "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
})),
|
||||||
|
),
|
||||||
|
})),
|
||||||
|
),
|
||||||
|
})),
|
||||||
|
),
|
||||||
|
})),
|
||||||
|
),
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
return new HttpSuccess(formattedData);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* API รายละเอียดโครงสร้าง
|
* API รายละเอียดโครงสร้าง
|
||||||
*
|
*
|
||||||
|
|
@ -1454,7 +2244,6 @@ export class OrganizationController extends Controller {
|
||||||
child3: null,
|
child3: null,
|
||||||
child4: null,
|
child4: null,
|
||||||
};
|
};
|
||||||
console.log(_data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const orgRootData = await AppDataSource.getRepository(OrgRoot)
|
const orgRootData = await AppDataSource.getRepository(OrgRoot)
|
||||||
|
|
|
||||||
|
|
@ -310,7 +310,6 @@ export class PermissionController extends Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
let privilege = await this.Permission(request, system, action);
|
let privilege = await this.Permission(request, system, action);
|
||||||
console.log(privilege);
|
|
||||||
let reply = await getAsync("posMaster_" + profile.id);
|
let reply = await getAsync("posMaster_" + profile.id);
|
||||||
if (reply != null) {
|
if (reply != null) {
|
||||||
reply = JSON.parse(reply);
|
reply = JSON.parse(reply);
|
||||||
|
|
@ -685,19 +684,6 @@ export class PermissionController extends Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
public async PermissionOrg(req: RequestWithUser, system: string, action: string) {
|
public async PermissionOrg(req: RequestWithUser, system: string, action: string) {
|
||||||
// if (
|
|
||||||
// req.headers.hasOwnProperty("api_key") &&
|
|
||||||
// req.headers["api_key"] &&
|
|
||||||
// req.headers["api_key"] == process.env.API_KEY
|
|
||||||
// ) {
|
|
||||||
// return {
|
|
||||||
// root: null,
|
|
||||||
// child1: null,
|
|
||||||
// child2: null,
|
|
||||||
// child3: null,
|
|
||||||
// child4: null,
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
let x: any = await this.listAuthSysOrgFunc(req, system, action);
|
let x: any = await this.listAuthSysOrgFunc(req, system, action);
|
||||||
let privilege = x.privilege;
|
let privilege = x.privilege;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,10 @@ import { RequestWithUser } from "../middlewares/user";
|
||||||
import { PermissionOrg } from "../entities/PermissionOrg";
|
import { PermissionOrg } from "../entities/PermissionOrg";
|
||||||
import { Profile } from "../entities/Profile";
|
import { Profile } from "../entities/Profile";
|
||||||
import HttpStatus from "../interfaces/http-status";
|
import HttpStatus from "../interfaces/http-status";
|
||||||
|
import permission from "../interfaces/permission";
|
||||||
|
import { PosMaster } from "../entities/PosMaster";
|
||||||
|
import { EmployeePosMaster } from "../entities/EmployeePosMaster";
|
||||||
|
import { ProfileEmployee } from "../entities/ProfileEmployee";
|
||||||
|
|
||||||
@Route("api/v1/org/permission-org")
|
@Route("api/v1/org/permission-org")
|
||||||
@Tags("PermissionOrg")
|
@Tags("PermissionOrg")
|
||||||
|
|
@ -39,6 +43,10 @@ export class PermissionOrgController extends Controller {
|
||||||
private profileRepository = AppDataSource.getRepository(Profile);
|
private profileRepository = AppDataSource.getRepository(Profile);
|
||||||
private orgRevisionRepository = AppDataSource.getRepository(OrgRevision);
|
private orgRevisionRepository = AppDataSource.getRepository(OrgRevision);
|
||||||
private permissionOrgRepository = AppDataSource.getRepository(PermissionOrg);
|
private permissionOrgRepository = AppDataSource.getRepository(PermissionOrg);
|
||||||
|
private posMasterRepository = AppDataSource.getRepository(PosMaster);
|
||||||
|
private posMasterEmpRepository = AppDataSource.getRepository(EmployeePosMaster);
|
||||||
|
private profileRepo = AppDataSource.getRepository(Profile);
|
||||||
|
private profileEmployeeRepo = AppDataSource.getRepository(ProfileEmployee);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* API หาสำนักทั้งหมดแบบร่าง
|
* API หาสำนักทั้งหมดแบบร่าง
|
||||||
|
|
@ -55,15 +63,28 @@ export class PermissionOrgController extends Controller {
|
||||||
where: { orgRevisionIsCurrent: false, orgRevisionIsDraft: true },
|
where: { orgRevisionIsCurrent: false, orgRevisionIsDraft: true },
|
||||||
});
|
});
|
||||||
if (!orgRevisionActive) {
|
if (!orgRevisionActive) {
|
||||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบโครงสร้างที่แบบร่างอยู่ตอนนี้");
|
return new HttpSuccess([]);
|
||||||
}
|
}
|
||||||
|
let _data: any = [null];
|
||||||
const data = await this.orgRootRepository.find({
|
if (!request.user.role.includes("SUPER_ADMIN")) {
|
||||||
where: { orgRevisionId: orgRevisionActive.id },
|
_data = await this.listAuthSysOrgFuncByRevisionId(request, "SYS_ORG", orgRevisionActive.id);
|
||||||
order: {
|
}
|
||||||
orgRootOrder: "ASC",
|
console.log(_data);
|
||||||
},
|
const data = await AppDataSource.getRepository(OrgRoot)
|
||||||
});
|
.createQueryBuilder("orgRoot")
|
||||||
|
.where("orgRoot.orgRevisionId = :id", { id: orgRevisionActive.id })
|
||||||
|
.andWhere(
|
||||||
|
_data != undefined && _data != null
|
||||||
|
? _data[0] != null
|
||||||
|
? `orgRoot.id IN (:...node)`
|
||||||
|
: `orgRoot.id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
node: _data,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.orderBy("orgRoot.orgRootOrder", "ASC")
|
||||||
|
.getMany();
|
||||||
return new HttpSuccess(data);
|
return new HttpSuccess(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -500,4 +521,44 @@ export class PermissionOrgController extends Controller {
|
||||||
await this.permissionOrgRepository.delete(_delPermissionOrg.id);
|
await this.permissionOrgRepository.delete(_delPermissionOrg.id);
|
||||||
return new HttpSuccess();
|
return new HttpSuccess();
|
||||||
}
|
}
|
||||||
|
public async listAuthSysOrgFuncByRevisionId(
|
||||||
|
request: RequestWithUser,
|
||||||
|
system: string,
|
||||||
|
revisionId: string,
|
||||||
|
) {
|
||||||
|
let profile = await this.profileRepo.findOne({
|
||||||
|
where: {
|
||||||
|
keycloak: request.user.sub,
|
||||||
|
// current_holders: { orgRevisionId: revisionId },
|
||||||
|
},
|
||||||
|
relations: ["next_holders", "next_holders.authRole", "next_holders.authRole.authRoles"],
|
||||||
|
});
|
||||||
|
console.log(request.user.sub);
|
||||||
|
console.log(revisionId);
|
||||||
|
console.log(profile);
|
||||||
|
if (!profile) {
|
||||||
|
return [null];
|
||||||
|
}
|
||||||
|
|
||||||
|
let attrOwnership =
|
||||||
|
profile?.next_holders
|
||||||
|
.filter((x) => x.orgRevisionId == revisionId)[0]
|
||||||
|
?.authRole?.authRoles?.filter((x) => x.authSysId == system)[0]?.attrOwnership || null;
|
||||||
|
|
||||||
|
const posMaster = await this.posMasterRepository.findOne({
|
||||||
|
where: {
|
||||||
|
next_holderId: profile.id,
|
||||||
|
orgRevisionId: revisionId,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
console.log(posMaster);
|
||||||
|
console.log(attrOwnership);
|
||||||
|
if (!posMaster) {
|
||||||
|
return [null];
|
||||||
|
} else if (attrOwnership == "OWNER") {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return [posMaster.orgRootId];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -936,6 +936,91 @@ export class ProfileController extends Controller {
|
||||||
|
|
||||||
return new HttpSuccess({ caregiver, commander, chairman });
|
return new HttpSuccess({ caregiver, commander, chairman });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API
|
||||||
|
*
|
||||||
|
* @summary API
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Get("admin-keycloak")
|
||||||
|
async listProfileIdByorg(@Request() request: RequestWithUser) {
|
||||||
|
let _data: any = {
|
||||||
|
root: null,
|
||||||
|
child1: null,
|
||||||
|
child2: null,
|
||||||
|
child3: null,
|
||||||
|
child4: null,
|
||||||
|
};
|
||||||
|
if (!request.user.role.includes("SUPER_ADMIN")) {
|
||||||
|
_data = await new permission().PermissionOrgList(request, "SYS_ORG");
|
||||||
|
}
|
||||||
|
const profiles = await this.profileRepo
|
||||||
|
.createQueryBuilder("profile")
|
||||||
|
.leftJoinAndSelect("profile.current_holders", "current_holders")
|
||||||
|
.leftJoinAndSelect("current_holders.orgRoot", "orgRoot")
|
||||||
|
.leftJoinAndSelect("current_holders.orgChild1", "orgChild1")
|
||||||
|
.leftJoinAndSelect("current_holders.orgChild2", "orgChild2")
|
||||||
|
.leftJoinAndSelect("current_holders.orgChild3", "orgChild3")
|
||||||
|
.leftJoinAndSelect("current_holders.orgChild4", "orgChild4")
|
||||||
|
.andWhere(
|
||||||
|
_data.root != undefined && _data.root != null
|
||||||
|
? _data.root[0] != null
|
||||||
|
? `current_holders.orgRootId IN (:...root)`
|
||||||
|
: `current_holders.orgRootId is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
root: _data.root,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.andWhere(
|
||||||
|
_data.child1 != undefined && _data.child1 != null
|
||||||
|
? _data.child1[0] != null
|
||||||
|
? `current_holders.orgChild1Id IN (:...child1)`
|
||||||
|
: `current_holders.orgChild1Id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
child1: _data.child1,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.andWhere(
|
||||||
|
_data.child2 != undefined && _data.child2 != null
|
||||||
|
? _data.child2[0] != null
|
||||||
|
? `current_holders.orgChild2Id IN (:...child2)`
|
||||||
|
: `current_holders.orgChild2Id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
child2: _data.child2,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.andWhere(
|
||||||
|
_data.child3 != undefined && _data.child3 != null
|
||||||
|
? _data.child3[0] != null
|
||||||
|
? `current_holders.orgChild3Id IN (:...child3)`
|
||||||
|
: `current_holders.orgChild3Id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
child3: _data.child3,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.andWhere(
|
||||||
|
_data.child4 != undefined && _data.child4 != null
|
||||||
|
? _data.child4[0] != null
|
||||||
|
? `current_holders.orgChild4Id IN (:...child4)`
|
||||||
|
: `current_holders.orgChild4Id is null`
|
||||||
|
: "1=1",
|
||||||
|
{
|
||||||
|
child4: _data.child4,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.andWhere({ keycloak: Not(IsNull()) })
|
||||||
|
.andWhere({ keycloak: Not("") })
|
||||||
|
.select("profile.keycloak", "keycloak")
|
||||||
|
.getRawMany();
|
||||||
|
const keycloakArray = profiles.map((p) => p.keycloak);
|
||||||
|
|
||||||
|
return new HttpSuccess(keycloakArray);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,15 @@ import {
|
||||||
getRoleMappings,
|
getRoleMappings,
|
||||||
getUserCount,
|
getUserCount,
|
||||||
enableStatus,
|
enableStatus,
|
||||||
|
getUserCountOrg,
|
||||||
|
getUserListOrg,
|
||||||
} from "../keycloak";
|
} from "../keycloak";
|
||||||
import { AppDataSource } from "../database/data-source";
|
import { AppDataSource } from "../database/data-source";
|
||||||
import { Profile } from "../entities/Profile";
|
import { Profile } from "../entities/Profile";
|
||||||
import { ProfileEmployee } from "../entities/ProfileEmployee";
|
import { ProfileEmployee } from "../entities/ProfileEmployee";
|
||||||
import { IsNull } from "typeorm";
|
import { IsNull, Not } from "typeorm";
|
||||||
|
import { RequestWithUser } from "../middlewares/user";
|
||||||
|
import permission from "../interfaces/permission";
|
||||||
// import * as io from "../lib/websocket";
|
// import * as io from "../lib/websocket";
|
||||||
// import elasticsearch from "../elasticsearch";
|
// import elasticsearch from "../elasticsearch";
|
||||||
// import { StorageFolder } from "../interfaces/storage-fs";
|
// import { StorageFolder } from "../interfaces/storage-fs";
|
||||||
|
|
@ -239,7 +243,89 @@ export class KeycloakController extends Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Get("user")
|
@Get("user")
|
||||||
async getUserList(@Query() first = "", @Query() max = "", @Query() search = "") {
|
async getUserList(
|
||||||
|
@Request() request: RequestWithUser,
|
||||||
|
@Query() first = "",
|
||||||
|
@Query() max = "",
|
||||||
|
@Query() search = "",
|
||||||
|
) {
|
||||||
|
// let _data: any = {
|
||||||
|
// root: null,
|
||||||
|
// child1: null,
|
||||||
|
// child2: null,
|
||||||
|
// child3: null,
|
||||||
|
// child4: null,
|
||||||
|
// };
|
||||||
|
// if (!request.user.role.includes("SUPER_ADMIN")) {
|
||||||
|
// _data = await new permission().PermissionOrgList(request, "SYS_ORG");
|
||||||
|
// }
|
||||||
|
// const profiles = await this.profileRepo
|
||||||
|
// .createQueryBuilder("profile")
|
||||||
|
// .leftJoinAndSelect("profile.current_holders", "current_holders")
|
||||||
|
// .leftJoinAndSelect("current_holders.orgRoot", "orgRoot")
|
||||||
|
// .leftJoinAndSelect("current_holders.orgChild1", "orgChild1")
|
||||||
|
// .leftJoinAndSelect("current_holders.orgChild2", "orgChild2")
|
||||||
|
// .leftJoinAndSelect("current_holders.orgChild3", "orgChild3")
|
||||||
|
// .leftJoinAndSelect("current_holders.orgChild4", "orgChild4")
|
||||||
|
// .andWhere(
|
||||||
|
// _data.root != undefined && _data.root != null
|
||||||
|
// ? _data.root[0] != null
|
||||||
|
// ? `current_holders.orgRootId IN (:...root)`
|
||||||
|
// : `current_holders.orgRootId is null`
|
||||||
|
// : "1=1",
|
||||||
|
// {
|
||||||
|
// root: _data.root,
|
||||||
|
// },
|
||||||
|
// )
|
||||||
|
// .andWhere(
|
||||||
|
// _data.child1 != undefined && _data.child1 != null
|
||||||
|
// ? _data.child1[0] != null
|
||||||
|
// ? `current_holders.orgChild1Id IN (:...child1)`
|
||||||
|
// : `current_holders.orgChild1Id is null`
|
||||||
|
// : "1=1",
|
||||||
|
// {
|
||||||
|
// child1: _data.child1,
|
||||||
|
// },
|
||||||
|
// )
|
||||||
|
// .andWhere(
|
||||||
|
// _data.child2 != undefined && _data.child2 != null
|
||||||
|
// ? _data.child2[0] != null
|
||||||
|
// ? `current_holders.orgChild2Id IN (:...child2)`
|
||||||
|
// : `current_holders.orgChild2Id is null`
|
||||||
|
// : "1=1",
|
||||||
|
// {
|
||||||
|
// child2: _data.child2,
|
||||||
|
// },
|
||||||
|
// )
|
||||||
|
// .andWhere(
|
||||||
|
// _data.child3 != undefined && _data.child3 != null
|
||||||
|
// ? _data.child3[0] != null
|
||||||
|
// ? `current_holders.orgChild3Id IN (:...child3)`
|
||||||
|
// : `current_holders.orgChild3Id is null`
|
||||||
|
// : "1=1",
|
||||||
|
// {
|
||||||
|
// child3: _data.child3,
|
||||||
|
// },
|
||||||
|
// )
|
||||||
|
// .andWhere(
|
||||||
|
// _data.child4 != undefined && _data.child4 != null
|
||||||
|
// ? _data.child4[0] != null
|
||||||
|
// ? `current_holders.orgChild4Id IN (:...child4)`
|
||||||
|
// : `current_holders.orgChild4Id is null`
|
||||||
|
// : "1=1",
|
||||||
|
// {
|
||||||
|
// child4: _data.child4,
|
||||||
|
// },
|
||||||
|
// )
|
||||||
|
// .andWhere({ keycloak: Not(IsNull()) })
|
||||||
|
// .andWhere({ keycloak: Not("") })
|
||||||
|
// .select("profile.keycloak", "keycloak")
|
||||||
|
// .getRawMany();
|
||||||
|
// let keycloakArray = profiles.map((p) => p.keycloak);
|
||||||
|
|
||||||
|
// const total = await getUserCountOrg(first, max, search, keycloakArray);
|
||||||
|
// const result = await getUserListOrg(first, max, search, keycloakArray);
|
||||||
|
|
||||||
const total = await getUserCount(first, max, search);
|
const total = await getUserCount(first, max, search);
|
||||||
const result = await getUserList(first, max, search);
|
const result = await getUserList(first, max, search);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,6 @@ class CallAPI {
|
||||||
response: JSON.stringify(error),
|
response: JSON.stringify(error),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(error);
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,6 @@ class CheckAuth {
|
||||||
return await new CallAPI()
|
return await new CallAPI()
|
||||||
.GetData(req, `/org/permission/org/${system}/${action}`)
|
.GetData(req, `/org/permission/org/${system}/${action}`)
|
||||||
.then(async (x) => {
|
.then(async (x) => {
|
||||||
console.log(x);
|
|
||||||
let privilege = x.privilege;
|
let privilege = x.privilege;
|
||||||
// if (action.trim().toLocaleUpperCase() == "CREATE")
|
// if (action.trim().toLocaleUpperCase() == "CREATE")
|
||||||
// privilege = await this.PermissionCreate(req, system);
|
// privilege = await this.PermissionCreate(req, system);
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,69 @@ export async function getUserCount(first = "", max = "", search = "") {
|
||||||
return await res.json();
|
return await res.json();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get keycloak user list
|
||||||
|
*
|
||||||
|
* Client must have permission to manage realm's user
|
||||||
|
*
|
||||||
|
* @returns user list if success, false otherwise.
|
||||||
|
*/
|
||||||
|
export async function getUserListOrg(first = "", max = "", search = "", userIds: string[] = []) {
|
||||||
|
const userIdsParam = userIds.join(",");
|
||||||
|
const res = await fetch(
|
||||||
|
// `${KC_URL}/admin/realms/${KC_REALM}/users`.concat(!!search ? `?search=${search}` : ""),
|
||||||
|
`${KC_URL}/admin/realms/${KC_REALM}/users?first=${first || "0"}&max=${max || "-1"}${search ? `&search=${search}` : ""}${userIdsParam ? `&id=${userIdsParam}` : ""}`,
|
||||||
|
{
|
||||||
|
// prettier-ignore
|
||||||
|
headers: {
|
||||||
|
"authorization": `Bearer ${await getToken()}`,
|
||||||
|
"content-type": `application/json`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
).catch((e) => console.log("Keycloak Error: ", e));
|
||||||
|
|
||||||
|
if (!res) return false;
|
||||||
|
if (!res.ok) {
|
||||||
|
return Boolean(console.error("Keycloak Error Response: ", await res.json()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ((await res.json()) as any[]).map((v: Record<string, string>) => ({
|
||||||
|
id: v.id,
|
||||||
|
username: v.username,
|
||||||
|
firstName: v.firstName,
|
||||||
|
lastName: v.lastName,
|
||||||
|
email: v.email,
|
||||||
|
enabled: v.enabled,
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getUserCountOrg(first = "", max = "", search = "", userIds: string[] = []) {
|
||||||
|
console.log(userIds);
|
||||||
|
const userIdsParam = userIds.join(",");
|
||||||
|
console.log(userIdsParam);
|
||||||
|
console.log("xxxxxxxxxxxxxxxxx");
|
||||||
|
console.log(
|
||||||
|
`${KC_URL}/admin/realms/${KC_REALM}/users/count?first=${first || "0"}&max=${max || "-1"}${search ? `&search=${search}` : ""}${userIdsParam && userIdsParam != "" ? `&id=${userIdsParam}` : ""}`,
|
||||||
|
);
|
||||||
|
console.log("aaaaaaaaaaaaaaaaaa");
|
||||||
|
const res = await fetch(
|
||||||
|
`${KC_URL}/admin/realms/${KC_REALM}/users/count?first=${first || "0"}&max=${max || "-1"}${search ? `&search=${search}` : ""}${userIdsParam && userIdsParam != "" ? `&id=${userIdsParam}` : ""}`,
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
authorization: `Bearer ${await getToken()}`,
|
||||||
|
"content-type": `application/json`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
).catch((e) => console.log("Keycloak Error: ", e));
|
||||||
|
|
||||||
|
if (!res) return false;
|
||||||
|
if (!res.ok) {
|
||||||
|
return Boolean(console.error("Keycloak Error Response: ", await res.json()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return await res.json();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update keycloak user by uuid
|
* Update keycloak user by uuid
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue