hrms-api-org/src/entities/view/viewEmployeePosMaster.ts

230 lines
6 KiB
TypeScript

import { ViewColumn, ViewEntity } from "typeorm";
@ViewEntity({
expression: `SELECT
employeePosMaster.id,
employeePosMaster.posMasterNoPrefix,
employeePosMaster.posMasterNo,
employeePosMaster.posMasterNoSuffix,
employeePosMaster.orgRevisionId,
employeePosMaster.orgRootId,
employeePosMaster.orgChild1Id,
employeePosMaster.orgChild2Id,
employeePosMaster.orgChild3Id,
employeePosMaster.orgChild4Id,
employeePosMaster.current_holderId,
profileEmployee.id as profileId,
profileEmployee.prefix,
profileEmployee.firstName,
profileEmployee.lastName,
profileEmployee.citizenId,
profileEmployee.position,
profileEmployee.amount,
profileEmployee.dateRetire,
profileEmployee.birthDate,
profileEmployee.salaryLevel,
profileEmployee.group,
orgRoot.id as rootId,
orgRoot.orgRootShortName,
orgRoot.orgRootOrder,
orgRoot.orgRootName,
orgChild1.id as child1Id,
orgChild1.orgChild1ShortName,
orgChild1.orgChild1Order,
orgChild1.orgChild1Name,
orgChild2.id as child2Id,
orgChild2.orgChild2ShortName,
orgChild2.orgChild2Order,
orgChild2.orgChild2Name,
orgChild3.id as child3Id,
orgChild3.orgChild3ShortName,
orgChild3.orgChild3Order,
orgChild3.orgChild3Name,
orgChild4.id as child4Id,
orgChild4.orgChild4ShortName,
orgChild4.orgChild4Order,
orgChild4.orgChild4Name,
position.id as positionId,
position.positionIsSelected,
position.posExecutiveId as positionPosExecutiveId,
position.isSpecial,
posExecutive.id as posExecutiveId,
posExecutive.posExecutiveName,
profileDiscipline.id as profileDisciplineId,
profileDiscipline.date as disCriplineDate,
profileLeave.id as profileLeaveId,
profileAssessment.id as profileAssessmentId,
profileAssessment.pointSum,
employeePosLevel.id as posLevelId,
employeePosLevel.posLevelName,
employeePosType.id as posTypeId,
employeePosType.posTypeName,
employeePosType.posTypeShortName
FROM
employeePosMaster
LEFT JOIN
profileEmployee ON employeePosMaster.current_holderId = profileEmployee.id
LEFT JOIN
orgRoot ON employeePosMaster.orgRootId = orgRoot.id
LEFT JOIN
orgChild1 ON employeePosMaster.orgChild1Id = orgChild1.id
LEFT JOIN
orgChild2 ON employeePosMaster.orgChild2Id = orgChild2.id
LEFT JOIN
orgChild3 ON employeePosMaster.orgChild3Id = orgChild3.id
LEFT JOIN
orgChild4 ON employeePosMaster.orgChild4Id = orgChild4.id
LEFT JOIN
position ON employeePosMaster.id = position.posMasterId
LEFT JOIN
posExecutive ON position.posExecutiveId = posExecutive.id
LEFT JOIN (
SELECT *
FROM profileDisciplineEmployee pd1
WHERE pd1.date = (
SELECT MAX(pd2.date)
FROM profileDisciplineEmployee pd2
WHERE pd2.profileId = pd1.profileId
)
) AS profileDiscipline ON profileDiscipline.profileId = profileEmployee.id
LEFT JOIN (
SELECT pl1.*
FROM profileLeave pl1
INNER JOIN (
SELECT profileId, MAX(createdAt) AS maxDate
FROM profileLeave
GROUP BY profileId
) pl2 ON pl1.profileId = pl2.profileId
AND pl1.createdAt = pl2.maxDate
) AS profileLeave ON profileLeave.profileId = employeePosMaster.current_holderId
LEFT JOIN
profileAssessment ON profileAssessment.profileId = profileEmployee.id
LEFT JOIN
employeePosLevel ON profileEmployee.posLevelId = employeePosLevel.id
LEFT JOIN
employeePosType ON profileEmployee.posTypeId = employeePosType.id
WHERE
employeePosMaster.current_holderId IS NOT NULL
ORDER BY
profileEmployee.citizenId ASC
`,
})
export class viewEmployeePosMaster {
@ViewColumn()
id: string;
@ViewColumn()
posMasterNoPrefix: string;
@ViewColumn()
posMasterNo: number;
@ViewColumn()
posMasterNoSuffix: string;
@ViewColumn()
orgRevisionId: string;
@ViewColumn()
orgRootId: string;
@ViewColumn()
orgChild1Id: string;
@ViewColumn()
orgChild2Id: string;
@ViewColumn()
orgChild3Id: string;
@ViewColumn()
orgChild4Id: string;
@ViewColumn()
current_holderId: string;
@ViewColumn()
profileId: string;
@ViewColumn()
prefix: string;
@ViewColumn()
firstName: string;
@ViewColumn()
lastName: string;
@ViewColumn()
citizenId: number;
@ViewColumn()
position: string;
@ViewColumn()
amount: number;
@ViewColumn()
dateRetire: Date;
@ViewColumn()
birthDate: Date;
@ViewColumn()
rootId: string;
@ViewColumn()
orgRootShortName: string;
@ViewColumn()
orgRootOrder: string;
@ViewColumn()
orgRootName: string;
@ViewColumn()
child1Id: string;
@ViewColumn()
orgChild1ShortName: string;
@ViewColumn()
orgChild1Order: string;
@ViewColumn()
orgChild1Name: string;
@ViewColumn()
child2Id: string;
@ViewColumn()
orgChild2ShortName: string;
@ViewColumn()
orgChild2Order: string;
@ViewColumn()
orgChild2Name: string;
@ViewColumn()
child3Id: string;
@ViewColumn()
orgChild3ShortName: string;
@ViewColumn()
orgChild3Order: string;
@ViewColumn()
orgChild3Name: string;
@ViewColumn()
child4Id: string;
@ViewColumn()
orgChild4ShortName: string;
@ViewColumn()
orgChild4Order: string;
@ViewColumn()
orgChild4Name: string;
@ViewColumn()
positionId: string;
@ViewColumn()
positionIsSelected: boolean;
@ViewColumn()
positionPosExecutiveId: string;
@ViewColumn()
isSpecial: boolean;
@ViewColumn()
posExecutiveId: string;
@ViewColumn()
posExecutiveName: string;
@ViewColumn()
profileDisciplineId: string;
@ViewColumn()
disCriplineDate: Date;
@ViewColumn()
profileLeaveId: string;
@ViewColumn()
profileAssessmentId: string;
@ViewColumn()
pointSum: number;
@ViewColumn()
posLevelId: string;
@ViewColumn()
posLevelName: string;
@ViewColumn()
posTypeId: string;
@ViewColumn()
posTypeName: string;
@ViewColumn()
salaryLevel: number;
@ViewColumn()
group: number;
@ViewColumn()
posTypeShortName: string;
}