From ad5c953aa8f0b2acddaa97feb09f074b21869278 Mon Sep 17 00:00:00 2001 From: waruneeauy Date: Tue, 5 Nov 2024 09:52:12 +0700 Subject: [PATCH] updated appoint list by creator id --- src/controllers/AppointController.ts | 265 +++++++++++++++------------ 1 file changed, 144 insertions(+), 121 deletions(-) diff --git a/src/controllers/AppointController.ts b/src/controllers/AppointController.ts index 4304711..d6fb768 100644 --- a/src/controllers/AppointController.ts +++ b/src/controllers/AppointController.ts @@ -1,151 +1,174 @@ -import { Controller, Route, Security, Tags, Body, Request, SuccessResponse, Response, Get, Put, Post, Path, Delete } from "tsoa" -import { setLogDataDiff } from "../interfaces/utils" +import { + Controller, + Route, + Security, + Tags, + Body, + Request, + SuccessResponse, + Response, + Get, + Put, + Post, + Path, + Delete, +} from "tsoa"; +import { setLogDataDiff } from "../interfaces/utils"; -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 permission from "../interfaces/permission" -import { RequestWithUser } from "../middlewares/user" -import { Appoint, CreateAppoint, Person, UpdateAppoint } from "../entities/Appoint" -import { AppointDirector } from "../entities/AppointDirector" +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 permission from "../interfaces/permission"; +import { RequestWithUser } from "../middlewares/user"; +import { Appoint, CreateAppoint, Person, UpdateAppoint } from "../entities/Appoint"; +import { AppointDirector } from "../entities/AppointDirector"; @Route("api/v1/probation/appoint") @Tags("Appoint Director") @Security("bearerAuth") -@Response(HttpStatusCode.INTERNAL_SERVER_ERROR, "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง") +@Response( + HttpStatusCode.INTERNAL_SERVER_ERROR, + "เกิดข้อผิดพลาด ไม่สามารถแสดงรายการได้ กรุณาลองใหม่ในภายหลัง", +) export class AppointController extends Controller { - private appointRepository = AppDataSource.getRepository(Appoint) - private appointDirectorRepository = AppDataSource.getRepository(AppointDirector) + private appointRepository = AppDataSource.getRepository(Appoint); + private appointDirectorRepository = AppDataSource.getRepository(AppointDirector); - /** - * API รายการแต่งตั้งคณะกรรมการฯ ทดลองงาน - * - * @summary รายการแต่งตั้งคณะกรรมการฯ - * - */ - @Get("") - async GetList(@Request() request: RequestWithUser) { - await new permission().PermissionList(request, "SYS_PROBATION") + /** + * API รายการแต่งตั้งคณะกรรมการฯ ทดลองงาน + * + * @summary รายการแต่งตั้งคณะกรรมการฯ + * + */ + @Get("") + async GetList(@Request() request: RequestWithUser) { + await new permission().PermissionList(request, "SYS_PROBATION"); - const appoint = await this.appointRepository.find({}) + const appoint = await this.appointRepository.find({ + where: { createdUserId: request.user.sub }, + }); - return new HttpSuccess(appoint) - } + return new HttpSuccess(appoint); + } - /** - * API รายการแต่งตั้งคณะกรรมการฯ ที่ออกคำสั่งแล้วทดลองงาน - * - * @summary รายการแต่งตั้งคณะกรรมการฯ ที่ออกคำสั่งแล้ว - * - */ - @Get("list/{id}") - async GetListCommand(@Request() request: RequestWithUser, @Path() id: string) { - const appoint = await this.appointRepository.find({ - relations: ["directors"], - where: { profileId: id, status: "DONE" }, - }) + /** + * API รายการแต่งตั้งคณะกรรมการฯ ที่ออกคำสั่งแล้วทดลองงาน + * + * @summary รายการแต่งตั้งคณะกรรมการฯ ที่ออกคำสั่งแล้ว + * + */ + @Get("list/{id}") + async GetListCommand(@Request() request: RequestWithUser, @Path() id: string) { + const appoint = await this.appointRepository.find({ + relations: ["directors"], + where: { profileId: id, status: "DONE" }, + }); - return new HttpSuccess(appoint) - } + return new HttpSuccess(appoint); + } - /** - * API สร้างการแต่งตั้งคณะกรรมการฯ ทดลองงาน - * - * @summary สร้างการแต่งตั้งคณะกรรมการฯ - * - */ - @Post("") - async Create(@Request() request: RequestWithUser, @Body() requestBody: CreateAppoint) { - await new permission().PermissionCreate(request, "SYS_PROBATION") + /** + * API สร้างการแต่งตั้งคณะกรรมการฯ ทดลองงาน + * + * @summary สร้างการแต่งตั้งคณะกรรมการฯ + * + */ + @Post("") + async Create(@Request() request: RequestWithUser, @Body() requestBody: CreateAppoint) { + await new permission().PermissionCreate(request, "SYS_PROBATION"); - const data: any = { - topic: requestBody.topic, - profileId: requestBody.profileId, - createdUserId: request.user.sub, - createdFullName: request.user.name, - } - const before = null - const appoint = await this.appointRepository.save(data, { data: request }) - setLogDataDiff(request, { before, after: appoint }) + const data: any = { + topic: requestBody.topic, + profileId: requestBody.profileId, + createdUserId: request.user.sub, + createdFullName: request.user.name, + }; + const before = null; + const appoint = await this.appointRepository.save(data, { data: request }); + setLogDataDiff(request, { before, after: appoint }); - return new HttpSuccess(appoint.id) - } + return new HttpSuccess(appoint.id); + } - /** - * API ดึงข้อมูลแต่งตั้งคณะกรรมการฯ - * - * @summary API ดึงข้อมูลแต่งตั้งคณะกรรมการฯ ตาม id - * - */ - @Get("{id}") - async GetById(@Request() request: RequestWithUser, @Path() id: string) { - let _workflow = await new permission().Workflow(request, id, "SYS_PROBATION") - if (_workflow == false) await new permission().PermissionGet(request, "SYS_PROBATION") + /** + * API ดึงข้อมูลแต่งตั้งคณะกรรมการฯ + * + * @summary API ดึงข้อมูลแต่งตั้งคณะกรรมการฯ ตาม id + * + */ + @Get("{id}") + async GetById(@Request() request: RequestWithUser, @Path() id: string) { + let _workflow = await new permission().Workflow(request, id, "SYS_PROBATION"); + if (_workflow == false) await new permission().PermissionGet(request, "SYS_PROBATION"); - const appoint = await this.appointRepository.findOne({ - select: ["id", "topic", "status", "profileId"], - where: { id }, - relations: ["directors"], - }) + const appoint = await this.appointRepository.findOne({ + select: ["id", "topic", "status", "profileId"], + where: { id }, + relations: ["directors"], + }); - return new HttpSuccess(appoint) - } + return new HttpSuccess(appoint); + } - /** - * API แก้ไขการแต่งตั้งคณะกรรมการฯ ทดลองงาน - * - * @summary แก้ไขการแต่งตั้งคณะกรรมการฯ - * - */ - @Put("{id}") - async Update(@Request() request: RequestWithUser, @Body() requestBody: UpdateAppoint, @Path() id: string) { - await new permission().PermissionUpdate(request, "SYS_PROBATION") + /** + * API แก้ไขการแต่งตั้งคณะกรรมการฯ ทดลองงาน + * + * @summary แก้ไขการแต่งตั้งคณะกรรมการฯ + * + */ + @Put("{id}") + async Update( + @Request() request: RequestWithUser, + @Body() requestBody: UpdateAppoint, + @Path() id: string, + ) { + await new permission().PermissionUpdate(request, "SYS_PROBATION"); - const appoint: any = await this.appointRepository.findOne({ where: { id } }) + const appoint: any = await this.appointRepository.findOne({ where: { id } }); - if (!appoint) { - throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการแต่งตั้งคณะกรรมการฯ") - } + if (!appoint) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลการแต่งตั้งคณะกรรมการฯ"); + } - const before = appoint + const before = appoint; - appoint.topic = requestBody.topic - appoint.updateUserId = request.user.sub - appoint.updateFullName = request.user.name + appoint.topic = requestBody.topic; + appoint.updateUserId = request.user.sub; + appoint.updateFullName = request.user.name; - await this.appointDirectorRepository.delete({ appointId: id }) - const directors = await requestBody.persons.map((x: Person) => ({ - ...x, - appointId: id, - createdUserId: request.user.sub, - createdFullName: request.user.name, - updateUserId: request.user.sub, - updateFullName: request.user.name, - })) - await this.appointDirectorRepository.save(directors) + await this.appointDirectorRepository.delete({ appointId: id }); + const directors = await requestBody.persons.map((x: Person) => ({ + ...x, + appointId: id, + createdUserId: request.user.sub, + createdFullName: request.user.name, + updateUserId: request.user.sub, + updateFullName: request.user.name, + })); + await this.appointDirectorRepository.save(directors); - await this.appointRepository.save(appoint, { data: request }) - setLogDataDiff(request, { before, after: appoint }) + await this.appointRepository.save(appoint, { data: request }); + setLogDataDiff(request, { before, after: appoint }); - return new HttpSuccess() - } + return new HttpSuccess(); + } - /** - * API ลบรายการแต่งตั้งคณะกรรมการฯ - * - * @summary ลบรายการแต่งตั้งคณะกรรมการฯ - * - */ - @Delete("{id}") - public async deleteRole(@Path() id: string, @Request() request: RequestWithUser) { - await new permission().PermissionDelete(request, "SYS_PROBATION") + /** + * API ลบรายการแต่งตั้งคณะกรรมการฯ + * + * @summary ลบรายการแต่งตั้งคณะกรรมการฯ + * + */ + @Delete("{id}") + public async deleteRole(@Path() id: string, @Request() request: RequestWithUser) { + await new permission().PermissionDelete(request, "SYS_PROBATION"); - await this.appointDirectorRepository.delete({ appointId: id }) + await this.appointDirectorRepository.delete({ appointId: id }); - const result = await this.appointRepository.delete({ id }) - if (!result) throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล") + const result = await this.appointRepository.delete({ id }); + if (!result) throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูล"); - return new HttpSuccess() - } + return new HttpSuccess(); + } }