From 7e9aa4e0faf14dc34837561e7e560c6abe432fb4 Mon Sep 17 00:00:00 2001 From: Bright Date: Thu, 4 Apr 2024 18:05:18 +0700 Subject: [PATCH] no message --- .../DevelopmentScholarshipController.ts | 327 ++++++++++++++++++ tsoa.json | 3 + 2 files changed, 330 insertions(+) create mode 100644 src/controllers/DevelopmentScholarshipController.ts diff --git a/src/controllers/DevelopmentScholarshipController.ts b/src/controllers/DevelopmentScholarshipController.ts new file mode 100644 index 0000000..31a6767 --- /dev/null +++ b/src/controllers/DevelopmentScholarshipController.ts @@ -0,0 +1,327 @@ +import { + Controller, + Get, + Post, + Put, + Delete, + Route, + Security, + Tags, + Body, + Path, + Request, + Query, +} from "tsoa"; +import { AppDataSource } from "../database/data-source"; +import { Brackets, Not } from "typeorm"; +import HttpSuccess from "../interfaces/http-success"; +import HttpError from "../interfaces/http-error"; +import HttpStatusCode from "../interfaces/http-status"; +import { Development } from "../entities/Development"; +import { + CreateDevelopmentHistory, + DevelopmentHistory, + UpdateDevelopmentHistory, +} from "../entities/DevelopmentHistory"; +import { PosType } from "../entities/PosType"; +import { PosLevel } from "../entities/PosLevel"; + +@Route("api/v1/development/scholarship") +@Tags("DevelopmentScholarship") +@Security("bearerAuth") +export class DevelopmentScholarshipController extends Controller { + private developmentHistoryRepository = AppDataSource.getRepository(DevelopmentHistory); + private developmentRepository = AppDataSource.getRepository(Development); + private posTypeRepository = AppDataSource.getRepository(PosType); + private posLevelRepository = AppDataSource.getRepository(PosLevel); + + // /** + // * API เพิ่มประวัติการฝึกอบรม/ดูงาน + // * + // * @summary DEV_006 - เพิ่มประวัติการฝึกอบรม/ดูงาน#6 + // * + // */ + // @Post() + // async CreateDevelopmentHistory( + // @Body() requestBody: CreateDevelopmentHistory, + // @Request() request: { user: Record }, + // ) { + // const type = "OFFICER"; + // const chk_name = await this.developmentHistoryRepository.find({ + // where: { + // citizenId: requestBody.citizenId, + // developmentId: requestBody.developmentId, + // type: type, + // }, + // }); + // if (chk_name.length > 0) { + // throw new HttpError(HttpStatusCode.NOT_FOUND, "ประวัติการฝึกอบรม/ดูงาน มีอยู่ในระบบแล้ว"); + // } + + // const checkId = await this.developmentRepository.findOne({ + // where: { id: requestBody.developmentId }, + // }); + // if (!checkId) { + // throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรม"); + // } + // if (requestBody.posTypeId != null) { + // const checkId = await this.posTypeRepository.findOne({ + // where: { id: requestBody.posTypeId }, + // }); + // if (!checkId) { + // throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่ง"); + // } + // } + // if (requestBody.posLevelId != null) { + // const checkId = await this.posLevelRepository.findOne({ + // where: { id: requestBody.posLevelId }, + // }); + // if (!checkId) { + // throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลระดับตำแหน่ง"); + // } + // } + + // const development = Object.assign(new DevelopmentHistory(), requestBody); + // development.type = type; + // development.createdUserId = request.user.sub; + // development.createdFullName = request.user.name; + // development.lastUpdateUserId = request.user.sub; + // development.lastUpdateFullName = request.user.name; + // await this.developmentHistoryRepository.save(development); + // return new HttpSuccess(development.id); + // } + +// /** +// * API แก้ไขประวัติการฝึกอบรม/ดูงาน +// * +// * @summary DEV_007 - แก้ไขประวัติการฝึกอบรม/ดูงาน #7 +// * +// * @param {string} id Id โครงการ +// */ +// @Put("{id}") +// async UpdateDevelopmentHistory( +// @Path() id: string, +// @Body() requestBody: UpdateDevelopmentHistory, +// @Request() request: { user: Record }, +// ) { +// const type = "OFFICER"; +// const development = await this.developmentHistoryRepository.findOne({ +// where: { id: id, type: type }, +// }); +// if (!development) { +// throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประวัติการฝึกอบรม/ดูงานนี้"); +// } +// const chk_name = await this.developmentHistoryRepository.find({ +// where: { +// citizenId: requestBody.citizenId, +// developmentId: requestBody.developmentId, +// type: type, +// id: Not(id), +// }, +// }); +// if (chk_name.length > 0) { +// throw new HttpError(HttpStatusCode.NOT_FOUND, "ประวัติการฝึกอบรม/ดูงาน มีอยู่ในระบบแล้ว"); +// } +// const checkId = await this.developmentRepository.findOne({ +// where: { id: requestBody.developmentId }, +// }); +// if (!checkId) { +// throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรม"); +// } +// if (requestBody.posTypeId != null) { +// const checkId = await this.posTypeRepository.findOne({ +// where: { id: requestBody.posTypeId }, +// }); +// if (!checkId) { +// throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประเภทตำแหน่ง"); +// } +// } +// if (requestBody.posLevelId != null) { +// const checkId = await this.posLevelRepository.findOne({ +// where: { id: requestBody.posLevelId }, +// }); +// if (!checkId) { +// throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลระดับตำแหน่ง"); +// } +// } +// Object.assign(development, requestBody); +// development.type = type; +// development.lastUpdateUserId = request.user.sub; +// development.lastUpdateFullName = request.user.name; +// await this.developmentHistoryRepository.save(development); +// return new HttpSuccess(development.id); +// } + +// /** +// * API ลบประวัติการฝึกอบรม/ดูงาน +// * +// * @summary DEV_008 - ลบประวัติการฝึกอบรม/ดูงาน #8 +// * +// * @param {string} id Id โครงการ +// */ +// @Delete("{id}") +// async DeleteDevelopmentHistory(@Path() id: string) { +// const type = "OFFICER"; +// const development = await this.developmentHistoryRepository.findOne({ +// where: { id: id, type: type }, +// }); +// if (!development) { +// throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประวัติการฝึกอบรม/ดูงานนี้"); +// } + +// await this.developmentHistoryRepository.remove(development); +// return new HttpSuccess(); +// } + +// /** +// * API รายการประวัติการฝึกอบรม/ดูงาน +// * +// * @summary DEV_009 - รายการประวัติการฝึกอบรม/ดูงาน #9 +// * +// */ +// @Get() +// async GetDevelopmentHistoryLists( +// @Query("page") page: number = 1, +// @Query("pageSize") pageSize: number = 10, +// @Query("keyword") keyword?: string, +// @Query("year") year?: number, +// ) { +// const type = "OFFICER"; +// const [development, total] = await AppDataSource.getRepository(DevelopmentHistory) +// .createQueryBuilder("developmentHistory") +// .leftJoinAndSelect("developmentHistory.development", "development") +// .leftJoinAndSelect("developmentHistory.posLevel", "posLevel") +// .leftJoinAndSelect("developmentHistory.posType", "posType") +// .andWhere(year != 0 && year != null && year != undefined ? "development.year = :year" : "1=1", { year: year }) +// .andWhere("developmentHistory.type = :type", { type: type }) +// .andWhere( +// new Brackets((qb) => { +// qb.where( +// keyword != null && keyword != "" +// ? "developmentHistory.prefix LIKE :keyword" +// : "1=1", +// { +// keyword: `%${keyword}%`, +// }, +// ) +// .orWhere( +// keyword != null && keyword != "" +// ? "developmentHistory.firstName LIKE :keyword" +// : "1=1", +// { +// keyword: `%${keyword}%`, +// }, +// ) +// .orWhere( +// keyword != null && keyword != "" +// ? "developmentHistory.lastName LIKE :keyword" +// : "1=1", +// { +// keyword: `%${keyword}%`, +// }, +// ) +// .orWhere( +// keyword != null && keyword != "" +// ? "developmentHistory.position LIKE :keyword" +// : "1=1", +// { +// keyword: `%${keyword}%`, +// }, +// ) +// .orWhere( +// keyword != null && keyword != "" +// ? "developmentHistory.position LIKE :keyword" +// : "1=1", +// { +// keyword: `%${keyword}%`, +// }, +// ) +// .orWhere( +// keyword != null && keyword != "" +// ? "development.projectName LIKE :keyword" +// : "1=1", +// { +// keyword: `%${keyword}%`, +// }, +// ) +// .orWhere( +// keyword != null && keyword != "" +// ? "posType.posTypeName LIKE :keyword" +// : "1=1", +// { +// keyword: `%${keyword}%`, +// }, +// ) +// .orWhere( +// keyword != null && keyword != "" +// ? "posLevel.posLevelName LIKE :keyword" +// : "1=1", +// { +// keyword: `%${keyword}%`, +// }, +// ); +// }), +// ) +// .orderBy("developmentHistory.createdAt", "DESC") +// .skip((page - 1) * pageSize) +// .take(pageSize) +// .getManyAndCount(); +// const formattedData = development.map(item => ({ +// id: item.id, +// citizenId: item.citizenId, +// fullName: item.prefix+item.firstName+" "+item.lastName, +// position: item.position, +// posType: item.posType ? item.posType.posTypeName : null, +// posLevel: item.posLevel ? item.posLevel.posLevelName : null, +// posExecutive: item.posExecutive, +// projectName: item.development.projectName, +// })); + +// return new HttpSuccess({ data: formattedData, total }); +// } + +// /** +// * API รายละเอียดประวัติการฝึกอบรม/ดูงาน +// * +// * @summary DEV_010 - รายละเอียดประวัติการฝึกอบรม/ดูงาน #10 +// * +// * @param {string} id Id โครงการ +// */ +// @Get("{id}") +// async GetDevelopemtHistoryById(@Path() id: string) { +// const type = "OFFICER"; +// const getDevelopment = await this.developmentHistoryRepository.findOne({ +// relations: ["development"], +// where: { id: id, type: type }, +// }); +// if (!getDevelopment) { +// throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประวัติการฝึกอบรม/ดูงานนี้"); +// } + +// const formattedData = { +// rank: getDevelopment.rank ? getDevelopment.rank : null, +// prefix: getDevelopment.prefix ? getDevelopment.prefix : null, +// firstName: getDevelopment.firstName ? getDevelopment.firstName : null, +// lastName: getDevelopment.lastName ? getDevelopment.lastName : null, +// citizenId: getDevelopment.citizenId ? getDevelopment.citizenId : null, +// position: getDevelopment.position ? getDevelopment.position : null, +// posLevelId: getDevelopment.posLevelId ? getDevelopment.posLevelId : null, +// posTypeId: getDevelopment.posTypeId ? getDevelopment.posTypeId : null, +// developmentId: getDevelopment.developmentId ? getDevelopment.developmentId : null, +// order: getDevelopment.order ? getDevelopment.order : null, +// dateOrder: getDevelopment.dateOrder ? getDevelopment.dateOrder : null, +// year: getDevelopment.development.year ? getDevelopment.development.year : null, +// projectName: getDevelopment.development.projectName ? getDevelopment.development.projectName : null, +// dateStart: getDevelopment.development.dateStart ? getDevelopment.development.dateStart : null, +// dateEnd: getDevelopment.development.dateEnd ? getDevelopment.development.dateEnd : null, +// totalDate: getDevelopment.development.totalDate ? getDevelopment.development.totalDate : null, +// addressAcademic: getDevelopment.development.addressAcademic ? getDevelopment.development.addressAcademic : null, +// topicAcademic: getDevelopment.development.topicAcademic ? getDevelopment.development.topicAcademic : null, +// dateStudyStart: getDevelopment.development.dateStudyStart ? getDevelopment.development.dateStudyStart : null, +// dateStudyEnd: getDevelopment.development.dateStudyEnd ? getDevelopment.development.dateStudyEnd : null, +// org: null, +// }; + +// return new HttpSuccess(formattedData); +// } +} diff --git a/tsoa.json b/tsoa.json index 63f028c..3475583 100644 --- a/tsoa.json +++ b/tsoa.json @@ -37,6 +37,9 @@ }, { "name": "DevelopmentEmployeeHistory", "description": "ประวัติการฝึกอบรม/ดูงานลูกจ้าง." + }, + { + "name": "DevelopmentScholarship", "description": "ทุนการศึกษา/ฝึกอบรม" } ] },