diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index 1b5fcdb..55a0d47 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -37,6 +37,7 @@ export class ReportController extends Controller { @Post("announcement") async GetReportAnnouncement( + @Request() request: { user: Record }, @Body() requestBody: { type: string; @@ -310,62 +311,106 @@ export class ReportController extends Controller { if (requestBody.type == "KPI3") { templateName = "KPI3"; reportName = "KPI3"; - const userEvaluations_ = - data?.kpiUserEvaluations?.length > 0 - ? data.kpiUserEvaluations.map((x: any, idx: number) => ({ - no: Extension.ToThaiNumber((idx + 1).toString()), - fullName: `${x.prefix}${x.firstName} ${x.lastName}`, - position: x.position ? x.position : "", - point1: - x.summaryPoint >= 90.0 ? Extension.ToThaiNumber(x.summaryPoint.toString()) : "", - point2: - x.summaryPoint >= 80.0 && x.summaryPoint <= 89.99 - ? Extension.ToThaiNumber(x.summaryPoint.toString()) - : "", - point3: - x.summaryPoint >= 70.0 && x.summaryPoint <= 79.99 - ? Extension.ToThaiNumber(x.summaryPoint.toString()) - : "", - point4: - x.summaryPoint >= 60.0 && x.summaryPoint <= 69.99 - ? Extension.ToThaiNumber(x.summaryPoint.toString()) - : "", - point5: - x.summaryPoint < 60.0 ? Extension.ToThaiNumber(x.summaryPoint.toString()) : "", - remark: "", - })) - : [{}]; - // const prefixEvaluator_ = data.kpiUserEvaluations.find((x:any) => x.prefixEvaluator); - // const firstNameEvaluator_ = data.kpiUserEvaluations.firstNameEvaluator ? data.kpiUserEvaluations.firstNameEvaluator : ""; - // const lastNameEvaluator_ = data.kpiUserEvaluations.lastNameEvaluator ? data.kpiUserEvaluations.lastNameEvaluator : ""; + const userEvaluations_ = data?.kpiUserEvaluations?.length > 0 + ? data.kpiUserEvaluations.map((x:any, idx:number) => ({ + no: Extension.ToThaiNumber((idx+1).toString()), + fullName: `${x.prefix}${x.firstName} ${x.lastName}`, + position: x.position ? x.position : "", + point1: x.summaryPoint >= 90.00 ? Extension.ToThaiNumber(x.summaryPoint.toString()) : "", + point2: x.summaryPoint >= 80.00 && x.summaryPoint <= 89.99 ? Extension.ToThaiNumber(x.summaryPoint.toString()) : "", + point3: x.summaryPoint >= 70.00 && x.summaryPoint <= 79.99 ? Extension.ToThaiNumber(x.summaryPoint.toString()) : "", + point4: x.summaryPoint >= 60.00 && x.summaryPoint <= 69.99 ? Extension.ToThaiNumber(x.summaryPoint.toString()) : "", + point5: x.summaryPoint < 60.00 ? Extension.ToThaiNumber(x.summaryPoint.toString()) : "", + remark: x.reasonEvaluator + })) + : [{}] + const prefixEvaluator_ = data.kpiUserEvaluations.length > 0 ? data.kpiUserEvaluations[0].prefixEvaluator : "" + const firstNameEvaluator_ = data.kpiUserEvaluations.length > 0 ? data.kpiUserEvaluations[0].firstNameEvaluator : "" + const lastNameEvaluator_ = data.kpiUserEvaluations.length > 0 ? data.kpiUserEvaluations[0].lastNameEvaluator : "" + const fullNameEvaluator = prefixEvaluator_ != "" && firstNameEvaluator_ != "" && lastNameEvaluator_ != "" + ? `${prefixEvaluator_}${firstNameEvaluator_} ${lastNameEvaluator_}` + : "-" + const commanderId = data.kpiUserEvaluations.length > 0 ? data.kpiUserEvaluations[0].commanderId : "" + let prefixCommander = "" + let firstNameCommander = "" + let lastNameCommander = "" + let positionCommander = "" + let posTypeNameCommander = "" + let posLevelNameCommander = "" + let orgCommander = "" + if(commanderId != "" && commanderId != null) { + await new CallAPI() + .GetData(request, "org/profile/profileid/position/"+commanderId) + .then((x) => { + prefixCommander = x.prefix; + firstNameCommander = x.firstName; + lastNameCommander = x.lastName; + positionCommander = x.position; + orgCommander = x.root; + posTypeNameCommander = x.posTypeName; + posLevelNameCommander = x.posLevelName; + }) + .catch((x) => { + // throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลในทะเบียนประวัติ"); + }); + } + const fullNameCommander = prefixCommander != "" && firstNameCommander != "" && firstNameCommander != "" + ? `${prefixCommander}${firstNameCommander} ${lastNameCommander}` + : "-" + + const commanderHighId = data.kpiUserEvaluations.length > 0 ? data.kpiUserEvaluations[0].commanderHighId : "" + let prefixCommanderHigh = "" + let firstNameCommanderHigh = "" + let lastNameCommanderHigh = "" + let positionCommanderHigh = "" + let posTypeNameCommanderHigh = "" + let posLevelNameCommanderHigh = "" + let orgCommanderHigh + if(commanderHighId != "" && commanderHighId != null) { + await new CallAPI() + .GetData(request, "org/profile/profileid/position/"+commanderHighId) + .then((x) => { + prefixCommanderHigh = x.prefix; + firstNameCommanderHigh = x.firstName; + lastNameCommanderHigh = x.lastName; + positionCommanderHigh = x.position; + orgCommanderHigh = x.root; + posTypeNameCommanderHigh = x.posTypeName; + posLevelNameCommanderHigh = x.posLevelName; + }) + .catch((x) => { + // throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลในทะเบียนประวัติ"); + }); + } + const fullNameCommanderHigh = prefixCommanderHigh != "" && firstNameCommanderHigh != "" && lastNameCommanderHigh != "" + ? `${prefixCommanderHigh}${firstNameCommanderHigh} ${lastNameCommanderHigh}` + : "-" + formattedData = { - year: data?.year ? Extension.ToThaiNumber((data.year + 543).toString()) : "-", + year: data?.year ? Extension.ToThaiNumber((data.year+543).toString()) : "-", period1: Extension.ToThaiNumber(period1), period2: Extension.ToThaiNumber(period2), durationKPI: data?.durationKPI, - root: - data?.kpiUserEvaluations != null && data?.kpiUserEvaluations.length > 0 - ? data?.kpiUserEvaluations[0].orgEvaluator - : "-", - fullNameEvaluator: "-", - positionEvaluator: "-", - posTypeNameEvaluator: "-", - posLevelNameEvaluator: "-", - orgEvaluator: "-", - - fullNameCommander: "-", - positionCommander: "-", - posTypeNameCommander: "-", - posLevelNameCommander: "-", - orgCommander: "-", - - fullNameCommanderHigh: "-", - positionCommanderHigh: "-", - posTypeNameCommanderHigh: "-", - posLevelNameCommanderHigh: "-", - orgCommanderHigh: "-", - userEvaluations: userEvaluations_, - }; + root: data?.kpiUserEvaluations != null && data?.kpiUserEvaluations.length > 0 + ? data?.kpiUserEvaluations[0].orgEvaluator + : "-", + fullNameEvaluator: fullNameEvaluator, + positionEvaluator: data.kpiUserEvaluations.length > 0 ? data.kpiUserEvaluations[0].positionEvaluator : "-", + posTypeNameEvaluator: data.kpiUserEvaluations.length > 0 ? data.kpiUserEvaluations[0].posTypeNameEvaluator : "-", + posLevelNameEvaluator: data.kpiUserEvaluations.length > 0 ? data.kpiUserEvaluations[0].posLevelNameEvaluator : "-", + orgEvaluator: data.kpiUserEvaluations.length > 0 ? data.kpiUserEvaluations[0].orgEvaluator : "-", + fullNameCommander: fullNameCommander, + positionCommander: positionCommander != "" && positionCommander != null ? positionCommander : "-", + posTypeNameCommander: posTypeNameCommander != "" && posTypeNameCommander != null ? posTypeNameCommander : "-", + posLevelNameCommander: posLevelNameCommander != "" && posLevelNameCommander != null ? posLevelNameCommander : "-", + orgCommander: orgCommander != "" && orgCommander != null ? orgCommander : "-", + fullNameCommanderHigh: fullNameCommanderHigh, + positionCommanderHigh: positionCommanderHigh != "" && positionCommanderHigh != null ? positionCommanderHigh : "-", + posTypeNameCommanderHigh: posTypeNameCommanderHigh != "" && posTypeNameCommanderHigh != null ? posTypeNameCommanderHigh : "-", + posLevelNameCommanderHigh: posLevelNameCommanderHigh != "" && posLevelNameCommanderHigh != null ? posLevelNameCommanderHigh : "-", + orgCommanderHigh: orgCommanderHigh != "" && orgCommanderHigh != null ? orgCommanderHigh : "-", + userEvaluations : userEvaluations_ + } } if (requestBody.type == "KPI4") { templateName = "KPI4"; @@ -871,33 +916,38 @@ export class ReportController extends Controller { if (requestBody.type == "KPI7") { templateName = "KPI7"; reportName = "KPI7"; + + const userEvaluations_ = await Promise.all(data.kpiUserEvaluations.length > 0 + ? data.kpiUserEvaluations.map(async (x: any, idx: number) => { + const target_ = await this.kpiUserDevelopmentRepository.findOne({ + where: { kpiUserEvaluationId: x.id} + }); + return { + no: Extension.ToThaiNumber((idx + 1).toString()), + fullName: `${x.prefix}${x.firstName} ${x.lastName}`, + position: x.position ? x.position : "", + posLevelName: x.posLevelName ? x.posLevelName : "", + developName: x.topicEvaluator ? x.topicEvaluator : "", + developEvaluator: x.developEvaluator ? x.developEvaluator : "", + target: target_ ? target_.target: "", + timeEvaluator: x.timeEvaluator ? Extension.ToThaiNumber(x.timeEvaluator) : "", + developResults: "", //วิธีการวัดผลการพัฒนา + evaluationResults: x.evaluationResults + ? Extension.EvaluationResult(x.evaluationResults) + : "", + }}) + : [{}] + ) formattedData = { - year: data?.year ? Extension.ToThaiNumber((data.year + 543).toString()) : "-", + year: data.year ? Extension.ToThaiNumber((data.year + 543).toString()) : "-", period1: Extension.ToThaiNumber(period1), period2: Extension.ToThaiNumber(period2), - durationKPI: data?.durationKPI, - root: - data?.kpiUserEvaluations != null && data?.kpiUserEvaluations.length > 0 - ? data?.kpiUserEvaluations[0].orgEvaluator - : "-", - userEvaluations: - data.kpiUserEvaluations.length > 0 - ? data.kpiUserEvaluations.map((x: any, idx: number) => ({ - no: Extension.ToThaiNumber((idx + 1).toString()), - fullName: `${x.prefix}${x.firstName} ${x.lastName}`, - position: x.position ? x.position : "", - posLevelName: x.posLevelName ? x.posLevelName : "", - developName: x.topicEvaluator ? x.topicEvaluator : "", - developEvaluator: x.developEvaluator ? x.developEvaluator : "", - target: "", //เป้าหมาย - timeEvaluator: x.timeEvaluator ? x.timeEvaluator : "", - developResults: "", //วิธีการวัดผลการพัฒนา - evaluationResults: x.evaluationResults - ? Extension.EvaluationResult(x.evaluationResults) - : "", - })) - : [{}], - }; + durationKPI: data.durationKPI, + root: data.kpiUserEvaluations != null && data.kpiUserEvaluations.length > 0 + ? data?.kpiUserEvaluations[0].orgEvaluator + : "-", + userEvaluations: userEvaluations_ + } } if (requestBody.type == "KPI8") { templateName = "KPI8";