Merge branch 'develop' into adiDev

This commit is contained in:
AdisakKanthawilang 2024-12-16 13:06:11 +07:00
commit 168a5ec53c
7 changed files with 390 additions and 276 deletions

View file

@ -42,11 +42,11 @@ export class LoginController extends Controller {
_data = x; _data = x;
}) })
.catch(async (x) => { .catch(async (x) => {
throw new HttpError(HttpStatus.UNAUTHORIZED, "ชื่อผู้ใช้งานหรือรหัสผ่านไม่ถูกต้อง4"); throw new HttpError(HttpStatus.UNAUTHORIZED, "ชื่อผู้ใช้งานหรือรหัสผ่านไม่ถูกต้อง");
}), }),
]); ]);
if (_data == null) { if (_data == null) {
return new HttpError(HttpStatus.UNAUTHORIZED, "ชื่อผู้ใช้งานหรือรหัสผ่านไม่ถูกต้อง5"); return new HttpError(HttpStatus.UNAUTHORIZED, "ชื่อผู้ใช้งานหรือรหัสผ่านไม่ถูกต้อง");
} else { } else {
return new HttpSuccess(_data); return new HttpSuccess(_data);
} }

View file

@ -548,6 +548,36 @@ export class OrganizationDotnetController extends Controller {
x.orgRevision?.orgRevisionIsDraft == false && x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true, x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild4?.orgChild4Name ?? null, )?.orgChild4?.orgChild4Name ?? null,
rootId:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgRootId ?? null,
child1Id:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild1Id ?? null,
child2Id:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild2Id ?? null,
child3Id:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild3Id ?? null,
child4Id:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild4Id ?? null,
commander: fullname, commander: fullname,
posLevel: profile.posLevel?.posLevelName ?? null, posLevel: profile.posLevel?.posLevelName ?? null,
posType: profile.posType?.posTypeName ?? null, posType: profile.posType?.posTypeName ?? null,
@ -785,6 +815,36 @@ export class OrganizationDotnetController extends Controller {
x.orgRevision?.orgRevisionIsDraft == false && x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true, x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild4?.orgChild4Name ?? null, )?.orgChild4?.orgChild4Name ?? null,
rootId:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgRootId ?? null,
child1Id:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild1Id ?? null,
child2Id:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild2Id ?? null,
child3Id:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild3Id ?? null,
child4Id:
profile?.current_holders?.find(
(x) =>
x.orgRevision?.orgRevisionIsDraft == false &&
x.orgRevision?.orgRevisionIsCurrent == true,
)?.orgChild4Id ?? null,
commander: fullname, commander: fullname,
posLevel: profile.posLevel?.posLevelName ?? null, posLevel: profile.posLevel?.posLevelName ?? null,
posType: profile.posType?.posTypeName ?? null, posType: profile.posType?.posTypeName ?? null,

View file

