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