diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index b9a65e7..1acdc8d 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -822,6 +822,70 @@ export class ReportController extends Controller { templateName = "KPI8"; reportName = "KPI8"; //use_filter + if (requestBody.profileId) { + const profileEvaluationIds = await AppDataSource.getRepository(KpiUserEvaluation) + .createQueryBuilder("kpiUserEvaluation") + .leftJoinAndSelect("kpiUserEvaluation.kpiPeriod", "kpiPeriod") + .where("kpiUserEvaluation.profileId = :profileId", { profileId: requestBody.profileId }) + .andWhere("kpiUserEvaluation.kpiPeriodId = :kpiPeriodId", { + kpiPeriodId: requestBody.periodId, + }) + .groupBy("kpiUserEvaluation.kpiPeriodId") + .select("MIN(kpiUserEvaluation.id) as id") + .getRawMany(); + const userInfo = await this.kpiUserEvaluationRepository.find({ + where: { + id: In(profileEvaluationIds.map((x: any) => x.id)), + }, + }); + const userDevelopmentLists = await this.kpiUserDevelopmentRepository.find({ + where: { + kpiUserEvaluationId: In(profileEvaluationIds.map((x: any) => x.id)), + }, + select: [ + "id", + "name", + "target", + "summary", + "point", + "achievement0", + "achievement5", + "achievement10", + "isDevelopment10", + "isDevelopment20", + "isDevelopment70", + ], + }); + + const formattedUserDevelopmentLists = userDevelopmentLists.map( + (development: any, index: number) => ({ + no: Extension.ToThaiNumber((index + 1).toString()), + ...development, + summary: development.summary + ? Extension.ToThaiNumber(development.summary.toString()) + : null, + point: development.point ? Extension.ToThaiNumber(development.point.toString()) : null, + }), + ); + + const fullNameParts = [userInfo[0].child4, userInfo[0].child3, userInfo[0].child2, userInfo[0].child1, userInfo[0].org]; + const affiliation = fullNameParts + .filter((part) => part !== undefined && part !== null) + .join("/"); + formattedData = { + fullName: userInfo + ? userInfo[0].prefix + userInfo[0].firstName + " " + userInfo[0].lastName + : null, + affiliation: affiliation, + durationKPI: data?.durationKPI, + position: userInfo ? userInfo[0].position : null, + posType: userInfo ? userInfo[0].posTypeName : null, + posLevel: userInfo ? userInfo[0].posLevelName : null, + period1: Extension.ToThaiNumber(period1), + period2: Extension.ToThaiNumber(period2), + developments: formattedUserDevelopmentLists, + } || [{}]; + } } if (requestBody.type == "KPI9") { templateName = "KPI9";