From bd9c270cd7de29fad9f41fe0a104d4303eac83a3 Mon Sep 17 00:00:00 2001 From: mamoss <> Date: Sat, 29 Nov 2025 14:56:58 +0700 Subject: [PATCH] add role parent --- src/controllers/CommandController.ts | 107 ++++++++-------- .../DevelopmentRequestController.ts | 35 +++--- .../OrganizationDotnetController.ts | 10 ++ src/controllers/ProfileController.ts | 73 ++++++----- src/controllers/ProfileEditController.ts | 39 +++--- .../ProfileEditEmployeeController.ts | 30 ++--- src/controllers/ProfileEmployeeController.ts | 58 +++++---- .../ProfileSalaryTempController.ts | 118 +++++++----------- src/interfaces/permission.ts | 2 +- 9 files changed, 231 insertions(+), 241 deletions(-) diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index b6b5fc7d..cad8dc18 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -215,7 +215,7 @@ export class CommandController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1, @@ -1477,7 +1477,7 @@ export class CommandController extends Controller { } // @Get("XXX") async cronjobUpdateRetirementStatus(/*@Request() request: RequestWithUser*/) { - const adminToken = await getToken() ?? ""; + const adminToken = (await getToken()) ?? ""; const today = new Date(); today.setUTCHours(0, 0, 0, 0); let type: string = "OFFICER"; @@ -1672,7 +1672,7 @@ export class CommandController extends Controller { positionIsSelected: false, lastUpdateFullName: "System Administrator", lastUpdatedAt: _Date, - } + }, ); _posMaster.isSit = false; _posMaster.current_holderId = null; @@ -1702,7 +1702,7 @@ export class CommandController extends Controller { positionIsSelected: false, lastUpdateFullName: "System Administrator", lastUpdatedAt: _Date, - } + }, ); _posMaster.isSit = false; _posMaster.next_holderId = null; @@ -1730,7 +1730,7 @@ export class CommandController extends Controller { positionIsSelected: false, lastUpdateFullName: "System Administrator", lastUpdatedAt: _Date, - } + }, ); _posMaster.isSit = false; _posMaster.current_holderId = null; @@ -1977,62 +1977,68 @@ export class CommandController extends Controller { if (commandCode == "C-PM-21") { profileTemp.position = profile?.positionTemp ?? "-"; profileTemp.posLevel = profile?.posLevelNameTemp ?? "-"; - profileTemp.org = (profile?.child4Temp == null ? "" : profile?.child4Temp + "\n") + + profileTemp.org = + (profile?.child4Temp == null ? "" : profile?.child4Temp + "\n") + (profile?.child3Temp == null ? "" : profile?.child3Temp + "\n") + (profile?.child2Temp == null ? "" : profile?.child2Temp + "\n") + (profile?.child1Temp == null ? "" : profile?.child1Temp + "\n") + - (profile?.rootTemp == null ? "" : profile?.rootTemp) + (profile?.rootTemp == null ? "" : profile?.rootTemp); if (profile?.nodeTemp) { switch (profile?.nodeTemp) { case "4": profileTemp.posNo = `${profile.child4ShortNameTemp} ${profile?.posMasterNoTemp}`; - break + break; case "3": - profileTemp.posNo = `${profile.child3ShortNameTemp} ${profile?.posMasterNoTemp}`; - break + profileTemp.posNo = `${profile.child3ShortNameTemp} ${profile?.posMasterNoTemp}`; + break; case "2": profileTemp.posNo = `${profile.child2ShortNameTemp} ${profile?.posMasterNoTemp}`; - break + break; case "1": - profileTemp.posNo = `${profile.child1ShortNameTemp} ${profile?.posMasterNoTemp}`; - break + profileTemp.posNo = `${profile.child1ShortNameTemp} ${profile?.posMasterNoTemp}`; + break; case "0": - profileTemp.posNo = `${profile.rootShortNameTemp} ${profile?.posMasterNoTemp}`; - break - default: break; + profileTemp.posNo = `${profile.rootShortNameTemp} ${profile?.posMasterNoTemp}`; + break; + default: + break; } } } return { no: Extension.ToThaiNumber((idx + 1).toString()), - org: commandCode != "C-PM-21" - ? profile?.isLeave == false - ? (_child4 == null ? "" : _child4 + "\n") + - (_child3 == null ? "" : _child3 + "\n") + - (_child2 == null ? "" : _child2 + "\n") + - (_child1 == null ? "" : _child1 + "\n") + - (_root == null ? "" : _root) - : orgLeave - : profileTemp.org, + org: + commandCode != "C-PM-21" + ? profile?.isLeave == false + ? (_child4 == null ? "" : _child4 + "\n") + + (_child3 == null ? "" : _child3 + "\n") + + (_child2 == null ? "" : _child2 + "\n") + + (_child1 == null ? "" : _child1 + "\n") + + (_root == null ? "" : _root) + : orgLeave + : profileTemp.org, fullName: `${x.prefix}${x.firstName} ${x.lastName}`, citizenId: Extension.ToThaiNumber(x.citizenId), - position: commandCode != "C-PM-21" - ? profile?.position - ? profile?.position - : "-" - : profileTemp.position, - posLevel: commandCode != "C-PM-21" - ? profile?.posType && profile?.posLevel - ? Extension.ToThaiNumber( - `${profile?.posType.posTypeShortName} ${profile?.posLevel.posLevelName}`, - ) - : "-" - : Extension.ToThaiNumber(profileTemp.posLevel), - posNo: commandCode != "C-PM-21" - ? shortName - ? Extension.ToThaiNumber(shortName) - : "-" - : Extension.ToThaiNumber(profileTemp.posNo), + position: + commandCode != "C-PM-21" + ? profile?.position + ? profile?.position + : "-" + : profileTemp.position, + posLevel: + commandCode != "C-PM-21" + ? profile?.posType && profile?.posLevel + ? Extension.ToThaiNumber( + `${profile?.posType.posTypeShortName} ${profile?.posLevel.posLevelName}`, + ) + : "-" + : Extension.ToThaiNumber(profileTemp.posLevel), + posNo: + commandCode != "C-PM-21" + ? shortName + ? Extension.ToThaiNumber(shortName) + : "-" + : Extension.ToThaiNumber(profileTemp.posNo), amount: x.amount ? Extension.ToThaiNumber(x.amount.toLocaleString()) : "-", dateRetire: profile?.dateRetire ? Extension.ToThaiNumber(Extension.ToThaiShortDate_monthYear(profile?.dateRetire)) @@ -4272,18 +4278,17 @@ export class CommandController extends Controller { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทะเบียนประวัตินี้"); } const posMaster: any = await this.posMasterRepository.findOne({ - where: { + where: { current_holderId: item.profileId, - orgRevision:{ + orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, - } + }, }, - relations:['orgRevision'] + relations: ["orgRevision"], }); - - - const orgRevisionRef = posMaster?posMaster.id: null; + + const orgRevisionRef = posMaster ? posMaster.id : null; //ลบตำแหน่งที่รักษาการแทน const code = _command?.commandType?.code; @@ -4784,7 +4789,7 @@ export class CommandController extends Controller { _profile.leaveDate = item.commandDateAffect ?? _null; _profile.leaveType = exceptClear.LeaveType ?? _null; } else { - if(orgRevisionRef){ + if (orgRevisionRef) { await CreatePosMasterHistoryOfficer(orgRevisionRef.id, req, "DELETE"); } await removeProfileInOrganize(_profile.id, "OFFICER"); @@ -5718,7 +5723,7 @@ export class CommandController extends Controller { posNumCodeSit: _posNumCodeSit, posNumCodeSitAbb: _posNumCodeSitAbb, }); - if(orgRevisionRef){ + if (orgRevisionRef) { await CreatePosMasterHistoryOfficer(orgRevisionRef.id, req, "DELETE"); } await removeProfileInOrganize(profile.id, "OFFICER"); diff --git a/src/controllers/DevelopmentRequestController.ts b/src/controllers/DevelopmentRequestController.ts index 7c646230..16288640 100644 --- a/src/controllers/DevelopmentRequestController.ts +++ b/src/controllers/DevelopmentRequestController.ts @@ -52,7 +52,7 @@ export class DevelopmentRequestController extends Controller { if (!profile) { throw new HttpError(HttpStatus.BAD_REQUEST, "ไม่พบ profile ดังกล่าว"); } - + let query = await AppDataSource.getRepository(DevelopmentRequest) .createQueryBuilder("developmentRequest") .andWhere( @@ -104,16 +104,13 @@ export class DevelopmentRequestController extends Controller { ); }), ) - .orderBy("developmentRequest.createdAt", "DESC") + .orderBy("developmentRequest.createdAt", "DESC"); - if (sortBy) { - query = query.orderBy( - `developmentRequest.${sortBy}`, - descending ? "DESC" : "ASC" - ); - } + if (sortBy) { + query = query.orderBy(`developmentRequest.${sortBy}`, descending ? "DESC" : "ASC"); + } - const [lists, total] = await query + const [lists, total] = await query .skip((page - 1) * pageSize) .take(pageSize) .getManyAndCount(); @@ -166,7 +163,7 @@ export class DevelopmentRequestController extends Controller { data.child1 != undefined && data.child1 != null ? data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: data.child1, @@ -250,21 +247,17 @@ export class DevelopmentRequestController extends Controller { ); }), ) - .orderBy("developmentRequest.createdAt", "DESC") - + .orderBy("developmentRequest.createdAt", "DESC"); if (sortBy) { - query = query.orderBy( - `developmentRequest.${sortBy}`, - descending ? "DESC" : "ASC" - ); + query = query.orderBy(`developmentRequest.${sortBy}`, descending ? "DESC" : "ASC"); } - const [lists, total] = await query - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); - + const [lists, total] = await query + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); + const _data = lists.map((item) => ({ ...item, profile: null })); return new HttpSuccess({ data: _data, total }); } diff --git a/src/controllers/OrganizationDotnetController.ts b/src/controllers/OrganizationDotnetController.ts index 52acf7f0..52fbd5cd 100644 --- a/src/controllers/OrganizationDotnetController.ts +++ b/src/controllers/OrganizationDotnetController.ts @@ -1211,6 +1211,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, @@ -1234,6 +1235,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, @@ -1256,6 +1258,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, @@ -1278,6 +1281,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, @@ -1300,6 +1304,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, @@ -1511,6 +1516,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, @@ -1534,6 +1540,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, @@ -1556,6 +1563,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, @@ -1578,6 +1586,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, @@ -1600,6 +1609,7 @@ export class OrganizationDotnetController extends Controller { let pos = await this.posMasterRepository.findOne({ relations: ["current_holder"], where: { + current_holder: Not(IsNull()), orgRevision: { orgRevisionIsCurrent: true, orgRevisionIsDraft: false, diff --git a/src/controllers/ProfileController.ts b/src/controllers/ProfileController.ts index 6558f0ee..ac19ffdf 100644 --- a/src/controllers/ProfileController.ts +++ b/src/controllers/ProfileController.ts @@ -2219,7 +2219,7 @@ export class ProfileController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1, @@ -6137,7 +6137,7 @@ export class ProfileController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1 }, ) @@ -6524,7 +6524,7 @@ export class ProfileController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1 }, ) @@ -6632,6 +6632,7 @@ export class ProfileController extends Controller { position: _data.position, posNo: shortName ?? null, rootId: holder?.orgRoot?.id ?? null, + child1Id: holder?.orgChild1Id ?? null, root: holder?.orgRoot?.orgRootName ?? null, rootDnaId: holder?.orgRoot == null ? null : holder?.orgRoot?.ancestorDNA, orgRootShortName: holder?.orgRoot?.orgRootShortName ?? null, @@ -7352,10 +7353,10 @@ export class ProfileController extends Controller { nodeDnaId: null, type: profile.employeeClass, salary: profile.amount, - posNo: null - // root?.orgRootShortName && posMaster?.posMasterNo - // ? `${root?.orgRootShortName} ${posMaster?.posMasterNo}` - // : "", + posNo: null, + // root?.orgRootShortName && posMaster?.posMasterNo + // ? `${root?.orgRootShortName} ${posMaster?.posMasterNo}` + // : "", }; if (_profile.child4Id != null) { _profile.node = 4; @@ -7521,10 +7522,10 @@ export class ProfileController extends Controller { nodeDnaId: null, salary: profile ? profile.amount : null, amountSpecial: profile ? profile.amountSpecial : null, - posNo: null - // root?.orgRootShortName && posMaster?.posMasterNo - // ? `${root?.orgRootShortName} ${posMaster?.posMasterNo}` - // : "", + posNo: null, + // root?.orgRootShortName && posMaster?.posMasterNo + // ? `${root?.orgRootShortName} ${posMaster?.posMasterNo}` + // : "", }; if (_profile.child4Id != null) { @@ -8867,7 +8868,7 @@ export class ProfileController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1 }, ) @@ -9390,7 +9391,7 @@ export class ProfileController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1, @@ -9781,21 +9782,26 @@ export class ProfileController extends Controller { .leftJoinAndSelect("current_holders.positions", "positions") .leftJoinAndSelect("positions.posExecutive", "posExecutive") .andWhere( - new Brackets(qb => { + new Brackets((qb) => { qb.where("profile.position LIKE :keyword", { keyword: `%${body.keyword}%` }) .orWhere("posLevel.posLevelName LIKE :keyword", { keyword: `%${body.keyword}%` }) .orWhere("posType.posTypeName LIKE :keyword", { keyword: `%${body.keyword}%` }) - .orWhere("CONCAT(profile.prefix, profile.firstName, ' ', profile.lastName) LIKE :keyword", { keyword: `%${body.keyword}%` }); - }) + .orWhere( + "CONCAT(profile.prefix, profile.firstName, ' ', profile.lastName) LIKE :keyword", + { keyword: `%${body.keyword}%` }, + ); + }), ) .andWhere("profile.isLeave = false") - .andWhere("current_holders.orgRevisionId = :orgRevisionId", { orgRevisionId: orgRevisionActive.id }); + .andWhere("current_holders.orgRevisionId = :orgRevisionId", { + orgRevisionId: orgRevisionActive.id, + }); - const [findProfile, total] = await query - .orderBy("profile.citizenId", "ASC") - .skip((body.page - 1) * body.pageSize) - .take(body.pageSize) - .getManyAndCount(); + const [findProfile, total] = await query + .orderBy("profile.citizenId", "ASC") + .skip((body.page - 1) * body.pageSize) + .take(body.pageSize) + .getManyAndCount(); const mapDataProfile = await Promise.all( findProfile.map(async (item: Profile) => { @@ -9807,9 +9813,10 @@ export class ProfileController extends Controller { : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id); const position = posMaster == null || - item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.positions == null || - item.current_holders?.find((x) => x.orgRevisionId == orgRevisionActive.id)?.positions.length == - 0 || + item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.positions == + null || + item.current_holders?.find((x) => x.orgRevisionId == orgRevisionActive.id)?.positions + .length == 0 || item.current_holders .find((x) => x.orgRevisionId == orgRevisionActive.id) ?.positions?.find((position) => position.positionIsSelected == true) == null @@ -9837,18 +9844,20 @@ export class ProfileController extends Controller { item.current_holders.length == 0 ? null : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != null && - item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild4 != - null + item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) + ?.orgChild4 != null ? `${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild4.orgChild4ShortName} ${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.posMasterNo}` : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != null && - item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild3 != - null + item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) + ?.orgChild3 != null ? `${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild3.orgChild3ShortName} ${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.posMasterNo}` - : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != null && + : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != + null && item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) ?.orgChild2 != null ? `${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild2.orgChild2ShortName} ${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.posMasterNo}` - : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != null && + : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != + null && item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) ?.orgChild1 != null ? `${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild1.orgChild1ShortName} ${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.posMasterNo}` @@ -10775,7 +10784,7 @@ export class ProfileController extends Controller { await this.profileRepo.save(profile, { data: request }); setLogDataDiff(request, { before, after: profile }); if (requestBody.isLeave == true) { - if(orgRevisionRef){ + if (orgRevisionRef) { await CreatePosMasterHistoryOfficer(orgRevisionRef.id, request, "DELETE"); } await removeProfileInOrganize(profile.id, "OFFICER"); diff --git a/src/controllers/ProfileEditController.ts b/src/controllers/ProfileEditController.ts index c7d66ee0..4c4fc6b8 100644 --- a/src/controllers/ProfileEditController.ts +++ b/src/controllers/ProfileEditController.ts @@ -75,19 +75,16 @@ export class ProfileEditController extends Controller { ); }), ) - .orderBy("ProfileEdit.createdAt", "DESC") + .orderBy("ProfileEdit.createdAt", "DESC"); if (sortBy) { - query = query.orderBy( - `ProfileEdit.${sortBy}`, - descending ? "DESC" : "ASC" - ); + query = query.orderBy(`ProfileEdit.${sortBy}`, descending ? "DESC" : "ASC"); } const [getProfileEdit, total] = await query - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); const _data = getProfileEdit.map((item) => ({ id: item.id, @@ -153,7 +150,7 @@ export class ProfileEditController extends Controller { data.child1 != undefined && data.child1 != null ? data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: data.child1, @@ -216,26 +213,20 @@ export class ProfileEditController extends Controller { ); }), ) - .orderBy("ProfileEdit.createdAt", "DESC") - + .orderBy("ProfileEdit.createdAt", "DESC"); + if (sortBy) { - if(sortBy == "fullname"){ - query = query.orderBy( - `profile.firstName`, - descending ? "DESC" : "ASC" - ); - }else{ - query = query.orderBy( - `ProfileEdit.${sortBy}`, - descending ? "DESC" : "ASC" - ); + if (sortBy == "fullname") { + query = query.orderBy(`profile.firstName`, descending ? "DESC" : "ASC"); + } else { + query = query.orderBy(`ProfileEdit.${sortBy}`, descending ? "DESC" : "ASC"); } } const [getProfileEdit, total] = await query - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); const _data = getProfileEdit.map((item) => ({ id: item.id, diff --git a/src/controllers/ProfileEditEmployeeController.ts b/src/controllers/ProfileEditEmployeeController.ts index 75fa1672..8abc6d8b 100644 --- a/src/controllers/ProfileEditEmployeeController.ts +++ b/src/controllers/ProfileEditEmployeeController.ts @@ -119,7 +119,7 @@ export class ProfileEditEmployeeController extends Controller { .where("orgRevision.orgRevisionIsDraft = false") .andWhere("orgRevision.orgRevisionIsCurrent = true") .getOne(); - + let query = await AppDataSource.getRepository(ProfileEdit) .createQueryBuilder("ProfileEdit") .leftJoinAndSelect("ProfileEdit.profileEmployee", "profileEmployee") @@ -148,7 +148,7 @@ export class ProfileEditEmployeeController extends Controller { data.child1 != undefined && data.child1 != null ? data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: data.child1, @@ -211,26 +211,20 @@ export class ProfileEditEmployeeController extends Controller { ); }), ) - .orderBy("ProfileEdit.createdAt", "DESC") - + .orderBy("ProfileEdit.createdAt", "DESC"); + if (sortBy) { - if(sortBy == "fullname"){ - query = query.orderBy( - `profileEmployee.firstName`, - descending ? "DESC" : "ASC" - ); - }else{ - query = query.orderBy( - `ProfileEdit.${sortBy}`, - descending ? "DESC" : "ASC" - ); + if (sortBy == "fullname") { + query = query.orderBy(`profileEmployee.firstName`, descending ? "DESC" : "ASC"); + } else { + query = query.orderBy(`ProfileEdit.${sortBy}`, descending ? "DESC" : "ASC"); } } - + let [getProfileEdit, total] = await query - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); const _data = getProfileEdit.map((item) => ({ id: item.id, diff --git a/src/controllers/ProfileEmployeeController.ts b/src/controllers/ProfileEmployeeController.ts index ac5523bb..f72df407 100644 --- a/src/controllers/ProfileEmployeeController.ts +++ b/src/controllers/ProfileEmployeeController.ts @@ -2034,12 +2034,15 @@ export class ProfileEmployeeController extends Controller { if (!result) { throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล"); } - try{ + try { await new permission().PermissionOrgUserDelete(request, "SYS_REGISTRY_EMP", result.id); await this.informationHistoryRepository.delete({ profileEmployeeId: id }); await this.profileRepo.remove(result); } catch { - throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่สามารถลบข้อมูลได้ เนื่องจากข้อมูลนี้ถูกใช้งานในระบบอื่น"); + throw new HttpError( + HttpStatusCode.NOT_FOUND, + "ไม่สามารถลบข้อมูลได้ เนื่องจากข้อมูลนี้ถูกใช้งานในระบบอื่น", + ); } return new HttpSuccess(); } @@ -2837,7 +2840,7 @@ export class ProfileEmployeeController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1, @@ -3582,10 +3585,10 @@ export class ProfileEmployeeController extends Controller { nodeDnaId: null, salary: profile ? profile.amount : null, amountSpecial: profile ? profile.amountSpecial : null, - posNo: null - // root?.orgRootShortName && posMaster?.posMasterNo - // ? `${root?.orgRootShortName} ${posMaster?.posMasterNo}` - // : "", + posNo: null, + // root?.orgRootShortName && posMaster?.posMasterNo + // ? `${root?.orgRootShortName} ${posMaster?.posMasterNo}` + // : "", }; if (_profile.child4Id != null) { _profile.node = 4; @@ -3716,7 +3719,7 @@ export class ProfileEmployeeController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1 }, ) @@ -4274,7 +4277,7 @@ export class ProfileEmployeeController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1, @@ -4435,22 +4438,26 @@ export class ProfileEmployeeController extends Controller { .leftJoinAndSelect("current_holders.orgChild4", "orgChild4") .leftJoinAndSelect("current_holders.positions", "positions") .andWhere( - new Brackets(qb => { + new Brackets((qb) => { qb.where("profileEmployee.position LIKE :keyword", { keyword: `%${body.keyword}%` }) .orWhere("posLevel.posLevelName LIKE :keyword", { keyword: `%${body.keyword}%` }) .orWhere("posType.posTypeName LIKE :keyword", { keyword: `%${body.keyword}%` }) - .orWhere("CONCAT(profileEmployee.prefix, profileEmployee.firstName, ' ', profileEmployee.lastName) LIKE :keyword", { keyword: `%${body.keyword}%` }); - }) + .orWhere( + "CONCAT(profileEmployee.prefix, profileEmployee.firstName, ' ', profileEmployee.lastName) LIKE :keyword", + { keyword: `%${body.keyword}%` }, + ); + }), ) .andWhere("profileEmployee.isLeave = false") - .andWhere("current_holders.orgRevisionId = :orgRevisionId", { orgRevisionId: orgRevisionActive.id }); + .andWhere("current_holders.orgRevisionId = :orgRevisionId", { + orgRevisionId: orgRevisionActive.id, + }); if (body.type) { const typeUpper = body.type.trim().toUpperCase(); if (typeUpper === "EMPLOYEE") { query = query.andWhere("profileEmployee.employeeClass = 'PERM'"); - } - else if (typeUpper === "TEMP"){ + } else if (typeUpper === "TEMP") { query = query.andWhere("profileEmployee.employeeClass = 'TEMP'"); } } @@ -4471,9 +4478,10 @@ export class ProfileEmployeeController extends Controller { : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id); const position = posMaster == null || - item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.positions == null || - item.current_holders?.find((x) => x.orgRevisionId == orgRevisionActive.id)?.positions.length == - 0 || + item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.positions == + null || + item.current_holders?.find((x) => x.orgRevisionId == orgRevisionActive.id)?.positions + .length == 0 || item.current_holders .find((x) => x.orgRevisionId == orgRevisionActive.id) ?.positions?.find((position) => position.positionIsSelected == true) == null @@ -4486,18 +4494,20 @@ export class ProfileEmployeeController extends Controller { item.current_holders.length == 0 ? null : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != null && - item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild4 != - null + item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) + ?.orgChild4 != null ? `${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild4.orgChild4ShortName} ${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.posMasterNo}` : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != null && - item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild3 != - null + item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) + ?.orgChild3 != null ? `${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild3.orgChild3ShortName} ${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.posMasterNo}` - : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != null && + : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != + null && item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) ?.orgChild2 != null ? `${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild2.orgChild2ShortName} ${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.posMasterNo}` - : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != null && + : item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) != + null && item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id) ?.orgChild1 != null ? `${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.orgChild1.orgChild1ShortName} ${item.current_holders.find((x) => x.orgRevisionId == orgRevisionActive.id)?.posMasterNo}` diff --git a/src/controllers/ProfileSalaryTempController.ts b/src/controllers/ProfileSalaryTempController.ts index 5da8860e..8b49622a 100644 --- a/src/controllers/ProfileSalaryTempController.ts +++ b/src/controllers/ProfileSalaryTempController.ts @@ -120,7 +120,7 @@ export class ProfileSalaryTempController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1, @@ -322,52 +322,42 @@ export class ProfileSalaryTempController extends Controller { .andWhere("current_holders.orgRootId = :rootId", { rootId: rootId, }) - .addSelect("CASE WHEN current_holders.posMasterNo IS NULL THEN 1 ELSE 0 END", "sort_order") - // .orderBy(`${sortBy}`, sort) + .addSelect("CASE WHEN current_holders.posMasterNo IS NULL THEN 1 ELSE 0 END", "sort_order"); + // .orderBy(`${sortBy}`, sort) if (sortBy) { - if(sortBy == "posLevel"){ - query = query.orderBy( - `posLevel.posLevelName`, - descending ? "DESC" : "ASC" - ); - }else if(sortBy == "posType"){ - query = query.orderBy( - `posType.posTypeName`, - descending ? "DESC" : "ASC" - ); - }else if(sortBy == "posExecutive"){ - query = query.orderBy( - `posExecutive.posExecutiveName`, - descending ? "DESC" : "ASC" - ); - }else if(sortBy == "posNo"){ - query = query.orderBy("orgChild4.orgChild4ShortName",descending ? "DESC" : "ASC") - .addOrderBy("orgChild3.orgChild3ShortName",descending ? "DESC" : "ASC") - .addOrderBy("orgChild2.orgChild2ShortName",descending ? "DESC" : "ASC") - .addOrderBy("orgChild1.orgChild1ShortName",descending ? "DESC" : "ASC") - .addOrderBy("orgRoot.orgRootShortName",descending ? "DESC" : "ASC") - .addOrderBy("current_holders.posMasterNo",descending ? "DESC" : "ASC") - }else{ - query = query.orderBy( - `profile.${sortBy}`, - descending ? "DESC" : "ASC" - ); + if (sortBy == "posLevel") { + query = query.orderBy(`posLevel.posLevelName`, descending ? "DESC" : "ASC"); + } else if (sortBy == "posType") { + query = query.orderBy(`posType.posTypeName`, descending ? "DESC" : "ASC"); + } else if (sortBy == "posExecutive") { + query = query.orderBy(`posExecutive.posExecutiveName`, descending ? "DESC" : "ASC"); + } else if (sortBy == "posNo") { + query = query + .orderBy("orgChild4.orgChild4ShortName", descending ? "DESC" : "ASC") + .addOrderBy("orgChild3.orgChild3ShortName", descending ? "DESC" : "ASC") + .addOrderBy("orgChild2.orgChild2ShortName", descending ? "DESC" : "ASC") + .addOrderBy("orgChild1.orgChild1ShortName", descending ? "DESC" : "ASC") + .addOrderBy("orgRoot.orgRootShortName", descending ? "DESC" : "ASC") + .addOrderBy("current_holders.posMasterNo", descending ? "DESC" : "ASC"); + } else { + query = query.orderBy(`profile.${sortBy}`, descending ? "DESC" : "ASC"); } - }else{ - query = query.orderBy("sort_order", "ASC") - .addOrderBy("orgRoot.orgRootOrder", "ASC") - .addOrderBy("orgChild1.orgChild1Order", "ASC") - .addOrderBy("orgChild2.orgChild2Order", "ASC") - .addOrderBy("orgChild3.orgChild3Order", "ASC") - .addOrderBy("orgChild4.orgChild4Order", "ASC") - .addOrderBy("current_holders.posMasterNo", "ASC") + } else { + query = query + .orderBy("sort_order", "ASC") + .addOrderBy("orgRoot.orgRootOrder", "ASC") + .addOrderBy("orgChild1.orgChild1Order", "ASC") + .addOrderBy("orgChild2.orgChild2Order", "ASC") + .addOrderBy("orgChild3.orgChild3Order", "ASC") + .addOrderBy("orgChild4.orgChild4Order", "ASC") + .addOrderBy("current_holders.posMasterNo", "ASC"); } const [record, total] = await query - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); const data = await Promise.all( record.map((_data) => { @@ -541,7 +531,7 @@ export class ProfileSalaryTempController extends Controller { _data.child1 != undefined && _data.child1 != null ? _data.child1[0] != null ? `current_holders.orgChild1Id IN (:...child1)` - : `current_holders.orgChild1Id is null` + : `current_holders.orgChild1Id is ${_data.privilege == "PARENT" ? "not null" : "null"}` : "1=1", { child1: _data.child1, @@ -755,36 +745,24 @@ export class ProfileSalaryTempController extends Controller { .andWhere("current_holders.orgRootId = :rootId", { rootId: rootId, }) - .orderBy("current_holders.posMasterNo", "ASC") - // .orderBy(`${sortBy}`, sort) + .orderBy("current_holders.posMasterNo", "ASC"); + // .orderBy(`${sortBy}`, sort) - if (sortBy) { - if(sortBy == "posLevel"){ - query = query.orderBy( - `posLevel.posLevelName`, - descending ? "DESC" : "ASC" - ); - }else if(sortBy == "posType"){ - query = query.orderBy( - `posType.posTypeName`, - descending ? "DESC" : "ASC" - ); - }else if(sortBy == "posNo"){ - query = query.orderBy( - `orgRoot.orgRootShortName`, - descending ? "DESC" : "ASC" - ); - }else{ - query = query.orderBy( - `profileEmployee.${sortBy}`, - descending ? "DESC" : "ASC" - ); + if (sortBy) { + if (sortBy == "posLevel") { + query = query.orderBy(`posLevel.posLevelName`, descending ? "DESC" : "ASC"); + } else if (sortBy == "posType") { + query = query.orderBy(`posType.posTypeName`, descending ? "DESC" : "ASC"); + } else if (sortBy == "posNo") { + query = query.orderBy(`orgRoot.orgRootShortName`, descending ? "DESC" : "ASC"); + } else { + query = query.orderBy(`profileEmployee.${sortBy}`, descending ? "DESC" : "ASC"); } } const [record, total] = await query - .skip((page - 1) * pageSize) - .take(pageSize) - .getManyAndCount(); + .skip((page - 1) * pageSize) + .take(pageSize) + .getManyAndCount(); const data = await Promise.all( record.map((_data) => { @@ -1192,7 +1170,7 @@ export class ProfileSalaryTempController extends Controller { order: { order: "DESC" }, }); if (salary) { - dest_item = salary.order+1; + dest_item = salary.order + 1; } // const profile = await this.profileRepo.findOneBy({ id: body.profileId }); // if (!profile) { @@ -1210,7 +1188,7 @@ export class ProfileSalaryTempController extends Controller { order: { order: "DESC" }, }); if (salary) { - dest_item = salary.order+1; + dest_item = salary.order + 1; } // const profile = await this.profileEmployeeRepo.findOneBy({ id: body.profileId }); // if (!profile) { diff --git a/src/interfaces/permission.ts b/src/interfaces/permission.ts index 1819b647..b48478dc 100644 --- a/src/interfaces/permission.ts +++ b/src/interfaces/permission.ts @@ -97,7 +97,7 @@ class CheckAuth { } else if (privilege == "PARENT") { data = { root: [x.orgRootId], - child1: null, + child1: [null], child2: null, child3: null, child4: null,