diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index 4f836a15..65463bb8 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -42,6 +42,7 @@ import { checkReturnCommandType, checkExceptCommandType, checkCommandType, + removePostMasterAct, } from "../interfaces/utils"; import { Position } from "../entities/Position"; import { PosMaster } from "../entities/PosMaster"; @@ -3381,6 +3382,7 @@ export class CommandController extends Controller { let _posNumCodeSit: string = ""; let _posNumCodeSitAbb: string = ""; const _command = await this.commandRepository.findOne({ + relations: ["commandType"], where: { id: body.data.find((x) => x.commandId)?.commandId ?? "" }, }); if (_command) { @@ -3430,6 +3432,11 @@ export class CommandController extends Controller { if (!profile) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทะเบียนประวัตินี้"); } + //ลบตำแหน่งที่รักษาการแทน + const code = _command?.commandType?.code; + if(code && ["C-PM-08","C-PM-17", "C-PM-18"].includes(code)){ + removePostMasterAct(profile.id); + } let _commandYear = item.commandYear; if (item.commandYear) { _commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear + 543; @@ -3492,6 +3499,7 @@ export class CommandController extends Controller { // profile.posTypeId = _null; // profile.posLevelId = _null; } + if (item.isGovernment == true) { if (returnWork) { //ปลดตำแหน่งเดิมที่ไม่ถูกปลดออกจากกิ่งครั้งเมื่อออกคำสั่งพักราชการหรือออกราชการไว้ @@ -3499,7 +3507,8 @@ export class CommandController extends Controller { //ปั๊มตำแหน่งใหม่ const posMaster = await this.posMasterRepository.findOne({ where: { id: item.posmasterId?.toString() }, - }); + }); + if (posMaster) { const checkPosition = await this.positionRepository.find({ where: { @@ -3846,6 +3855,7 @@ export class CommandController extends Controller { let _posNumCodeSit: string = ""; let _posNumCodeSitAbb: string = ""; const _command = await this.commandRepository.findOne({ + relations: ["commandType"], where: { id: body.data.find((x) => x.commandId)?.commandId ?? "" }, }); if (_command) { @@ -3895,6 +3905,13 @@ export class CommandController extends Controller { if (!profile) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทะเบียนประวัตินี้"); } + + //ลบตำแหน่งที่รักษาการแทน + const code = _command?.commandType?.code; + if(code && ["C-PM-13"].includes(code)){ + removePostMasterAct(profile.id); + } + let _commandYear = item.commandYear; if (item.commandYear) { _commandYear = item.commandYear > 2500 ? item.commandYear : item.commandYear + 543; @@ -4159,6 +4176,7 @@ export class CommandController extends Controller { let _posNumCodeSit: string = ""; let _posNumCodeSitAbb: string = ""; const _command = await this.commandRepository.findOne({ + relations: ["commandType"], where: { id: body.data.find((x) => x.commandId)?.commandId ?? "" }, }); if (_command) { @@ -4231,6 +4249,13 @@ export class CommandController extends Controller { if (!profile) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทะเบียนประวัตินี้"); } + + //ลบตำแหน่งที่รักษาการแทน + const code = _command?.commandType?.code; + if(code && ["C-PM-19", "C-PM-20"].includes(code)){ + removePostMasterAct(profile.id); + } + const orgRevision = await this.orgRevisionRepo.findOne({ where: { orgRevisionIsCurrent: true, diff --git a/src/controllers/OrganizationController.ts b/src/controllers/OrganizationController.ts index 2a21d9a8..ec39bc53 100644 --- a/src/controllers/OrganizationController.ts +++ b/src/controllers/OrganizationController.ts @@ -26,7 +26,7 @@ import { PosMaster } from "../entities/PosMaster"; import { Profile } from "../entities/Profile"; import { RequestWithUser } from "../middlewares/user"; import permission from "../interfaces/permission"; -import { setLogDataDiff } from "../interfaces/utils"; +import { checkQueueInProgress, setLogDataDiff } from "../interfaces/utils"; import { sendToQueueOrg, sendToQueueOrgDraft } from "../services/rabbitmq"; import { PosType } from "../entities/PosType"; import { PosLevel } from "../entities/PosLevel"; @@ -3255,7 +3255,7 @@ export class OrganizationController extends Controller { user: request.user, token: request.headers["authorization"], }; - sendToQueueOrg(msg); + await sendToQueueOrg(msg); return new HttpSuccess(); } catch (error: any) { if (error?.status && error?.message) { diff --git a/src/interfaces/utils.ts b/src/interfaces/utils.ts index 1efcbdb8..931fe446 100644 --- a/src/interfaces/utils.ts +++ b/src/interfaces/utils.ts @@ -11,6 +11,7 @@ import { ProfileSalary } from "../entities/ProfileSalary"; import { Profile } from "../entities/Profile"; import { ProfileEmployee } from "../entities/ProfileEmployee"; import { CommandRecive } from "../entities/CommandRecive"; +import { PosMasterAct } from "../entities/PosMasterAct"; export function calculateAge(start: Date, end = new Date()) { if (start.getTime() > end.getTime()) return null; @@ -331,6 +332,34 @@ export async function removeProfileInOrganize(profileId: string, type: string) { } } +export async function removePostMasterAct(profileId: string) { + const currentRevision = await AppDataSource.getRepository(OrgRevision) + .createQueryBuilder("orgRevision") + .where("orgRevision.orgRevisionIsDraft = false") + .andWhere("orgRevision.orgRevisionIsCurrent = true") + .getOne(); + + if (!currentRevision) { + return; + } + + const findProfileInposMaster = await AppDataSource.getRepository(PosMaster) + .createQueryBuilder("posMaster") + .where("posMaster.orgRevisionId = :orgRevisionId", { orgRevisionId: currentRevision?.id }) + .andWhere("posMaster.current_holderId = :profileId", { profileId }) + .getOne(); + + if (!findProfileInposMaster) { + return; + } + + const posMasterAct = await AppDataSource.getRepository(PosMasterAct) + .createQueryBuilder("posMasterAct") + .where("posMasterAct.posMasterChildId = :posMasterChildId", { posMasterChildId: findProfileInposMaster.id }) + .getMany(); + await AppDataSource.getRepository(PosMasterAct).remove(posMasterAct); +} + export async function checkReturnCommandType(commandId: string) { const commandRepository = AppDataSource.getRepository(Command); const _type = await commandRepository.findOne({