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 { KpiPeriod } from "../entities/kpiPeriod"; import { KpiUserEvaluation } from "../entities/kpiUserEvaluation"; import { off } from "process"; import Extension from "../interfaces/extension"; @Route("api/v1/kpi/report") @Tags("Report") @Security("bearerAuth") export class ReportController extends Controller { private kpiPeriodRepository = AppDataSource.getRepository(KpiPeriod); private kpiUserEvaluationRepository = AppDataSource.getRepository(KpiUserEvaluation); @Post("announcement/{id}") async GetReportAnnouncement( @Path() id: string, @Body() requestBody: { root: string; periodId: string }, ) { const getEvaluations = await this.kpiUserEvaluationRepository.find({ where: { kpiPeriodId: id }, }); const getPeriod = await this.kpiPeriodRepository.findOne({ where: { id: id }, }); if (!getPeriod) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่มีรอบการประเมินนี้อยู่ในระบบ"); } const officer = getEvaluations.map((evaluation) => ({ fullName: `${evaluation.prefix} ${evaluation.firstName} ${evaluation.lastName}`, position: evaluation.position, posLevel: evaluation.posLevelName, result: "ดีเด่น", })); const formattedData = { periodId: requestBody.periodId, root: requestBody.root, authorizedFullName: "นาย สมหมาย นครชัยศรี", authorizedPosition: "เจ้าหน้าที่พิเศษ", announceYear: Extension.ToThaiNumber(getPeriod.year.toString()), oc: "test", organizationName: "test", announceDate: "๑๒ สิงหาคม ๒๕๖๔", roundNo: "๑ (๒๕๖๔) ", officer: officer, }; return new HttpSuccess({ template: "announce", reportName: "announce", data: formattedData, }); } }