add permission brother

This commit is contained in:
kittapath 2025-12-12 01:38:57 +07:00
parent 43aeb144d4
commit c73fe877a0
3 changed files with 184 additions and 172 deletions

View file

@ -66,7 +66,7 @@ export class KpiUserDevelopmentController extends Controller {
}
const chkName = await this.kpiUserDevelopmentRepository.findOne({
where: {
where: {
kpiUserEvaluationId: requestBody.kpiUserEvaluationId,
name: requestBody.name,
},
@ -393,7 +393,7 @@ export class KpiUserDevelopmentController extends Controller {
_data.child1 != undefined && _data.child1 != null
? _data.child1[0] != null
? `kpiUserEvaluation.child1DnaId IN (:...child1)`
: `kpiUserEvaluation.child1DnaId is null`
: `kpiUserEvaluation.child1DnaId is ${_data.privilege == "PARENT" ? "not null" : "null"}`
: "1=1",
{
child1: _data.child1,
@ -458,66 +458,69 @@ export class KpiUserDevelopmentController extends Controller {
.orWhere("kpiUserDevelopment.name LIKE :keyword", {
keyword: `%${requestBody.keyword}%`,
})
.orWhere( "kpiUserEvaluation.org LIKE :keyword", {
.orWhere("kpiUserEvaluation.org LIKE :keyword", {
keyword: `%${requestBody.keyword}%`,
})
.orWhere( "CONCAT(kpiUserEvaluation.child1,' ', kpiUserEvaluation.org) LIKE :keyword", {
keyword: `%${requestBody.keyword}%`,
})
.orWhere( "CONCAT(kpiUserEvaluation.child2,' ', kpiUserEvaluation.child1,' ', kpiUserEvaluation.org) LIKE :keyword", {
keyword: `%${requestBody.keyword}%`,
})
.orWhere( "CONCAT(kpiUserEvaluation.child3,' ', kpiUserEvaluation.child2,' ', kpiUserEvaluation.child1,' ', kpiUserEvaluation.org) LIKE :keyword", {
keyword: `%${requestBody.keyword}%`,
})
.orWhere( "CONCAT(kpiUserEvaluation.child4,' ', kpiUserEvaluation.child3,' ', kpiUserEvaluation.child2,' ', kpiUserEvaluation.child1,' ', kpiUserEvaluation.org) LIKE :keyword", {
.orWhere("CONCAT(kpiUserEvaluation.child1,' ', kpiUserEvaluation.org) LIKE :keyword", {
keyword: `%${requestBody.keyword}%`,
})
.orWhere(
"CONCAT(kpiUserEvaluation.child2,' ', kpiUserEvaluation.child1,' ', kpiUserEvaluation.org) LIKE :keyword",
{
keyword: `%${requestBody.keyword}%`,
},
)
.orWhere(
"CONCAT(kpiUserEvaluation.child3,' ', kpiUserEvaluation.child2,' ', kpiUserEvaluation.child1,' ', kpiUserEvaluation.org) LIKE :keyword",
{
keyword: `%${requestBody.keyword}%`,
},
)
.orWhere(
"CONCAT(kpiUserEvaluation.child4,' ', kpiUserEvaluation.child3,' ', kpiUserEvaluation.child2,' ', kpiUserEvaluation.child1,' ', kpiUserEvaluation.org) LIKE :keyword",
{
keyword: `%${requestBody.keyword}%`,
},
)
.orWhere(conditionFullName, {
keyword: `%${requestBody.keyword}%`,
});
}),
)
);
if (requestBody.sortBy) {
if(requestBody.sortBy === "developmentName"){
query = query.orderBy(
`kpiUserDevelopment.name`,
requestBody.descending ? "DESC" : "ASC"
);
}else if (requestBody.sortBy === "organization"){
query = query
if (requestBody.sortBy) {
if (requestBody.sortBy === "developmentName") {
query = query.orderBy(`kpiUserDevelopment.name`, requestBody.descending ? "DESC" : "ASC");
} else if (requestBody.sortBy === "organization") {
query = query
.orderBy(`kpiUserEvaluation.child4`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child3`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child2`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child1`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.org`, requestBody.descending ? "DESC" : "ASC");
}else if(requestBody.sortBy === "firstname"){
query = query.orderBy(
`kpiUserEvaluation.firstName`,
requestBody.descending ? "DESC" : "ASC"
);
}else if(requestBody.sortBy === "lastname"){
query = query.orderBy(
`kpiUserEvaluation.lastName`,
requestBody.descending ? "DESC" : "ASC"
);
}else if(requestBody.sortBy === "root"){
query = query.orderBy(
`kpiUserEvaluation.org`,
requestBody.descending ? "DESC" : "ASC"
);
}else{
query = query.orderBy(
`kpiUserEvaluation.${requestBody.sortBy}`,
requestBody.descending ? "DESC" : "ASC"
);
}
}else{
query = query.orderBy("kpiUserDevelopment.createdAt", "ASC")
} else if (requestBody.sortBy === "firstname") {
query = query.orderBy(
`kpiUserEvaluation.firstName`,
requestBody.descending ? "DESC" : "ASC",
);
} else if (requestBody.sortBy === "lastname") {
query = query.orderBy(
`kpiUserEvaluation.lastName`,
requestBody.descending ? "DESC" : "ASC",
);
} else if (requestBody.sortBy === "root") {
query = query.orderBy(`kpiUserEvaluation.org`, requestBody.descending ? "DESC" : "ASC");
} else {
query = query.orderBy(
`kpiUserEvaluation.${requestBody.sortBy}`,
requestBody.descending ? "DESC" : "ASC",
);
}
} else {
query = query.orderBy("kpiUserDevelopment.createdAt", "ASC");
}
const [kpiUserDevelopment, total] = await query
const [kpiUserDevelopment, total] = await query
.skip((requestBody.page - 1) * requestBody.pageSize)
.take(requestBody.pageSize)
.getManyAndCount();

View file

@ -186,16 +186,16 @@ export class KpiUserEvaluationController extends Controller {
// });
}),
)
.orderBy("kpiUserEvaluation.createdAt", "DESC")
.orderBy("kpiUserEvaluation.createdAt", "DESC");
if (requestBody.sortBy) {
query = query.orderBy(
`kpiUserEvaluation.${requestBody.sortBy}`,
requestBody.descending ? "DESC" : "ASC"
);
}
if (requestBody.sortBy) {
query = query.orderBy(
`kpiUserEvaluation.${requestBody.sortBy}`,
requestBody.descending ? "DESC" : "ASC",
);
}
const [kpiUserEvaluation, total] = await query
const [kpiUserEvaluation, total] = await query
.skip((requestBody.page - 1) * requestBody.pageSize)
.take(requestBody.pageSize)
.getManyAndCount();
@ -271,7 +271,7 @@ export class KpiUserEvaluationController extends Controller {
_data.child1 != undefined && _data.child1 != null
? _data.child1[0] != null
? `kpiUserEvaluation.child1DnaId IN (:...child1)`
: `kpiUserEvaluation.child1DnaId is null`
: `kpiUserEvaluation.child1DnaId is ${_data.privilege == "PARENT" ? "not null" : "null"}`
: "1=1",
{
child1: _data.child1,
@ -386,30 +386,27 @@ export class KpiUserEvaluationController extends Controller {
keyword: `%${requestBody.keyword}%`,
});
}),
)
);
if (requestBody.sortBy) {
if(requestBody.sortBy === "root"){
query = query.orderBy(
`kpiUserEvaluation.org`,
requestBody.descending ? "DESC" : "ASC"
);
}else if(requestBody.sortBy === "organization"){
query = query
.orderBy(`kpiUserEvaluation.child4`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child3`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child2`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child1`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.org`, requestBody.descending ? "DESC" : "ASC");
}else{
query = query.orderBy(
`kpiUserEvaluation.${requestBody.sortBy}`,
requestBody.descending ? "DESC" : "ASC"
);
}
}else{
query = query.orderBy("kpiUserEvaluation.createdAt", "DESC")
if (requestBody.sortBy) {
if (requestBody.sortBy === "root") {
query = query.orderBy(`kpiUserEvaluation.org`, requestBody.descending ? "DESC" : "ASC");
} else if (requestBody.sortBy === "organization") {
query = query
.orderBy(`kpiUserEvaluation.child4`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child3`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child2`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child1`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.org`, requestBody.descending ? "DESC" : "ASC");
} else {
query = query.orderBy(
`kpiUserEvaluation.${requestBody.sortBy}`,
requestBody.descending ? "DESC" : "ASC",
);
}
} else {
query = query.orderBy("kpiUserEvaluation.createdAt", "DESC");
}
const [kpiUserEvaluation, total] = await query
.skip((requestBody.page - 1) * requestBody.pageSize)
@ -556,7 +553,7 @@ export class KpiUserEvaluationController extends Controller {
_data.child1 != undefined && _data.child1 != null
? _data.child1[0] != null
? `kpiUserEvaluation.child1DnaId IN (:...child1)`
: `kpiUserEvaluation.child1DnaId is null`
: `kpiUserEvaluation.child1DnaId is ${_data.privilege == "PARENT" ? "not null" : "null"}`
: "1=1",
{
child1: _data.child1,
@ -591,31 +588,29 @@ export class KpiUserEvaluationController extends Controller {
{
child4: _data.child4,
},
)
);
if (requestBody.sortBy) {
if(requestBody.sortBy === "root"){
query = query.orderBy(
`kpiUserEvaluation.org`,
requestBody.descending ? "DESC" : "ASC"
);
}else if(requestBody.sortBy === "organization"){
query = query
.orderBy(`kpiUserEvaluation.child4`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child3`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child2`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child1`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.org`, requestBody.descending ? "DESC" : "ASC");
}else{
query = query.orderBy(
`kpiUserEvaluation.${requestBody.sortBy}`,
requestBody.descending ? "DESC" : "ASC"
);
}
}else{
query = query.orderBy("kpiPeriod.year", "DESC")
.addOrderBy("kpiUserEvaluation.createdAt", "DESC")
if (requestBody.sortBy) {
if (requestBody.sortBy === "root") {
query = query.orderBy(`kpiUserEvaluation.org`, requestBody.descending ? "DESC" : "ASC");
} else if (requestBody.sortBy === "organization") {
query = query
.orderBy(`kpiUserEvaluation.child4`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child3`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child2`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.child1`, requestBody.descending ? "DESC" : "ASC")
.addOrderBy(`kpiUserEvaluation.org`, requestBody.descending ? "DESC" : "ASC");
} else {
query = query.orderBy(
`kpiUserEvaluation.${requestBody.sortBy}`,
requestBody.descending ? "DESC" : "ASC",
);
}
} else {
query = query
.orderBy("kpiPeriod.year", "DESC")
.addOrderBy("kpiUserEvaluation.createdAt", "DESC");
}
const [kpiUserEvaluation, total] = await query
.skip((requestBody.page - 1) * requestBody.pageSize)
@ -667,10 +662,12 @@ export class KpiUserEvaluationController extends Controller {
@Body() requestBody: createKpiUserEvaluation,
@Request() request: RequestWithUser,
) {
if(requestBody.evaluatorId == requestBody.commanderId ||
requestBody.commanderId == requestBody.commanderHighId ||
requestBody.evaluatorId == requestBody.commanderHighId){
throw new HttpError(
if (
requestBody.evaluatorId == requestBody.commanderId ||
requestBody.commanderId == requestBody.commanderHighId ||
requestBody.evaluatorId == requestBody.commanderHighId
) {
throw new HttpError(
HttpStatusCode.NOT_FOUND,
"ไม่สามารถเลือกผู้ประเมินหรือผู้บังคับบัญชาซ้ำกันได้",
);
@ -1345,7 +1342,7 @@ export class KpiUserEvaluationController extends Controller {
@Body() requestBody: { reason: string; actor: string },
@Request() request: RequestWithUser,
) {
try{
try {
const kpiUserEvaluation = await this.kpiUserEvalutionRepository.findOne({
where: { id: id },
});
@ -1590,23 +1587,17 @@ export class KpiUserEvaluationController extends Controller {
evaluationResults: results == undefined ? "" : results.trim().toUpperCase(),
},
)
.orderBy("kpiUserEvaluation.createdAt", "DESC")
.orderBy("kpiUserEvaluation.createdAt", "DESC");
if (sortBy) {
if (["year", "durationKPI"].includes(sortBy)) {
query = query.orderBy(
`kpiPeriod.${sortBy}`,
descending ? "DESC" : "ASC"
);
} else {
query = query.orderBy(
`kpiUserEvaluation.${sortBy}`,
descending ? "DESC" : "ASC"
);
}
if (sortBy) {
if (["year", "durationKPI"].includes(sortBy)) {
query = query.orderBy(`kpiPeriod.${sortBy}`, descending ? "DESC" : "ASC");
} else {
query = query.orderBy(`kpiUserEvaluation.${sortBy}`, descending ? "DESC" : "ASC");
}
}
const [kpiUserEvaluation, total] = await query
const [kpiUserEvaluation, total] = await query
.skip((page - 1) * pageSize)
.take(pageSize)
.getManyAndCount();
@ -1905,23 +1896,23 @@ export class KpiUserEvaluationController extends Controller {
} else {
item.evaluationReqEdit = requestBody.status.trim().toUpperCase();
item.evaluationStatus = "NEW";
await new CallAPI()
.PostData(request, "/placement/noti/profiles", {
subject: `คำขอแก้ไขข้อตกลงการประเมินผลการปฏิบัติราชการระดับบุคคลได้รับการพิจารณาแล้ว`,
body: `คำขอแก้ไขข้อตกลงการประเมินผลการปฏิบัติราชการระดับบุคคลได้รับการพิจารณาแล้ว`,
receiverUserIds: [
{
receiverUserId: item.profileId,
notiLink: `${process.env.VITE_URL_USER}/KPI-evaluator/${item.id}`,
},
],
payload: "",
isSendMail: true,
isSendInbox: true,
isSendNotification: true,
})
.then(() => {})
.catch(() => {});
await new CallAPI()
.PostData(request, "/placement/noti/profiles", {
subject: `คำขอแก้ไขข้อตกลงการประเมินผลการปฏิบัติราชการระดับบุคคลได้รับการพิจารณาแล้ว`,
body: `คำขอแก้ไขข้อตกลงการประเมินผลการปฏิบัติราชการระดับบุคคลได้รับการพิจารณาแล้ว`,
receiverUserIds: [
{
receiverUserId: item.profileId,
notiLink: `${process.env.VITE_URL_USER}/KPI-evaluator/${item.id}`,
},
],
payload: "",
isSendMail: true,
isSendInbox: true,
isSendNotification: true,
})
.then(() => {})
.catch(() => {});
}
} else {
item.evaluationReqEdit = requestBody.status.trim().toUpperCase();
@ -2305,41 +2296,41 @@ export class KpiUserEvaluationController extends Controller {
}
const _null: any = null;
kpiUserEvaluation.evaluationStatus = "COMPLETE";
await new CallAPI()
if (kpiUserEvaluation.evaluatorId == null) {
await new CallAPI()
.PostData(request, "/placement/noti/keycloak", {
subject: `${kpiUserEvaluation.prefix}${kpiUserEvaluation.firstName} ${kpiUserEvaluation.lastName} ผู้ประเมินได้ให้ความเห็นโดยเห็นสมควรตามผลการประเมิน`,
body: `${kpiUserEvaluation.prefix}${kpiUserEvaluation.firstName} ${kpiUserEvaluation.lastName} ผู้ประเมินได้ให้ความเห็นโดยเห็นสมควรตามผลการประเมิน`,
receiverUserId: "aec26ac3-417c-4cf9-9cbe-874939f99ecc",
payload: "",
isSendMail: true,
isSendInbox: true,
isSendNotification: true,
})
.then(() => {})
.catch(() => {});
kpiUserEvaluation.evaluationStatus = "COMPLETE";
} else {
await new CallAPI()
.PostData(request, "/placement/noti/profile", {
subject: `${kpiUserEvaluation.prefix}${kpiUserEvaluation.firstName} ${kpiUserEvaluation.lastName} ผู้ประเมินได้ให้ความเห็นโดยเห็นสมควรตามผลการประเมิน`,
body: `${kpiUserEvaluation.prefix}${kpiUserEvaluation.firstName} ${kpiUserEvaluation.lastName} ผู้ประเมินได้ให้ความเห็นโดยเห็นสมควรตามผลการประเมิน`,
receiverUserIds: [
{
receiverUserId: kpiUserEvaluation.evaluatorId,
notiLink: `${process.env.VITE_URL_USER}/KPI-evaluator/${kpiUserEvaluation.id}`,
},
],
payload: "",
isSendMail: true,
isSendInbox: true,
isSendNotification: true,
})
.then(() => {})
.catch(() => {});
kpiUserEvaluation.evaluationStatus = "COMPLETE";
}
await new CallAPI();
if (kpiUserEvaluation.evaluatorId == null) {
await new CallAPI()
.PostData(request, "/placement/noti/keycloak", {
subject: `${kpiUserEvaluation.prefix}${kpiUserEvaluation.firstName} ${kpiUserEvaluation.lastName} ผู้ประเมินได้ให้ความเห็นโดยเห็นสมควรตามผลการประเมิน`,
body: `${kpiUserEvaluation.prefix}${kpiUserEvaluation.firstName} ${kpiUserEvaluation.lastName} ผู้ประเมินได้ให้ความเห็นโดยเห็นสมควรตามผลการประเมิน`,
receiverUserId: "aec26ac3-417c-4cf9-9cbe-874939f99ecc",
payload: "",
isSendMail: true,
isSendInbox: true,
isSendNotification: true,
})
.then(() => {})
.catch(() => {});
kpiUserEvaluation.evaluationStatus = "COMPLETE";
} else {
await new CallAPI()
.PostData(request, "/placement/noti/profile", {
subject: `${kpiUserEvaluation.prefix}${kpiUserEvaluation.firstName} ${kpiUserEvaluation.lastName} ผู้ประเมินได้ให้ความเห็นโดยเห็นสมควรตามผลการประเมิน`,
body: `${kpiUserEvaluation.prefix}${kpiUserEvaluation.firstName} ${kpiUserEvaluation.lastName} ผู้ประเมินได้ให้ความเห็นโดยเห็นสมควรตามผลการประเมิน`,
receiverUserIds: [
{
receiverUserId: kpiUserEvaluation.evaluatorId,
notiLink: `${process.env.VITE_URL_USER}/KPI-evaluator/${kpiUserEvaluation.id}`,
},
],
payload: "",
isSendMail: true,
isSendInbox: true,
isSendNotification: true,
})
.then(() => {})
.catch(() => {});
kpiUserEvaluation.evaluationStatus = "COMPLETE";
}
const before = structuredClone(kpiUserEvaluation);
kpiUserEvaluation.reasonReject = _null;

View file

@ -94,6 +94,15 @@ class CheckAuth {
child4: null,
privilege: "ROOT",
};
} else if (privilege == "PARENT") {
data = {
root: [x.orgRootId],
child1: [null],
child2: null,
child3: null,
child4: null,
privilege: "PARENT",
};
} else if (privilege == "CHILD") {
data = {
root: node >= 0 ? [x.orgRootId] : null,
@ -103,6 +112,15 @@ class CheckAuth {
child4: node >= 4 ? [x.orgChild4Id] : null,
privilege: "CHILD",
};
} else if (privilege == "BROTHER") {
data = {
// root: node >= 0 ? [x.orgRootId] : null,
root: node >= 0 ? [x.orgRootId] : null,
child1: node >= 2 ? [x.orgChild1Id] : null,
child2: node >= 3 ? [x.orgChild2Id] : null,
child3: node >= 4 ? [x.orgChild3Id] : null,
privilege: "BROTHER",
};
} else if (privilege == "NORMAL") {
data = {
root: [x.orgRootId],