@ -562,270 +562,274 @@ export class PositionController extends Controller {
@Get("position") @Get("position")
async findPosition(@Query("keyword") keyword?: string, @Query("type") type?: string) { async findPosition(@Query("keyword") keyword?: string, @Query("type") type?: string) {
let findPosDict: any; let findPosDict: any;
if(keyword && keyword?.length > 0){ if (keyword && keyword?.length > 0) {
switch (type) { switch (type) {
case "positionName": case "positionName":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: { posDictName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posDictName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictName: "ASC", posDictName: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posLevel: { });
posLevelRank: "ASC", break;
createdAt: "DESC"
},
posExecutive: {
posExecutivePriority: "ASC"
}
},
});
break;
case "positionField": case "positionField":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: { posDictField: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posDictField: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictField: "ASC", posDictField: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posLevel: { });
posLevelRank: "ASC", break;
createdAt: "DESC"
},
posExecutive: {
posExecutivePriority: "ASC"
}
},
});
break;
case "positionType": case "positionType":
const findTypes: PosType[] = await this.posTypeRepository.find({ const findTypes: PosType[] = await this.posTypeRepository.find({
where: { posTypeName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posTypeName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
order: { order: {
// posTypeName: "ASC" // posTypeName: "ASC"
posTypeRank: "ASC",
createdAt: "DESC"
},
select: ["id"],
});
findPosDict = await this.posDictRepository.find({
where: { posTypeId: In(findTypes.map((x) => x.id)) },
relations: ["posType", "posLevel", "posExecutive"],
order: {
posDictName: "ASC",
createdAt: "DESC",
posType:{
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
}, },
posLevel: { select: ["id"],
posLevelRank: "ASC", });
createdAt: "DESC" findPosDict = await this.posDictRepository.find({
where: { posTypeId: In(findTypes.map((x) => x.id)) },
relations: ["posType", "posLevel", "posExecutive"],
order: {
posDictName: "ASC",
createdAt: "DESC",
posType: {
posTypeRank: "ASC",
createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posExecutive: { });
posExecutivePriority: "ASC" break;
}
},
});
break;
case "positionLevel": case "positionLevel":
const findLevel: PosLevel[] = await this.posLevelRepository.find({ const findLevel: PosLevel[] = await this.posLevelRepository.find({
where: { posLevelName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posLevelName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
order: { order: {
// posLevelName: "ASC" // posLevelName: "ASC"
posLevelRank: "ASC",
createdAt: "DESC"
},
select: ["id"],
});
findPosDict = await this.posDictRepository.find({
where: { posLevelId: In(findLevel.map((x) => x.id)) },
relations: ["posType", "posLevel", "posExecutive"],
order: {
posDictName: "ASC",
createdAt: "DESC",
posType:{
posTypeRank: "ASC",
createdAt: "DESC"
},
posLevel: {
posLevelRank: "ASC", posLevelRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
}, },
posExecutive: { select: ["id"],
posExecutivePriority: "ASC" });
} findPosDict = await this.posDictRepository.find({
}, where: { posLevelId: In(findLevel.map((x) => x.id)) },
}); relations: ["posType", "posLevel", "posExecutive"],
break; order: {
posDictName: "ASC",
createdAt: "DESC",
posType: {
posTypeRank: "ASC",
createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
},
});
break;
case "positionExecutive": case "positionExecutive":
const findExecutive: PosExecutive[] = await this.posExecutiveRepository.find({ const findExecutive: PosExecutive[] = await this.posExecutiveRepository.find({
where: { posExecutiveName: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: {
select: ["id"], posExecutiveName: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1",
});
findPosDict = await this.posDictRepository.find({
where: { posExecutiveId: In(findExecutive.map((x) => x.id)) },
relations: ["posType", "posLevel", "posExecutive"],
order: {
posDictName: "ASC",
createdAt: "DESC",
posType:{
posTypeRank: "ASC",
createdAt: "DESC"
}, },
posLevel: { select: ["id"],
posLevelRank: "ASC", });
createdAt: "DESC" findPosDict = await this.posDictRepository.find({
where: { posExecutiveId: In(findExecutive.map((x) => x.id)) },
relations: ["posType", "posLevel", "posExecutive"],
order: {
posDictName: "ASC",
createdAt: "DESC",
posType: {
posTypeRank: "ASC",
createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posExecutive: { });
posExecutivePriority: "ASC" break;
}
},
});
break;
case "positionExecutiveField": case "positionExecutiveField":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: { posDictExecutiveField: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: {
relations: ["posType", "posLevel", "posExecutive"], posDictExecutiveField: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1",
order: {
posDictName: "ASC",
createdAt: "DESC",
posType:{
posTypeRank: "ASC",
createdAt: "DESC"
}, },
posLevel: { relations: ["posType", "posLevel", "posExecutive"],
posLevelRank: "ASC", order: {
createdAt: "DESC" posDictName: "ASC",
createdAt: "DESC",
posType: {
posTypeRank: "ASC",
createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posExecutive: { });
posExecutivePriority: "ASC" break;
}
},
});
break;
case "positionArea": case "positionArea":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: { posDictArea: keyword && keyword.length > 0?Like(`%${keyword}%`):"1=1" }, where: { posDictArea: keyword && keyword.length > 0 ? Like(`%${keyword}%`) : "1=1" },
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictName: "ASC", posDictName: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posLevel: { });
posLevelRank: "ASC", break;
createdAt: "DESC"
},
posExecutive: {
posExecutivePriority: "ASC"
}
},
});
break;
case "ALL": case "ALL":
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
where: [ where: [
{ posDictName: Like(`%${keyword}%`) }, { posDictName: Like(`%${keyword}%`) },
{ posDictField: Like(`%${keyword}%`) }, { posDictField: Like(`%${keyword}%`) },
{ {
posTypeId: In( posTypeId: In(
await this.posTypeRepository await this.posTypeRepository
.find({ where: { posTypeName: Like(`%${keyword}%`) }, select: ["id"] }) .find({ where: { posTypeName: Like(`%${keyword}%`) }, select: ["id"] })
.then((types) => types.map((type) => type.id)), .then((types) => types.map((type) => type.id)),
), ),
},
{
posLevelId: In(
await this.posLevelRepository
.find({ where: { posLevelName: Like(`%${keyword}%`) }, select: ["id"] })
.then((levels) => levels.map((level) => level.id)),
),
},
{
posExecutiveId: In(
await this.posExecutiveRepository
.find({ where: { posExecutiveName: Like(`%${keyword}%`) }, select: ["id"] })
.then((executives) => executives.map((exec) => exec.id)),
),
},
{ posDictExecutiveField: Like(`%${keyword}%`) },
{ posDictArea: Like(`%${keyword}%`) },
],
relations: ["posType", "posLevel", "posExecutive"],
order: {
posDictName: "ASC",
createdAt: "DESC",
posType: {
posTypeRank: "ASC",
createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
{ });
posLevelId: In( break;
await this.posLevelRepository
.find({ where: { posLevelName: Like(`%${keyword}%`) }, select: ["id"] })
.then((levels) => levels.map((level) => level.id)),
),
},
{
posExecutiveId: In(
await this.posExecutiveRepository
.find({ where: { posExecutiveName: Like(`%${keyword}%`) }, select: ["id"] })
.then((executives) => executives.map((exec) => exec.id)),
),
},
{ posDictExecutiveField: Like(`%${keyword}%`) },
{ posDictArea: Like(`%${keyword}%`) },
],
relations: ["posType", "posLevel", "posExecutive"],
order: {
posDictName: "ASC",
createdAt: "DESC",
posType:{
posTypeRank: "ASC",
createdAt: "DESC"
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC"
},
posExecutive: {
posExecutivePriority: "ASC"
}
},
});
break;
default: default:
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictName: "ASC", posDictName: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
},
posLevel: {
posLevelRank: "ASC",
createdAt: "DESC",
},
posExecutive: {
posExecutivePriority: "ASC",
},
}, },
posLevel: { });
posLevelRank: "ASC", break;
createdAt: "DESC"
},
posExecutive: {
posExecutivePriority: "ASC"
}
},
});
break;
} }
}else{ } else {
findPosDict = await this.posDictRepository.find({ findPosDict = await this.posDictRepository.find({
relations: ["posType", "posLevel", "posExecutive"], relations: ["posType", "posLevel", "posExecutive"],
order: { order: {
posDictName: "ASC", posDictName: "ASC",
createdAt: "DESC", createdAt: "DESC",
posType:{ posType: {
posTypeRank: "ASC", posTypeRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
}, },
posLevel: { posLevel: {
posLevelRank: "ASC", posLevelRank: "ASC",
createdAt: "DESC" createdAt: "DESC",
}, },
posExecutive: { posExecutive: {
posExecutivePriority: "ASC" posExecutivePriority: "ASC",
} },
}, },
}); });
} }
@ -4970,53 +4974,53 @@ export class PositionController extends Controller {
.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 null` : `posMaster.orgChild1Id is 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) => {
@ -5027,10 +5031,10 @@ export class PositionController extends Controller {
: `CASE WHEN posMaster.orgChild1 is null THEN ${searchShortName0} WHEN posMaster.orgChild2 is null THEN ${searchShortName1} WHEN posMaster.orgChild3 is null THEN ${searchShortName2} WHEN posMaster.orgChild4 is null THEN ${searchShortName3} ELSE ${searchShortName4} END LIKE '%${body.keyword}%'` : `CASE WHEN posMaster.orgChild1 is null THEN ${searchShortName0} WHEN posMaster.orgChild2 is null THEN ${searchShortName1} WHEN posMaster.orgChild3 is null THEN ${searchShortName2} WHEN posMaster.orgChild4 is null THEN ${searchShortName3} ELSE ${searchShortName4} END LIKE '%${body.keyword}%'`
: "1=1", : "1=1",
) )
.andWhere(checkChildConditions) .andWhere(checkChildConditions)
.andWhere(typeCondition) .andWhere(typeCondition)
.andWhere(revisionCondition) .andWhere(revisionCondition)
.andWhere({ current_holderId: IsNull() }); .andWhere({ current_holderId: IsNull() });
}), }),
) )
.orderBy("posMaster.posMasterOrder", "ASC") .orderBy("posMaster.posMasterOrder", "ASC")
@ -5075,7 +5079,8 @@ export class PositionController extends Controller {
}, },
relations: ["posLevel", "posType", "posExecutive"], relations: ["posLevel", "posType", "posExecutive"],
order: { order: {
createdAt: "ASC", posType: { posTypeRank: "ASC" },
posLevel: { posLevelRank: "ASC" },
}, },
}); });
let shortName = ""; let shortName = "";

