diff --git a/src/controllers/ReportController.ts b/src/controllers/ReportController.ts index 5ec3e5f3..644031af 100644 --- a/src/controllers/ReportController.ts +++ b/src/controllers/ReportController.ts @@ -187,6 +187,7 @@ export class ReportController extends Controller { @Query() ageMax?: number, @Query() isProbation?: boolean, @Query() isRetire?: boolean, + @Query() isRetireLaw?: boolean, @Query() retireType?: string, @Query() sortBy: string = "posMasterNo", @Query() sort: "ASC" | "DESC" = "ASC", @@ -234,12 +235,17 @@ export class ReportController extends Controller { const IsLeavecondition = ["registryOfficer.isLeave = :isLeave"]; const parameters: any = { isLeave: isRetire }; - if (retireType && retireType.trim() !== "") { IsLeavecondition.push("registryOfficer.leaveType = :retireType"); parameters.retireType = retireType; } + let retireLawCondition = "1=1"; + if(isRetireLaw) { + retireLawCondition = + "DATE(registryOfficer.dateRetireLaw) >= :startDateRetireLaw AND DATE(registryOfficer.dateRetireLaw) <= :endDateRetireLaw"; + } + const [lists, total] = await AppDataSource.getRepository(viewRegistryOfficer) .createQueryBuilder("registryOfficer") .where(nodeCondition, { @@ -253,6 +259,10 @@ export class ReportController extends Controller { startDateAppoint: dateStart?.toISOString().split("T")[0], endDateAppoint: dateEnd?.toISOString().split("T")[0], }) + .andWhere(retireLawCondition, { + startDateRetireLaw: new Date(new Date().getFullYear() - 1, 9, 1, 0, 0, 0, 0)?.toISOString().split("T")[0], + endDateRetireLaw: new Date(new Date().getFullYear(), 8, 30, 23, 59, 59, 999).toISOString().split("T")[0], + }) .andWhere("registryOfficer.isProbation = :isProbation", { isProbation: isProbation, }) @@ -345,6 +355,8 @@ export class ReportController extends Controller { gender: x.gender, relationship: x.relationship, dateAppoint: x.dateAppoint, + dateRetire: x.dateRetire, + dateRetireLaw: x.dateRetireLaw, birthdate: x.birthdate, degree: x.degree, age: x.age, @@ -488,6 +500,7 @@ export class ReportController extends Controller { @Query() dateEnd?: Date, @Query() isProbation?: boolean, @Query() isRetire?: boolean, + @Query() isRetireLaw?: boolean, @Query() retireType?: string, @Query() ageMin?: number, @Query() ageMax?: number, @@ -537,11 +550,17 @@ export class ReportController extends Controller { const IsLeavecondition = ["registryEmployee.isLeave = :isLeave"]; const parameters: any = { isLeave: isRetire }; - if (retireType && retireType.trim() !== "") { IsLeavecondition.push("registryEmployee.leaveType = :retireType"); parameters.retireType = retireType; } + + let retireLawCondition = "1=1"; + if(isRetireLaw) { + retireLawCondition = + "DATE(registryEmployee.dateRetireLaw) >= :startDateRetireLaw AND DATE(registryEmployee.dateRetireLaw) <= :endDateRetireLaw"; + } + const [lists, total] = await AppDataSource.getRepository(viewRegistryEmployee) .createQueryBuilder("registryEmployee") .where(nodeCondition, { @@ -555,6 +574,10 @@ export class ReportController extends Controller { startDateAppoint: dateStart?.toISOString().split("T")[0], endDateAppoint: dateEnd?.toISOString().split("T")[0], }) + .andWhere(retireLawCondition, { + startDateRetireLaw: new Date(new Date().getFullYear() - 1, 9, 1, 0, 0, 0, 0)?.toISOString().split("T")[0], + endDateRetireLaw: new Date(new Date().getFullYear(), 8, 30, 23, 59, 59, 999).toISOString().split("T")[0], + }) .andWhere("registryEmployee.isProbation = :isProbation", { isProbation: isProbation, }) @@ -562,7 +585,7 @@ export class ReportController extends Controller { .andWhere("registryEmployee.employeeClass = 'PERM'") .andWhere( posType != null && posType != "" - ? "registryOfficer.posTypeName LIKE :posTypeName" + ? "registryEmployee.posTypeName LIKE :posTypeName" : "1=1", { posTypeName: `%${posType}%`, @@ -570,7 +593,7 @@ export class ReportController extends Controller { ) .andWhere( posLevel != null && posLevel != "" - ? "registryOfficer.posLevelName LIKE :posLevelName" + ? "registryEmployee.posLevelName LIKE :posLevelName" : "1=1", { posLevelName: `%${posLevel}%`, @@ -578,7 +601,7 @@ export class ReportController extends Controller { ) .andWhere( position != null && position != "" - ? "registryOfficer.position LIKE :position" + ? "registryEmployee.position LIKE :position" : "1=1", { position: `%${position}%`, @@ -586,7 +609,7 @@ export class ReportController extends Controller { ) .andWhere( gender != null && gender != "" - ? "registryOfficer.gender LIKE :gender" + ? "registryEmployee.gender LIKE :gender" : "1=1", { gender: `%${gender}%`, @@ -594,7 +617,7 @@ export class ReportController extends Controller { ) .andWhere( status != null && status != "" - ? "registryOfficer.relationship LIKE :relationship" + ? "registryEmployee.relationship LIKE :relationship" : "1=1", { relationship: `%${status}%`, @@ -602,7 +625,7 @@ export class ReportController extends Controller { ) .andWhere( education != null && education != "" - ? "registryOfficer.degree LIKE :degree" + ? "registryEmployee.degree LIKE :degree" : "1=1", { degree: `%${education}%`, @@ -639,6 +662,8 @@ export class ReportController extends Controller { gender: x.gender, relationship: x.relationship, dateAppoint: x.dateAppoint, + dateRetire: x.dateRetire, + dateRetireLaw: x.dateRetireLaw, birthdate: x.birthdate, degree: x.degree, age: x.age, diff --git a/src/entities/view/viewRegistryEmployee.ts b/src/entities/view/viewRegistryEmployee.ts index aad557c8..0ce1b8e0 100644 --- a/src/entities/view/viewRegistryEmployee.ts +++ b/src/entities/view/viewRegistryEmployee.ts @@ -185,6 +185,12 @@ export class viewRegistryEmployee { @ViewColumn() dateAppoint: Date; + + @ViewColumn() + dateRetire: Date; + + @ViewColumn() + dateRetireLaw: Date; @ViewColumn() birthdate: Date; diff --git a/src/entities/view/viewRegistryOfficer.ts b/src/entities/view/viewRegistryOfficer.ts index 548e7399..519743c9 100644 --- a/src/entities/view/viewRegistryOfficer.ts +++ b/src/entities/view/viewRegistryOfficer.ts @@ -193,6 +193,12 @@ export class viewRegistryOfficer { @ViewColumn() dateAppoint: Date; + @ViewColumn() + dateRetire: Date; + + @ViewColumn() + dateRetireLaw: Date; + @ViewColumn() birthdate: Date;