fixed PermissionDelete to PermissionUpdate ในส่วนของลบคนครองและสืบทอดตำแหน่ง
All checks were successful
Build & Deploy on Dev / build (push) Successful in 1m0s

This commit is contained in:
Warunee Tamkoo 2026-05-11 17:17:49 +07:00
parent 7e4dc6434f
commit bf0dbdf018
3 changed files with 130 additions and 117 deletions

View file

@ -1190,8 +1190,8 @@ export class EmployeePositionController extends Controller {
_data.child1 != undefined && _data.child1 != null
? _data.child1[0] != null
? `posMaster.orgChild1Id IN (:...child1)`
// : `posMaster.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}`
: `posMaster.orgChild1Id is null`
: // : `posMaster.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}`
`posMaster.orgChild1Id is null`
: "1=1",
{
child1: _data.child1,
@ -1226,23 +1226,24 @@ export class EmployeePositionController extends Controller {
{
child4: _data.child4,
},
)
);
if (body.keyword != null && body.keyword != "") {
query.orWhere(
new Brackets((qb) => {
qb.andWhere(
body.keyword != null && body.keyword != ""
? body.isAll == false
? searchShortName
: `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",
)
.andWhere(checkChildConditions)
.andWhere(typeCondition)
.andWhere(revisionCondition);
}),
)
query
.orWhere(
new Brackets((qb) => {
qb.andWhere(
body.keyword != null && body.keyword != ""
? body.isAll == false
? searchShortName
: `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",
)
.andWhere(checkChildConditions)
.andWhere(typeCondition)
.andWhere(revisionCondition);
}),
)
.orWhere(
new Brackets((qb) => {
qb.andWhere(
@ -1287,7 +1288,7 @@ export class EmployeePositionController extends Controller {
.andWhere(typeCondition)
.andWhere(revisionCondition);
}),
)
);
}
let [posMaster, total] = await query
@ -1706,50 +1707,50 @@ export class EmployeePositionController extends Controller {
const type0LastPosMasterNo =
requestBody.type == 0
? await this.employeePosMasterRepository.find({
where: {
orgRootId: requestBody.id,
orgChild1Id: IsNull(),
},
})
where: {
orgRootId: requestBody.id,
orgChild1Id: IsNull(),
},
})
: [];
const type1LastPosMasterNo =
requestBody.type == 1
? await this.employeePosMasterRepository.find({
where: {
orgChild1Id: requestBody.id,
orgChild2Id: IsNull(),
},
})
where: {
orgChild1Id: requestBody.id,
orgChild2Id: IsNull(),
},
})
: [];
const type2LastPosMasterNo =
requestBody.type == 2
? await this.employeePosMasterRepository.find({
where: {
orgChild2Id: requestBody.id,
orgChild3Id: IsNull(),
},
})
where: {
orgChild2Id: requestBody.id,
orgChild3Id: IsNull(),
},
})
: [];
const type3LastPosMasterNo =
requestBody.type == 3
? await this.employeePosMasterRepository.find({
where: {
orgChild3Id: requestBody.id,
orgChild4Id: IsNull(),
},
})
where: {
orgChild3Id: requestBody.id,
orgChild4Id: IsNull(),
},
})
: [];
const type4LastPosMasterNo =
requestBody.type == 4
? await this.employeePosMasterRepository.find({
where: {
orgChild4Id: requestBody.id,
},
})
where: {
orgChild4Id: requestBody.id,
},
})
: [];
const allLastPosMasterNo = [
@ -2413,7 +2414,7 @@ export class EmployeePositionController extends Controller {
*/
@Post("profile/delete/{id}")
async deleteEmpHolder(@Path() id: string, @Request() request: RequestWithUser) {
await new permission().PermissionDelete(request, "SYS_ORG_EMP");
await new permission().PermissionUpdate(request, "SYS_ORG_EMP");
const dataMaster = await this.employeePosMasterRepository.findOne({
where: { id: id },
relations: ["positions", "orgRevision"],
@ -2472,7 +2473,7 @@ export class EmployeePositionController extends Controller {
@Body() requestBody: { draftPositionId: string; publishPositionId: string },
@Request() request: RequestWithUser,
) {
await new permission().PermissionDelete(request, "SYS_ORG_EMP");
await new permission().PermissionUpdate(request, "SYS_ORG_EMP");
const findDraft = await this.orgRevisionRepository.findOne({
where: {
orgRevisionIsDraft: true,

View file

@ -908,8 +908,8 @@ export class EmployeeTempPositionController extends Controller {
_data.child1 != undefined && _data.child1 != null
? _data.child1[0] != null
? `posMaster.orgChild1Id IN (:...child1)`
// : `posMaster.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}`
: `posMaster.orgChild1Id is null`
: // : `posMaster.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}`
`posMaster.orgChild1Id is null`
: "1=1",
{
child1: _data.child1,
@ -944,23 +944,24 @@ export class EmployeeTempPositionController extends Controller {
{
child4: _data.child4,
},
)
);
if (body.keyword != null && body.keyword != "") {
query.orWhere(
new Brackets((qb) => {
qb.andWhere(
body.keyword != null && body.keyword != ""
? body.isAll == false
? searchShortName
: `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",
)
.andWhere(checkChildConditions)
.andWhere(typeCondition)
.andWhere(revisionCondition);
}),
)
query
.orWhere(
new Brackets((qb) => {
qb.andWhere(
body.keyword != null && body.keyword != ""
? body.isAll == false
? searchShortName
: `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",
)
.andWhere(checkChildConditions)
.andWhere(typeCondition)
.andWhere(revisionCondition);
}),
)
.orWhere(
new Brackets((qb) => {
qb.andWhere(
@ -1005,7 +1006,7 @@ export class EmployeeTempPositionController extends Controller {
.andWhere(typeCondition)
.andWhere(revisionCondition);
}),
)
);
}
let [posMaster, total] = await query
@ -1421,50 +1422,50 @@ export class EmployeeTempPositionController extends Controller {
const type0LastPosMasterNo =
requestBody.type == 0
? await this.employeeTempPosMasterRepository.find({
where: {
orgRootId: requestBody.id,
orgChild1Id: IsNull(),
},
})
where: {
orgRootId: requestBody.id,
orgChild1Id: IsNull(),
},
})
: [];
const type1LastPosMasterNo =
requestBody.type == 1
? await this.employeeTempPosMasterRepository.find({
where: {
orgChild1Id: requestBody.id,
orgChild2Id: IsNull(),
},
})
where: {
orgChild1Id: requestBody.id,
orgChild2Id: IsNull(),
},
})
: [];
const type2LastPosMasterNo =
requestBody.type == 2
? await this.employeeTempPosMasterRepository.find({
where: {
orgChild2Id: requestBody.id,
orgChild3Id: IsNull(),
},
})
where: {
orgChild2Id: requestBody.id,
orgChild3Id: IsNull(),
},
})
: [];
const type3LastPosMasterNo =
requestBody.type == 3
? await this.employeeTempPosMasterRepository.find({
where: {
orgChild3Id: requestBody.id,
orgChild4Id: IsNull(),
},
})
where: {
orgChild3Id: requestBody.id,
orgChild4Id: IsNull(),
},
})
: [];
const type4LastPosMasterNo =
requestBody.type == 4
? await this.employeeTempPosMasterRepository.find({
where: {
orgChild4Id: requestBody.id,
},
})
where: {
orgChild4Id: requestBody.id,
},
})
: [];
const allLastPosMasterNo = [
@ -2118,7 +2119,7 @@ export class EmployeeTempPositionController extends Controller {
*/
@Post("profile/delete/{id}")
async deleteEmpHolder(@Path() id: string, @Request() request: RequestWithUser) {
await new permission().PermissionDelete(request, "SYS_ORG_TEMP");
await new permission().PermissionUpdate(request, "SYS_ORG_TEMP");
const dataMaster = await this.employeeTempPosMasterRepository.findOne({
where: { id: id },
relations: ["positions", "orgRevision"],
@ -2179,7 +2180,7 @@ export class EmployeeTempPositionController extends Controller {
@Body() requestBody: { draftPositionId: string; publishPositionId: string },
@Request() request: RequestWithUser,
) {
await new permission().PermissionDelete(request, "SYS_ORG_TEMP");
await new permission().PermissionUpdate(request, "SYS_ORG_TEMP");
const findDraft = await this.orgRevisionRepository.findOne({
where: {
orgRevisionIsDraft: true,

View file

@ -2421,7 +2421,7 @@ export class PositionController extends Controller {
? _data.child1[0] != null
? "posMaster.orgChild1Id IN (:...child1)"
: // : `posMaster.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}`
`posMaster.orgChild1Id is null`
`posMaster.orgChild1Id is null`
: "1=1",
{ child1: _data.child1 },
)
@ -2983,50 +2983,50 @@ export class PositionController extends Controller {
const type0LastPosMasterNo =
requestBody.type == 0
? await this.posMasterRepository.find({
where: {
orgRootId: requestBody.id,
orgChild1Id: IsNull(),
},
})
where: {
orgRootId: requestBody.id,
orgChild1Id: IsNull(),
},
})
: [];
const type1LastPosMasterNo =
requestBody.type == 1
? await this.posMasterRepository.find({
where: {
orgChild1Id: requestBody.id,
orgChild2Id: IsNull(),
},
})
where: {
orgChild1Id: requestBody.id,
orgChild2Id: IsNull(),
},
})
: [];
const type2LastPosMasterNo =
requestBody.type == 2
? await this.posMasterRepository.find({
where: {
orgChild2Id: requestBody.id,
orgChild3Id: IsNull(),
},
})
where: {
orgChild2Id: requestBody.id,
orgChild3Id: IsNull(),
},
})
: [];
const type3LastPosMasterNo =
requestBody.type == 3
? await this.posMasterRepository.find({
where: {
orgChild3Id: requestBody.id,
orgChild4Id: IsNull(),
},
})
where: {
orgChild3Id: requestBody.id,
orgChild4Id: IsNull(),
},
})
: [];
const type4LastPosMasterNo =
requestBody.type == 4
? await this.posMasterRepository.find({
where: {
orgChild4Id: requestBody.id,
},
})
where: {
orgChild4Id: requestBody.id,
},
})
: [];
const allLastPosMasterNo = [
@ -3364,7 +3364,15 @@ export class PositionController extends Controller {
if (orgRevision?.orgRevisionIsCurrent) {
const pmWithOrg = await this.posMasterRepository.findOne({
where: { id: posMaster.id },
relations: ["orgRoot", "orgChild1", "orgChild2", "orgChild3", "orgChild4", "positions", "positions.posExecutive"],
relations: [
"orgRoot",
"orgChild1",
"orgChild2",
"orgChild3",
"orgChild4",
"positions",
"positions.posExecutive",
],
});
const _profile = await this.profileRepository.findOne({
where: { id: posMaster.current_holderId },
@ -3375,13 +3383,16 @@ export class PositionController extends Controller {
_profile.org = getOrgFullName(pmWithOrg) ?? _null;
// ถ้าไม่ใช่ตำแหน่งนั่งทับ (isSit = false) ถึงจะอัพเดทตำแหน่งในทะเบียนประวัติ
if (!pmWithOrg.isSit) {
const selectedPos = (pmWithOrg as any).positions?.find((p: any) => p.positionIsSelected === true);
const selectedPos = (pmWithOrg as any).positions?.find(
(p: any) => p.positionIsSelected === true,
);
if (selectedPos) {
_profile.position = selectedPos.positionName ?? _null;
_profile.posTypeId = selectedPos.posTypeId ?? _null;
_profile.posLevelId = selectedPos.posLevelId ?? _null;
_profile.positionField = selectedPos.positionField ?? _null;
_profile.posExecutive = (selectedPos as any).posExecutive?.posExecutiveName ?? _null;
_profile.posExecutive =
(selectedPos as any).posExecutive?.posExecutiveName ?? _null;
_profile.positionArea = selectedPos.positionArea ?? _null;
_profile.positionExecutiveField = selectedPos.positionExecutiveField ?? _null;
}
@ -3932,7 +3943,7 @@ export class PositionController extends Controller {
*/
@Post("profile/delete/{id}")
async deleteHolder(@Path() id: string, @Request() request: RequestWithUser) {
await new permission().PermissionDelete(request, "SYS_ORG");
await new permission().PermissionUpdate(request, "SYS_ORG");
const dataMaster = await this.posMasterRepository.findOne({
where: { id: id },
relations: ["positions", "orgRevision"],