View file

@ -2007,9 +2007,7 @@ export class ProfileController extends Controller {
process.env.AUTH_ACCOUNT_SECRET, process.env.AUTH_ACCOUNT_SECRET,
{ expiresIn: "15m" }, { expiresIn: "15m" },
); );
// console.log("[token]",token);
const link = process.env.URL + "/verifyemail?upn=" + token; const link = process.env.URL + "/verifyemail?upn=" + token;
// console.log("[link]",link);
await new CallAPI() await new CallAPI()
.PostData(req, "/placement/noti/send-mail", { .PostData(req, "/placement/noti/send-mail", {
@ -3964,6 +3962,28 @@ export class ProfileController extends Controller {
return new HttpSuccess({ data: data, total }); return new HttpSuccess({ data: data, total });
} }
/**
* API Update amount
*
* @summary Update amount (ADMIN)
*
*/
@Get("update-amount")
async updateProfileAmount(@Request() request: RequestWithUser) {
const profiles = await this.profileRepo.find({
order: { profileSalary: { order: "DESC" } },
relations: ["profileSalary"],
});
profiles.map(async (x) => {
const amount = x.profileSalary[0];
x.amount = amount?.amount ?? 0;
x.amountSpecial = amount?.amountSpecial ?? 0;
x.positionSalaryAmount = amount?.positionSalaryAmount ?? 0;
await this.profileRepo.save(x);
});
return new HttpSuccess();
}
/** /**
* API * API
* *
@ -8274,7 +8294,6 @@ export class ProfileController extends Controller {
receiverUserId: x.id, receiverUserId: x.id,
notiLink: "", notiLink: "",
})); }));
console.log(profileNoti);
await new CallAPI() await new CallAPI()
.PostData(req, "/placement/noti/profiles", { .PostData(req, "/placement/noti/profiles", {
subject: body.subject, subject: body.subject,

View file

@ -1309,6 +1309,28 @@ export class ProfileEmployeeController extends Controller {
return new HttpSuccess(formattedData); return new HttpSuccess(formattedData);
} }
/**
* API Update amount
*
* @summary Update amount (ADMIN)
*
*/
@Get("update-amount")
async updateProfileAmount(@Request() request: RequestWithUser) {
const profiles = await this.profileRepo.find({
order: { profileSalary: { order: "DESC" } },
relations: ["profileSalary"],
});
profiles.map(async (x) => {
const amount = x.profileSalary[0];
x.amount = amount?.amount ?? 0;
x.amountSpecial = amount?.amountSpecial ?? 0;
x.positionSalaryAmount = amount?.positionSalaryAmount ?? 0;
await this.profileRepo.save(x);
});
return new HttpSuccess();
}
/** /**
* API * API
* *

View file

@ -107,6 +107,14 @@ export class KeycloakController extends Controller {
} }
const list = await getRoles(); const list = await getRoles();
if (!Array.isArray(list)) throw new Error("Failed. Cannot get role(s) data from the server."); if (!Array.isArray(list)) throw new Error("Failed. Cannot get role(s) data from the server.");
const result = await addUserRoles(
userId,
list.filter((v) => body.roles.includes(v.id)),
);
if (!result) {
throw new Error("Failed. Cannot set user's role.");
}
const profile = await this.profileRepo.findOne({ const profile = await this.profileRepo.findOne({
where: { where: {
id: body.profileId, id: body.profileId,

View file

@ -817,7 +817,7 @@ export class WorkflowController extends Controller {
orgRootId: posMasterUser.orgRootId, orgRootId: posMasterUser.orgRootId,
}; };
if (type.trim().toLowerCase() == "OPERATE") { if (type.trim().toUpperCase() == "OPERATE") {
} else { } else {
if ( if (
(posMasterUser.current_holder.posType.posTypeName == "ทั่วไป" && (posMasterUser.current_holder.posType.posTypeName == "ทั่วไป" &&