diff --git a/src/controllers/OrganizationDotnetController.ts b/src/controllers/OrganizationDotnetController.ts index 7311a87d..5bf800e1 100644 --- a/src/controllers/OrganizationDotnetController.ts +++ b/src/controllers/OrganizationDotnetController.ts @@ -2391,53 +2391,53 @@ export class OrganizationDotnetController extends Controller { }, }); - const currentYear = new Date().getFullYear(); - const years = [currentYear, currentYear - 1, currentYear - 2, currentYear - 3, currentYear - 4]; - - // APR Averages - const aprAverages: { [year: number]: number | null } = {}; - const aprSums: { [year: number]: number } = {}; - const aprCounts: { [year: number]: number } = {}; - - // OCT Averages - const octAverages: { [year: number]: number | null } = {}; - const octSums: { [year: number]: number } = {}; - const octCounts: { [year: number]: number } = {}; - - years.forEach(year => { - aprAverages[year] = null; - aprSums[year] = 0; - aprCounts[year] = 0; - - octAverages[year] = null; - octSums[year] = 0; - octCounts[year] = 0; - }); - - profiles.forEach(profile => { - const assessments = profile.profileAssessments || []; - - assessments.forEach(assessment => { - const year = Number(assessment.year); - - if (years.includes(year)) { - if (assessment.period === 'APR') { - aprSums[year] += assessment.pointSum; - aprCounts[year] += 1; - } - - if (assessment.period === 'OCT') { - octSums[year] += assessment.pointSum; - octCounts[year] += 1; - } - } - }); - }); - - years.forEach(year => { - aprAverages[year] = aprCounts[year] > 0 ? aprSums[year] / aprCounts[year] : null; - octAverages[year] = octCounts[year] > 0 ? octSums[year] / octCounts[year] : null; - }); + // const currentYear = new Date().getFullYear(); + // const years = [currentYear, currentYear - 1, currentYear - 2, currentYear - 3, currentYear - 4]; + + // // APR Averages + // const aprAverages: { [year: number]: number | null } = {}; + // const aprSums: { [year: number]: number } = {}; + // const aprCounts: { [year: number]: number } = {}; + + // // OCT Averages + // const octAverages: { [year: number]: number | null } = {}; + // const octSums: { [year: number]: number } = {}; + // const octCounts: { [year: number]: number } = {}; + + // years.forEach((year) => { + // aprAverages[year] = null; + // aprSums[year] = 0; + // aprCounts[year] = 0; + + // octAverages[year] = null; + // octSums[year] = 0; + // octCounts[year] = 0; + // }); + + // profiles.forEach((profile) => { + // const assessments = profile.profileAssessments || []; + + // assessments.forEach((assessment) => { + // const year = Number(assessment.year); + + // if (years.includes(year)) { + // if (assessment.period === "APR") { + // aprSums[year] += assessment.pointSum; + // aprCounts[year] += 1; + // } + + // if (assessment.period === "OCT") { + // octSums[year] += assessment.pointSum; + // octCounts[year] += 1; + // } + // } + // }); + // }); + + // years.forEach((year) => { + // aprAverages[year] = aprCounts[year] > 0 ? aprSums[year] / aprCounts[year] : null; + // octAverages[year] = octCounts[year] > 0 ? octSums[year] / octCounts[year] : null; + // }); const findRevision = await this.orgRevisionRepo.findOne({ where: { orgRevisionIsCurrent: true }, @@ -2619,16 +2619,16 @@ export class OrganizationDotnetController extends Controller { markLeave: false, markRate: profile.profileAssessments.length > 0 ? true : false, markInsignia: profile.profileInsignias.length > 0 ? true : false, - apr1:aprAverages[currentYear] ? Extension.textPoint(aprAverages[currentYear] as number) : null, - apr2:aprAverages[currentYear - 1] ? Extension.textPoint(aprAverages[currentYear - 1] as number) : null, - apr3:aprAverages[currentYear - 2] ? Extension.textPoint(aprAverages[currentYear - 2] as number) : null, - apr4:aprAverages[currentYear - 3] ? Extension.textPoint(aprAverages[currentYear - 3] as number) : null, - apr5:aprAverages[currentYear - 4] ? Extension.textPoint(aprAverages[currentYear - 4] as number) : null, - oct1:octAverages[currentYear] ? Extension.textPoint(octAverages[currentYear] as number) : null, - oct2:octAverages[currentYear - 1] ? Extension.textPoint(octAverages[currentYear - 1] as number) : null, - oct3:octAverages[currentYear - 2] ? Extension.textPoint(octAverages[currentYear - 2] as number) : null, - oct4:octAverages[currentYear - 3] ? Extension.textPoint(octAverages[currentYear - 3] as number) : null, - oct5:octAverages[currentYear - 4] ? Extension.textPoint(octAverages[currentYear - 4] as number) : null, + // apr1:aprAverages[currentYear] ? Extension.textPoint(aprAverages[currentYear] as number) : null, + // apr2:aprAverages[currentYear - 1] ? Extension.textPoint(aprAverages[currentYear - 1] as number) : null, + // apr3:aprAverages[currentYear - 2] ? Extension.textPoint(aprAverages[currentYear - 2] as number) : null, + // apr4:aprAverages[currentYear - 3] ? Extension.textPoint(aprAverages[currentYear - 3] as number) : null, + // apr5:aprAverages[currentYear - 4] ? Extension.textPoint(aprAverages[currentYear - 4] as number) : null, + // oct1:octAverages[currentYear] ? Extension.textPoint(octAverages[currentYear] as number) : null, + // oct2:octAverages[currentYear - 1] ? Extension.textPoint(octAverages[currentYear - 1] as number) : null, + // oct3:octAverages[currentYear - 2] ? Extension.textPoint(octAverages[currentYear - 2] as number) : null, + // oct4:octAverages[currentYear - 3] ? Extension.textPoint(octAverages[currentYear - 3] as number) : null, + // oct5:octAverages[currentYear - 4] ? Extension.textPoint(octAverages[currentYear - 4] as number) : null, }; }); @@ -2674,41 +2674,41 @@ export class OrganizationDotnetController extends Controller { where: { orgRevisionIsCurrent: true }, }); - // const currentYear = new Date().getFullYear(); + // const currentYear = new Date().getFullYear(); // const years = [currentYear, currentYear - 1, currentYear - 2, currentYear - 3, currentYear - 4]; - + // // APR Averages // const aprAverages: { [year: number]: number | null } = {}; // const aprSums: { [year: number]: number } = {}; // const aprCounts: { [year: number]: number } = {}; - + // // OCT Averages // const octAverages: { [year: number]: number | null } = {}; // const octSums: { [year: number]: number } = {}; // const octCounts: { [year: number]: number } = {}; - + // years.forEach(year => { // aprAverages[year] = null; // aprSums[year] = 0; // aprCounts[year] = 0; - + // octAverages[year] = null; // octSums[year] = 0; // octCounts[year] = 0; // }); - + // profiles.forEach(profile => { // const assessments = profile.profileAssessments || []; - + // assessments.forEach(assessment => { // const year = Number(assessment.year); - + // if (years.includes(year)) { // if (assessment.period === 'APR') { // aprSums[year] += assessment.pointSum; // aprCounts[year] += 1; // } - + // if (assessment.period === 'OCT') { // octSums[year] += assessment.pointSum; // octCounts[year] += 1; @@ -2716,7 +2716,7 @@ export class OrganizationDotnetController extends Controller { // } // }); // }); - + // years.forEach(year => { // aprAverages[year] = aprCounts[year] > 0 ? aprSums[year] / aprCounts[year] : null; // octAverages[year] = octCounts[year] > 0 ? octSums[year] / octCounts[year] : null; @@ -2816,7 +2816,7 @@ export class OrganizationDotnetController extends Controller { x.orgRevision?.orgRevisionIsDraft == false && x.orgRevision?.orgRevisionIsCurrent == true, )?.orgRootId ?? null, - posNo: shortName ?? "", + posNo: shortName ?? "", // apr1:aprAverages[currentYear] ? Extension.textPoint(aprAverages[currentYear] as number) : null, // apr2:aprAverages[currentYear - 1] ? Extension.textPoint(aprAverages[currentYear - 1] as number) : null, // apr3:aprAverages[currentYear - 2] ? Extension.textPoint(aprAverages[currentYear - 2] as number) : null, @@ -2889,50 +2889,50 @@ export class OrganizationDotnetController extends Controller { }, }); - const currentYear = new Date().getFullYear(); + const currentYear = new Date().getFullYear(); const years = [currentYear, currentYear - 1, currentYear - 2, currentYear - 3, currentYear - 4]; - + // APR Averages const aprAverages: { [year: number]: number | null } = {}; const aprSums: { [year: number]: number } = {}; const aprCounts: { [year: number]: number } = {}; - + // OCT Averages const octAverages: { [year: number]: number | null } = {}; const octSums: { [year: number]: number } = {}; const octCounts: { [year: number]: number } = {}; - - years.forEach(year => { + + years.forEach((year) => { aprAverages[year] = null; aprSums[year] = 0; aprCounts[year] = 0; - + octAverages[year] = null; octSums[year] = 0; octCounts[year] = 0; }); - - profiles.forEach(profile => { + + profiles.forEach((profile) => { const assessments = profile.profileAssessments || []; - - assessments.forEach(assessment => { + + assessments.forEach((assessment) => { const year = Number(assessment.year); - + if (years.includes(year)) { - if (assessment.period === 'APR') { + if (assessment.period === "APR") { aprSums[year] += assessment.pointSum; aprCounts[year] += 1; } - - if (assessment.period === 'OCT') { + + if (assessment.period === "OCT") { octSums[year] += assessment.pointSum; octCounts[year] += 1; } } }); }); - - years.forEach(year => { + + years.forEach((year) => { aprAverages[year] = aprCounts[year] > 0 ? aprSums[year] / aprCounts[year] : null; octAverages[year] = octCounts[year] > 0 ? octSums[year] / octCounts[year] : null; }); @@ -3116,16 +3116,36 @@ export class OrganizationDotnetController extends Controller { markLeave: false, markRate: profile.profileAssessments.length > 0 ? true : false, markInsignia: profile.profileInsignias.length > 0 ? true : false, - apr1:aprAverages[currentYear] ? Extension.textPoint(aprAverages[currentYear] as number) : null, - apr2:aprAverages[currentYear - 1] ? Extension.textPoint(aprAverages[currentYear - 1] as number) : null, - apr3:aprAverages[currentYear - 2] ? Extension.textPoint(aprAverages[currentYear - 2] as number) : null, - apr4:aprAverages[currentYear - 3] ? Extension.textPoint(aprAverages[currentYear - 3] as number) : null, - apr5:aprAverages[currentYear - 4] ? Extension.textPoint(aprAverages[currentYear - 4] as number) : null, - oct1:octAverages[currentYear] ? Extension.textPoint(octAverages[currentYear] as number) : null, - oct2:octAverages[currentYear - 1] ? Extension.textPoint(octAverages[currentYear - 1] as number) : null, - oct3:octAverages[currentYear - 2] ? Extension.textPoint(octAverages[currentYear - 2] as number) : null, - oct4:octAverages[currentYear - 3] ? Extension.textPoint(octAverages[currentYear - 3] as number) : null, - oct5:octAverages[currentYear - 4] ? Extension.textPoint(octAverages[currentYear - 4] as number) : null, + apr1: aprAverages[currentYear] + ? Extension.textPoint(aprAverages[currentYear] as number) + : null, + apr2: aprAverages[currentYear - 1] + ? Extension.textPoint(aprAverages[currentYear - 1] as number) + : null, + apr3: aprAverages[currentYear - 2] + ? Extension.textPoint(aprAverages[currentYear - 2] as number) + : null, + apr4: aprAverages[currentYear - 3] + ? Extension.textPoint(aprAverages[currentYear - 3] as number) + : null, + apr5: aprAverages[currentYear - 4] + ? Extension.textPoint(aprAverages[currentYear - 4] as number) + : null, + oct1: octAverages[currentYear] + ? Extension.textPoint(octAverages[currentYear] as number) + : null, + oct2: octAverages[currentYear - 1] + ? Extension.textPoint(octAverages[currentYear - 1] as number) + : null, + oct3: octAverages[currentYear - 2] + ? Extension.textPoint(octAverages[currentYear - 2] as number) + : null, + oct4: octAverages[currentYear - 3] + ? Extension.textPoint(octAverages[currentYear - 3] as number) + : null, + oct5: octAverages[currentYear - 4] + ? Extension.textPoint(octAverages[currentYear - 4] as number) + : null, }; }); @@ -4702,69 +4722,68 @@ export class OrganizationDotnetController extends Controller { "profileSalary", "profileInsignias", "profileDisciplines", - "profileAssessments" + "profileAssessments", ], - where: { id: In(body.profileIds) } + where: { id: In(body.profileIds) }, }); - } - else { + } else { profile = await this.profileEmpRepo.find({ relations: [ "profileSalary", "profileInsignias", "profileDisciplines", - "profileAssessments" + "profileAssessments", ], - where: { id: In(body.profileIds) } + where: { id: In(body.profileIds) }, }); } - + if (!profile) throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล"); - const currentYear = new Date().getFullYear(); + const currentYear = new Date().getFullYear(); const years = [currentYear, currentYear - 1, currentYear - 2, currentYear - 3, currentYear - 4]; - + // APR Averages const aprAverages: { [year: number]: number | null } = {}; const aprSums: { [year: number]: number } = {}; const aprCounts: { [year: number]: number } = {}; - + // OCT Averages const octAverages: { [year: number]: number | null } = {}; const octSums: { [year: number]: number } = {}; const octCounts: { [year: number]: number } = {}; - - years.forEach(year => { + + years.forEach((year) => { aprAverages[year] = null; aprSums[year] = 0; aprCounts[year] = 0; - + octAverages[year] = null; octSums[year] = 0; octCounts[year] = 0; }); - - profile.forEach(profile => { + + profile.forEach((profile) => { const assessments = profile.profileAssessments || []; - - assessments.forEach(assessment => { + + assessments.forEach((assessment) => { const year = Number(assessment.year); - + if (years.includes(year)) { - if (assessment.period === 'APR') { + if (assessment.period === "APR") { aprSums[year] += assessment.pointSum; aprCounts[year] += 1; } - - if (assessment.period === 'OCT') { + + if (assessment.period === "OCT") { octSums[year] += assessment.pointSum; octCounts[year] += 1; } } }); }); - - years.forEach(year => { + + years.forEach((year) => { aprAverages[year] = aprCounts[year] > 0 ? aprSums[year] / aprCounts[year] : null; octAverages[year] = octCounts[year] > 0 ? octSums[year] / octCounts[year] : null; }); @@ -4776,16 +4795,36 @@ export class OrganizationDotnetController extends Controller { markLeave: false, markRate: x.profileAssessments.length > 0 ? true : false, markInsignia: x.profileInsignias.length > 0 ? true : false, - apr1:aprAverages[currentYear] ? Extension.textPoint(aprAverages[currentYear] as number) : null, - apr2:aprAverages[currentYear - 1] ? Extension.textPoint(aprAverages[currentYear - 1] as number) : null, - apr3:aprAverages[currentYear - 2] ? Extension.textPoint(aprAverages[currentYear - 2] as number) : null, - apr4:aprAverages[currentYear - 3] ? Extension.textPoint(aprAverages[currentYear - 3] as number) : null, - apr5:aprAverages[currentYear - 4] ? Extension.textPoint(aprAverages[currentYear - 4] as number) : null, - oct1:octAverages[currentYear] ? Extension.textPoint(octAverages[currentYear] as number) : null, - oct2:octAverages[currentYear - 1] ? Extension.textPoint(octAverages[currentYear - 1] as number) : null, - oct3:octAverages[currentYear - 2] ? Extension.textPoint(octAverages[currentYear - 2] as number) : null, - oct4:octAverages[currentYear - 3] ? Extension.textPoint(octAverages[currentYear - 3] as number) : null, - oct5:octAverages[currentYear - 4] ? Extension.textPoint(octAverages[currentYear - 4] as number) : null, + apr1: aprAverages[currentYear] + ? Extension.textPoint(aprAverages[currentYear] as number) + : null, + apr2: aprAverages[currentYear - 1] + ? Extension.textPoint(aprAverages[currentYear - 1] as number) + : null, + apr3: aprAverages[currentYear - 2] + ? Extension.textPoint(aprAverages[currentYear - 2] as number) + : null, + apr4: aprAverages[currentYear - 3] + ? Extension.textPoint(aprAverages[currentYear - 3] as number) + : null, + apr5: aprAverages[currentYear - 4] + ? Extension.textPoint(aprAverages[currentYear - 4] as number) + : null, + oct1: octAverages[currentYear] + ? Extension.textPoint(octAverages[currentYear] as number) + : null, + oct2: octAverages[currentYear - 1] + ? Extension.textPoint(octAverages[currentYear - 1] as number) + : null, + oct3: octAverages[currentYear - 2] + ? Extension.textPoint(octAverages[currentYear - 2] as number) + : null, + oct4: octAverages[currentYear - 3] + ? Extension.textPoint(octAverages[currentYear - 3] as number) + : null, + oct5: octAverages[currentYear - 4] + ? Extension.textPoint(octAverages[currentYear - 4] as number) + : null, }; }); return new HttpSuccess(mapProfile); diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index 7d2cb752..4350aa38 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -150,6 +150,8 @@ export class ReportController extends Controller { tenureTypeCondition = "registryOfficer.Years BETWEEN :tenureMin AND :tenureMax"; } else if (tenureType != "" && tenureType == "level") { tenureTypeCondition = "registryOfficer.levelYears BETWEEN :tenureMin AND :tenureMax"; + } else if (tenureType != "" && tenureType == "posExecutive") { + tenureTypeCondition = "registryOfficer.levelYears BETWEEN :tenureMin AND :tenureMax"; } const [lists, total] = await AppDataSource.getRepository(viewRegistryOfficer) @@ -379,9 +381,14 @@ export class ReportController extends Controller { Days: x.Days ? x.Days : 0, }, levelDate: { - posExecutiveYears: x.levelYears ? x.levelYears : 0, - posExecutiveMonths: x.levelMonths ? x.levelMonths : 0, - posExecutiveDays: x.levelDays ? x.levelDays : 0, + Years: x.levelYears ? x.levelYears : 0, + Months: x.levelMonths ? x.levelMonths : 0, + Days: x.levelDays ? x.levelDays : 0, + }, + posExecutiveDate: { + Years: x.posExecutiveYears ? x.posExecutiveYears : 0, + Months: x.posExecutiveMonths ? x.posExecutiveMonths : 0, + Days: x.posExecutiveDays ? x.posExecutiveDays : 0, }, }); } @@ -5603,14 +5610,14 @@ export class ReportController extends Controller { } } } - - return new HttpSuccess({ - template: "report2", - reportName: "report2", - data: { - rootName: orgRootData.length > 0 ? orgRootData[0].orgRootName : "-", - data: data - } + + return new HttpSuccess({ + template: "report2", + reportName: "report2", + data: { + rootName: orgRootData.length > 0 ? orgRootData[0].orgRootName : "-", + data: data, + }, }); } /** diff --git a/src/entities/view/viewRegistryOfficer.ts b/src/entities/view/viewRegistryOfficer.ts index 4f4bdb16..668d0bcb 100644 --- a/src/entities/view/viewRegistryOfficer.ts +++ b/src/entities/view/viewRegistryOfficer.ts @@ -302,6 +302,15 @@ export class viewRegistryOfficer { @ViewColumn() levelDays: number; + @ViewColumn() + posExecutiveYears: number; + + @ViewColumn() + posExecutiveMonths: number; + + @ViewColumn() + posExecutiveDays: number; + @ViewColumn() positionArea: string;