hrms-api-kpi/src/controllers/ReportController.ts

69 lines
2 KiB
TypeScript
Raw Normal View History

2024-06-13 11:34:25 +07:00
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";
2024-06-14 11:01:34 +07:00
import { KpiPeriod } from "../entities/kpiPeriod";
import { KpiUserEvaluation } from "../entities/kpiUserEvaluation";
2024-06-13 11:34:25 +07:00
@Route("api/v1/kpi/report")
@Tags("Report")
@Security("bearerAuth")
export class ReportController extends Controller {
2024-06-14 11:01:34 +07:00
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 (!getEvaluations || getEvaluations.length === 0) {
console.log("No evaluations found for the given kpiPeriodId: ", id);
return;
}
if (!getPeriod) {
console.log("No period data found for the given id: ", id);
return;
}
const formattedData = getEvaluations.map((evaluation) => ({
periodId: requestBody.periodId,
root: requestBody.root,
fullName: `${evaluation.prefix} ${evaluation.firstName} ${evaluation.lastName}`,
position: evaluation.position,
posLevel: evaluation.posLevelName,
announceYear: getPeriod.year,
result: "ดีเด่น",
oc: "test",
organizationName: "test",
announceDate: "testDATE",
roundNo: "1",
}));
2024-06-13 11:34:25 +07:00
return new HttpSuccess({
template: "announce",
reportName: "announce",
data: formattedData,
});
}
}