From 4cccf6f685c474ffa848a67083315939e8913b79 Mon Sep 17 00:00:00 2001 From: Bright Date: Thu, 13 Jun 2024 13:00:33 +0700 Subject: [PATCH] =?UTF-8?q?api=20=E0=B8=AD=E0=B8=AD=E0=B8=81=E0=B8=84?= =?UTF-8?q?=E0=B8=B3=E0=B8=AA=E0=B8=B1=E0=B9=88=E0=B8=87=E0=B8=A2=E0=B9=89?= =?UTF-8?q?=E0=B8=B2=E0=B8=A2=E0=B8=AA=E0=B8=B1=E0=B8=9A=E0=B9=80=E0=B8=9B?= =?UTF-8?q?=E0=B8=A5=E0=B8=B5=E0=B9=88=E0=B8=A2=E0=B8=99=E0=B8=95=E0=B8=B3?= =?UTF-8?q?=E0=B9=81=E0=B8=AB=E0=B8=99=E0=B9=88=E0=B8=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/ChangePositionController.ts | 74 ++++++++++++++++++++- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/src/controllers/ChangePositionController.ts b/src/controllers/ChangePositionController.ts index 9ce7281a..516c0dde 100644 --- a/src/controllers/ChangePositionController.ts +++ b/src/controllers/ChangePositionController.ts @@ -38,7 +38,7 @@ import { OrgChild1 } from "../entities/OrgChild1"; import { OrgChild2 } from "../entities/OrgChild2"; import { OrgChild3 } from "../entities/OrgChild3"; import { OrgChild4 } from "../entities/OrgChild4"; - +import CallAPI from "../interfaces/call-api"; @Route("api/v1/org/placement/change-position") @Tags("Placement") @Security("bearerAuth") @@ -163,6 +163,7 @@ export class ChangePositionController extends Controller { ) { const [changePosition, total] = await AppDataSource.getRepository(ChangePosition) .createQueryBuilder("changePosition") + .leftJoinAndSelect("changePosition.profileChangePosition", "profileChangePosition") .where( searchKeyword ? "changePosition.name LIKE :keyword OR changePosition.date LIKE :keyword OR changePosition.status LIKE :keyword" @@ -187,7 +188,10 @@ export class ChangePositionController extends Controller { @Get("{id}") async GetChangePositionById( @Path() id: string ) { - const data = await this.changePositionRepository.findOne({ where: { id: id }}); + const data = await this.changePositionRepository.findOne({ + relations: ["profileChangePosition"], + where: { id: id }} + ); if (!data) throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลรอบย้ายสับเปลี่ยนตำแหน่ง"); return new HttpSuccess(data); } @@ -338,6 +342,7 @@ export class ChangePositionController extends Controller { profileChangePos.positionNumberOld = body.positionNumberOld; profileChangePos.amountOld = body.amountOld; profileChangePos.reason = body.reason? String(body.reason) : ""; + profileChangePos.dateCurrent = body.dateCurrent; await this.profileChangePositionRepository.save(profileChangePos); return new HttpSuccess(); } @@ -465,5 +470,70 @@ export class ChangePositionController extends Controller { return new HttpSuccess(); } + /** + * API ออกคำสั่งย้ายสับเปลี่ยนตำแหน่ง REPORT + * + * @summary API ออกคำสั่งย้ายสับเปลี่ยนตำแหน่ง REPORT (ADMIN) + * + */ + @Post("report") + async sendReport(@Request() request: RequestWithUser, @Body() requestBody: { id: string[] }) { + const profilechangePositions = await this.changePositionRepository.find({ + relations: ["profileChangePosition"], + where: { id: In(requestBody.id) } + }); + for (const item of profilechangePositions) { + item.status = "REPORT"; + item.lastUpdateUserId = request.user.sub; + item.lastUpdateFullName = request.user.name; + if (item.profileChangePosition) { + for (const profile of item.profileChangePosition) { + profile.status = "REPORT"; + profile.lastUpdateUserId = request.user.sub; + profile.lastUpdateFullName = request.user.name; + await this.profileChangePositionRepository.save(profile); + } + } + await this.changePositionRepository.save(item); + } + return new HttpSuccess(); + } + + /** + * API ออกคำสั่งย้ายสับเปลี่ยนตำแหน่ง DONE + * + * @summary API ออกคำสั่งย้ายสับเปลี่ยนตำแหน่ง DONE (ADMIN) + * + */ + @Post("report/resume") + async doneReport( + @Body() + body: { + result: { + id: string; + }[]; + }, + @Request() request: { user: Record }, + ) { + await Promise.all( + body.result.map(async (v) => { + const profile = await this.profileChangePositionRepository.findOne({ + where: { id: v.id } + }); + if (profile != null) { + await new CallAPI() + .PostData(request, "org/profile/salary", { + profileId: profile.id, + date: new Date(), + }) + .then(async (x) => { + profile.status = "DONE"; + await this.profileChangePositionRepository.save(profile); + }); + } + }), + ); + return new HttpSuccess(); + } }