diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index b62a58a1..58388cf1 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -334,58 +334,82 @@ export class ReportController extends Controller { .orderBy(`registryOfficer.${sortBy}`, sort) .getManyAndCount(); - const mapData = lists.map((x) => ({ - profileId: x.profileId, - citizenId: x.citizenId, - prefix: x.prefix, - firstName: x.firstName, - lastName: x.lastName, - isProbation: x.isProbation, - isLeave: x.isLeave, - isRetirement: x.isRetirement, - leaveType: x.leaveType, - posMasterNo: x.posMasterNo, - orgRootId: x.orgRootId, - orgChild1Id: x.orgChild1Id, - orgChild2Id: x.orgChild2Id, - orgChild3Id: x.orgChild3Id, - orgChild4Id: x.orgChild4Id, - orgRootName: x.orgRootName, - orgChild1Name: x.orgChild1Name, - orgChild2Name: x.orgChild2Name, - orgChild3Name: x.orgChild3Name, - orgChild4Name: x.orgChild4Name, - org: x.org, - searchShortName: x.searchShortName, - posExecutiveName: x.posExecutiveName, - position: x.position, - posTypeName: x.posTypeName, - posLevelName: x.posLevelName, - gender: x.gender, - relationship: x.relationship, - dateAppoint: x.dateAppoint, - dateRetire: x.dateRetire, - dateRetireLaw: x.dateRetireLaw, - birthdate: x.birthdate, - degree: x.degree, - age: x.age, - currentPosition: null, - lengthPosition: null, - positionDate: { - Years: x.Years, - Months: x.Months, - Days: x.Days, - }, - posExcutiveDate: { - Years: x.posExecutiveYears, - Months: x.posExecutiveMonths, - Days: x.posExecutiveDays, - }, - posLevelDate: { - Years: x.levelYears, - Months: x.levelMonths, - Days: x.levelDays, - }, + const mapData = await Promise.all(lists.map(async(x) => { + const position = await AppDataSource.query("CALL GetProfileSalaryPosition(?)", [x.profileId]) + const _position = position.length > 0 ? position[0] : []; + const lastPosition = _position.length > 0 ? _position[_position.length - 1] : null; // last row + const mapPosition = lastPosition + ? [{ + Years: lastPosition.Years ? Math.floor(Number(lastPosition.Years)) : 0, + Months: lastPosition.Months ? Math.floor(Number(lastPosition.Months)) : 0, + Daysday: lastPosition.Days ? Math.floor(Number(lastPosition.Days)) : 0, + }] + : []; + const posLevel = await AppDataSource.query("CALL GetProfileSalaryLevel(?)", [x.profileId]) + const _posLevel = posLevel.length > 0 ? posLevel[0] : []; + const lastPosLevel= _posLevel.length > 0 ? _posLevel[_posLevel.length - 1] : null; + const mapPosLevel = lastPosLevel + ? [{ + Years: lastPosLevel.Years ? Math.floor(Number(lastPosLevel.Years)) : 0, + Months: lastPosLevel.Months ? Math.floor(Number(lastPosLevel.Months)) : 0, + Daysday: lastPosLevel.Days ? Math.floor(Number(lastPosLevel.Days)) : 0, + }] + : []; + return { + profileId: x.profileId, + citizenId: x.citizenId, + prefix: x.prefix, + firstName: x.firstName, + lastName: x.lastName, + isProbation: x.isProbation, + isLeave: x.isLeave, + isRetirement: x.isRetirement, + leaveType: x.leaveType, + posMasterNo: x.posMasterNo, + orgRootId: x.orgRootId, + orgChild1Id: x.orgChild1Id, + orgChild2Id: x.orgChild2Id, + orgChild3Id: x.orgChild3Id, + orgChild4Id: x.orgChild4Id, + orgRootName: x.orgRootName, + orgChild1Name: x.orgChild1Name, + orgChild2Name: x.orgChild2Name, + orgChild3Name: x.orgChild3Name, + orgChild4Name: x.orgChild4Name, + org: x.org, + searchShortName: x.searchShortName, + posExecutiveName: x.posExecutiveName, + position: x.position, + posTypeName: x.posTypeName, + posLevelName: x.posLevelName, + gender: x.gender, + relationship: x.relationship, + dateAppoint: x.dateAppoint, + dateRetire: x.dateRetire, + dateRetireLaw: x.dateRetireLaw, + birthdate: x.birthdate, + degree: x.degree, + age: x.age, + currentPosition: null, + lengthPosition: null, + // positionDate: { + // Years: x.Years, + // Months: x.Months, + // Days: x.Days, + // }, + // posExcutiveDate: { + // Years: x.posExecutiveYears, + // Months: x.posExecutiveMonths, + // Days: x.posExecutiveDays, + // }, + // posLevelDate: { + // Years: x.levelYears, + // Months: x.levelMonths, + // Days: x.levelDays, + // }, + positionDate: mapPosition, + posLevelDate: mapPosLevel + } })); return new HttpSuccess({ data: mapData, @@ -654,43 +678,68 @@ export class ReportController extends Controller { ) .orderBy(`registryEmployee.${sortBy}`, sort) .getManyAndCount(); - const mapData = lists.map((x) => ({ - profileId: x.profileEmployeeId, - citizenId: x.citizenId, - prefix: x.prefix, - firstName: x.firstName, - lastName: x.lastName, - isProbation: x.isProbation, - isLeave: x.isLeave, - isRetirement: x.isRetirement, - leaveType: x.leaveType, - posMasterNo: x.posMasterNo, - orgRootId: x.orgRootId, - orgChild1Id: x.orgChild1Id, - orgChild2Id: x.orgChild2Id, - orgChild3Id: x.orgChild3Id, - orgChild4Id: x.orgChild4Id, - orgRootName: x.orgRootName, - orgChild1Name: x.orgChild1Name, - orgChild2Name: x.orgChild2Name, - orgChild3Name: x.orgChild3Name, - orgChild4Name: x.orgChild4Name, - org: x.org, - searchShortName: x.searchShortName, - position: x.position, - posTypeName: x.posTypeName, - posLevelName: x.posLevelName, - gender: x.gender, - relationship: x.relationship, - dateAppoint: x.dateAppoint, - dateRetire: x.dateRetire, - dateRetireLaw: x.dateRetireLaw, - birthdate: x.birthdate, - degree: x.degree, - age: x.age, - currentPosition: null, - lengthPosition: null, - })); + + const mapData = await Promise.all(lists.map(async(x) => { + const position = await AppDataSource.query("CALL GetProfileEmployeeSalaryPosition(?)", [x.profileEmployeeId]) + const _position = position.length > 0 ? position[0] : []; + const lastPosition = _position.length > 0 ? _position[_position.length - 1] : null; + const mapPosition = lastPosition + ? [{ + Years: lastPosition.Years ? Math.floor(Number(lastPosition.Years)) : 0, + Months: lastPosition.Months ? Math.floor(Number(lastPosition.Months)) : 0, + Daysday: lastPosition.Days ? Math.floor(Number(lastPosition.Days)) : 0, + }] + : []; + const posLevel = await AppDataSource.query("CALL GetProfileEmployeeSalaryLevel(?)", [x.profileEmployeeId]) + const _posLevel = posLevel.length > 0 ? posLevel[0] : []; + const lastPosLevel= _posLevel.length > 0 ? _posLevel[_posLevel.length - 1] : null; + const mapPosLevel = lastPosLevel + ? [{ + Years: lastPosLevel.Years ? Math.floor(Number(lastPosLevel.Years)) : 0, + Months: lastPosLevel.Months ? Math.floor(Number(lastPosLevel.Months)) : 0, + Daysday: lastPosLevel.Days ? Math.floor(Number(lastPosLevel.Days)) : 0, + }] + : []; + return { + profileId: x.profileEmployeeId, + citizenId: x.citizenId, + prefix: x.prefix, + firstName: x.firstName, + lastName: x.lastName, + isProbation: x.isProbation, + isLeave: x.isLeave, + isRetirement: x.isRetirement, + leaveType: x.leaveType, + posMasterNo: x.posMasterNo, + orgRootId: x.orgRootId, + orgChild1Id: x.orgChild1Id, + orgChild2Id: x.orgChild2Id, + orgChild3Id: x.orgChild3Id, + orgChild4Id: x.orgChild4Id, + orgRootName: x.orgRootName, + orgChild1Name: x.orgChild1Name, + orgChild2Name: x.orgChild2Name, + orgChild3Name: x.orgChild3Name, + orgChild4Name: x.orgChild4Name, + org: x.org, + searchShortName: x.searchShortName, + position: x.position, + posTypeName: x.posTypeName, + posLevelName: x.posLevelName, + gender: x.gender, + relationship: x.relationship, + dateAppoint: x.dateAppoint, + dateRetire: x.dateRetire, + dateRetireLaw: x.dateRetireLaw, + birthdate: x.birthdate, + degree: x.degree, + age: x.age, + currentPosition: null, + lengthPosition: null, + positionDate: mapPosition, + posLevelDate: mapPosLevel + } + })); return new HttpSuccess({ data: mapData, total: total,