diff --git a/src/controllers/CommandController.ts b/src/controllers/CommandController.ts index ece19088..90ea9a38 100644 --- a/src/controllers/CommandController.ts +++ b/src/controllers/CommandController.ts @@ -99,6 +99,7 @@ import { CreatePosMasterHistoryOfficer, } from "../services/PositionService"; import { PostRetireToExprofile } from "./ExRetirementController"; +import { LeaveType } from "../entities/LeaveType" @Route("api/v1/org/command") @Tags("Command") @Security("bearerAuth") @@ -154,7 +155,7 @@ export class CommandController extends Controller { private insigniaHistoryRepo = AppDataSource.getRepository(ProfileInsigniaHistory); private genderRepo = AppDataSource.getRepository(Gender); private avatarRepository = AppDataSource.getRepository(ProfileAvatar); - + private leaveType = AppDataSource.getRepository(LeaveType); /** * API list รายการคำสั่ง * @@ -5766,10 +5767,15 @@ export class CommandController extends Controller { ) { let _posNumCodeSit: string = ""; let _posNumCodeSitAbb: string = ""; + let commandType: any = "" const _command = await this.commandRepository.findOne({ where: { id: body.data.find((x) => x.commandId)?.commandId ?? "" }, }); if (_command) { + commandType = await this.commandTypeRepository.findOne({ + select: { code: true }, + where: { id: _command.commandTypeId } + }); if (_command?.isBangkok?.toLocaleUpperCase() == "OFFICE") { const orgRootDeputy = await this.orgRootRepository.findOne({ where: { @@ -5807,11 +5813,15 @@ export class CommandController extends Controller { .orgRootShortName ?? ""; } } + const leaveType = await this.leaveType.findOne({ + select:{ id: true, limit: true, code: true }, + where:{ code: "LV-005" } + }); await Promise.all( body.data.map(async (item) => { const profile = await this.profileRepository.findOne({ relations: [ - "profileSalary", + // "profileSalary", "posType", "posLevel", "current_holders", @@ -5822,16 +5832,21 @@ export class CommandController extends Controller { "current_holders.orgChild4", ], where: { id: item.profileId }, - order: { - profileSalary: { - order: "DESC", - }, - }, + // order: { + // profileSalary: { + // order: "DESC", + // }, + // }, }); if (!profile) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลทะเบียนประวัตินี้"); } - + const lastSalary = await this.salaryRepo.findOne({ + where: { profileId: item.profileId }, + select: ["order"], + order: { order: "DESC" }, + }); + const nextOrder = lastSalary ? lastSalary.order + 1 : 1; const orgRevision = await this.orgRevisionRepo.findOne({ where: { orgRevisionIsCurrent: true, @@ -5892,12 +5907,13 @@ export class CommandController extends Controller { amountSpecial: item.amountSpecial ? item.amountSpecial : null, positionSalaryAmount: item.positionSalaryAmount ? item.positionSalaryAmount : null, mouthSalaryAmount: item.mouthSalaryAmount ? item.mouthSalaryAmount : null, - order: - profile.profileSalary.length >= 0 - ? profile.profileSalary.length > 0 - ? profile.profileSalary[0].order + 1 - : 1 - : null, + // order: + // profile.profileSalary.length >= 0 + // ? profile.profileSalary.length > 0 + // ? profile.profileSalary[0].order + 1 + // : 1 + // : null, + order: nextOrder, orgRoot: orgRootRef?.orgRootName ?? null, orgChild1: orgChild1Ref?.orgChild1Name ?? null, orgChild2: orgChild2Ref?.orgChild2Name ?? null, @@ -5928,19 +5944,41 @@ export class CommandController extends Controller { await this.salaryHistoryRepo.save(history); }), ); - const checkCommandType = await this.commandRepository.findOne({ - where: { id: body.data.length > 0 ? body.data[0].commandId?.toString() : "" }, - relations: ["commandType"], - }); - if (checkCommandType?.commandType.code == "C-PM-11") { - const profile = await this.profileRepository.find({ - where: { id: In(body.data.map((x) => x.profileId)) }, - }); - const data = profile.map((x) => ({ - ...x, - isProbation: false, - })); - await this.profileRepository.save(data); + // const checkCommandType = await this.commandRepository.findOne({ + // where: { id: body.data.length > 0 ? body.data[0].commandId?.toString() : "" }, + // relations: ["commandType"], + // }); + if (commandType && String(commandType.code) == "C-PM-11") { + // const profile = await this.profileRepository.find({ + // where: { id: In(body.data.map((x) => x.profileId)) }, + // }); + // const data = profile.map((x) => ({ + // ...x, + // isProbation: false, + // })); + // await this.profileRepository.save(data); + const profileIds = body.data.map((x) => x.profileId); + await this.profileRepository.update( + { id: In(profileIds) }, + { isProbation: false } + ); + // Task #2304 อัปเดตจำนวนสิทธิ์การลา เมื่อผ่านทดลองงานฯ + if (leaveType != null) { + await Promise.all( + body.data.map((item) => + new CallAPI().PutData(req, `/leave-beginning/schedule`, { + profileId: item.profileId, + leaveTypeId: leaveType.id, + leaveYear: item.commandYear, + leaveDays: leaveType.limit, + leaveDaysUsed: 0, + leaveCount: 0, + beginningLeaveDays: 0, + beginningLeaveCount: 0, + }) + ) + ); + } } return new HttpSuccess(); } @@ -6461,7 +6499,7 @@ export class CommandController extends Controller { await this.salaryHistoryRepo.save(history, { data: req }); if (profileEmployee.profileInsignias.length > 0) { - _oldInsigniaIds = profileEmployee.profileInsignias.map((x: any) => x.id); + _oldInsigniaIds = profileEmployee.profileInsignias.filter().map((x: any) => x.id); } await removeProfileInOrganize(profileEmployee.id, "EMPLOYEE"); if (profileEmployee.keycloak != null) { diff --git a/src/interfaces/call-api.ts b/src/interfaces/call-api.ts index 398246c9..16986335 100644 --- a/src/interfaces/call-api.ts +++ b/src/interfaces/call-api.ts @@ -100,6 +100,52 @@ class CallAPI { } } + // Put + public async PutData(request: any, @Path() path: any, sendData: any, log = true) { + const token = "Bearer " + request.headers.authorization.replace("Bearer ", ""); + const url = process.env.API_URL + path; + + try { + const response = await axios.put(url, sendData, { + headers: { + Authorization: `${token}`, + "Content-Type": "application/json", + api_key: process.env.API_KEY, + }, + }); + + if (log) + addLogSequence(request, { + action: "request", + status: "success", + description: "connected", + request: { + method: "PUT", + url: url, + payload: JSON.stringify(sendData), + response: JSON.stringify(response.data.result), + }, + }); + + return response.data.result; + } catch (error) { + if (log) + addLogSequence(request, { + action: "request", + status: "error", + description: "unconnected", + request: { + method: "PUT", + url: url, + payload: JSON.stringify(sendData), + response: JSON.stringify(error), + }, + }); + + throw error; + } + } + //Delete File public async DeleteFile(request: any, @Path() path: any) { const token = "Bearer " + request.headers.authorization.replace("Bearer ", "");