From 8968d39b99ef563bd8420789272e945650e4bc02 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Thu, 8 Feb 2024 14:53:04 +0700 Subject: [PATCH] =?UTF-8?q?org=5F064=20=E0=B9=81=E0=B8=A5=E0=B8=B0=20org?= =?UTF-8?q?=5F065?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/PosMasterController.ts | 109 +++++++++++++++++++++++++ src/entities/PosMaster.ts | 4 +- 2 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 src/controllers/PosMasterController.ts diff --git a/src/controllers/PosMasterController.ts b/src/controllers/PosMasterController.ts new file mode 100644 index 00000000..aec1e674 --- /dev/null +++ b/src/controllers/PosMasterController.ts @@ -0,0 +1,109 @@ +import { + Controller, + Post, + Put, + Delete, + Route, + Security, + Tags, + Body, + Path, + Request, + SuccessResponse, + Response, + Get, +} from "tsoa"; +import { AppDataSource } from "../database/data-source"; +import HttpSuccess from "../interfaces/http-success"; +import HttpStatusCode from "../interfaces/http-status"; +import HttpError from "../interfaces/http-error"; +import { PosMaster, CreatePosMaster, UpdatePosMaster } from "../entities/PosMaster"; +import { Not } from "typeorm"; +import { Position } from "../entities/Position"; + +@Route("api/v1/org/pos/profile") +@Tags("PosMaster") +@Security("bearerAuth") +@Response( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง", +) +@SuccessResponse(HttpStatusCode.OK, "สำเร็จ") +export class PosMasterController extends Controller { + private posMasterRepository = AppDataSource.getRepository(PosMaster); + private positionRepository = AppDataSource.getRepository(Position); + + /** + * API สร้างทะเบียนประวัติ + * + * @summary ORG_065 - สร้างทะเบียนประวัติ (ADMIN) #70 + * + */ + @Post() + async createHolder( + @Body() requestBody: { posMaster: string; position: string; profileId: string; isSit: boolean }, + ) { + const dataMaster = await this.posMasterRepository.findOne({ + where: { id: requestBody.posMaster }, + relations: ["positions"], + }); + if (!dataMaster) { + throw new HttpError( + HttpStatusCode.NOT_FOUND, + "ไม่พบข้อมูลไอดีนี้ : " + requestBody.posMaster, + ); + } + try { + dataMaster.positions.forEach(async (position) => { + if (position.id === requestBody.position) { + position.positionIsSelected = true; + } else { + position.positionIsSelected = false; + } + await this.positionRepository.save(position); + }); + + dataMaster.isSit = requestBody.isSit; + dataMaster.next_holderId = requestBody.profileId; + await this.posMasterRepository.save(dataMaster); + + return new HttpSuccess(); + } catch (error) { + return error; + } + } + + /** + * API สร้างทะเบียนประวัติ + * + * @summary ORG_066 - ลบคนครองตำแหน่ง (ADMIN) #71 + * + * @param {string} id *Id posMaster + */ + @Post("delete/{id}") + async deleteHolder(@Path() id: string) { + const dataMaster = await this.posMasterRepository.findOne({ + where: { id: id }, + relations: ["positions"], + }); + if (!dataMaster) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลไอดีนี้ : " + id); + } + try { + await this.posMasterRepository.update(id, { + isSit: false, + next_holderId: null, + }); + + dataMaster.positions.forEach(async (position) => { + await this.positionRepository.update(position.id, { + positionIsSelected: false, + }); + }); + + return new HttpSuccess(); + } catch (error) { + return error; + } + } +} diff --git a/src/entities/PosMaster.ts b/src/entities/PosMaster.ts index c36712cb..6c9cf70b 100644 --- a/src/entities/PosMaster.ts +++ b/src/entities/PosMaster.ts @@ -133,7 +133,7 @@ export class PosMaster extends EntityBase { "คนครองปัจจุบัน เมื่อทำสำเนาโครงสร้างและตำแหน่งพร้อมกับคนครองมา คนครองจะอยู่ในฟิลด์นี้", default: null, }) - current_holderId: string; + current_holderId?: string | null; @Column({ nullable: true, @@ -142,7 +142,7 @@ export class PosMaster extends EntityBase { "คนที่กำลังจะมาครอง ตอนปรับโครงสร้าง ถ้าเลือกให้ใครมาครอง ProfileId ของคนนั้นจะมาอยู่ในช่องนี้ รวมทั้งตอนเลือกตำแหน่งเพื่อบรรจุ แต่งตั้ง เลื่อน ย้าย ในระบบบรรจุแต่งตั้งด้วย", default: null, }) - next_holderId: string; + next_holderId?: string | null; @Column({ length: 40,