api report รายการประวัติการฝึกอบรม/ดูงาน

This commit is contained in:
AnandaTon 2024-04-11 18:02:03 +07:00
parent a4eed4f690
commit 371f09c26f

View file

@ -25,7 +25,7 @@ import {
} from "../entities/DevelopmentHistory";
import { PosType } from "../entities/PosType";
import { PosLevel } from "../entities/PosLevel";
import Extension from "../interfaces/extension";
@Route("api/v1/development/report")
@Tags("Report")
@Security("bearerAuth")
@ -63,18 +63,49 @@ export class ReportController extends Controller {
*
* @summary DEV_0xx - Report / #xx
*
* @param {string} type type report
*/
@Get("history-officer/{type}")
async GetReportDevelopemtHistoryOfficer(@Path() type: string) {
const _type = type.trim().toUpperCase();
const formattedData = {
org: _type,
};
@Get("history-officer/{year}")
async GetReportDevelopemtHistoryOfficer(@Query("year") year: number) {
const type = "OFFICER";
const development = await AppDataSource.getRepository(DevelopmentHistory)
.createQueryBuilder("developmentHistory")
.leftJoinAndSelect("developmentHistory.posLevel", "posLevel")
.leftJoinAndSelect("developmentHistory.posType", "posType")
.leftJoinAndSelect("developmentHistory.development", "development")
.andWhere(
year != 0 && year != null && year != undefined ? "development.year = :year" : "1=1",
{ year: year },
)
.andWhere("developmentHistory.type = :type", { type: type })
.select([
"developmentHistory.citizenId",
"developmentHistory.rank",
"developmentHistory.position",
"developmentHistory.posExecutive",
"developmentHistory.developmentId",
"developmentHistory.prefix",
"developmentHistory.firstName",
"developmentHistory.lastName",
"posLevel.posLevelName",
"posType.posTypeName",
"development.projectName",
])
.getMany();
const formattedData = development.map((item) => ({
id: item.id,
citizenId: Extension.ToThaiNumber(item.citizenId.toString()),
fullName: item.prefix + item.firstName + " " + item.lastName,
position: item.position,
posType: item.posType ? item.posType.posTypeName : null,
posLevel: item.posLevel ? item.posLevel.posLevelName : null,
posExecutive: item.posExecutive,
projectName: item.development ? item.development.projectName : null,
}));
return new HttpSuccess({
template: "development",
reportName: "development",
template: "developmentHistoryOfficer",
reportName: "developmentHistoryOfficer",
data: {
data: formattedData,
},
@ -86,18 +117,48 @@ export class ReportController extends Controller {
*
* @summary DEV_0xx - Report / #xx
*
* @param {string} type type report
* @param {number} year year report
*/
@Get("history-employee/{type}")
async GetReportDevelopemtHistoryEmployee(@Path() type: string) {
const _type = type.trim().toUpperCase();
const formattedData = {
org: _type,
};
@Get("history-employee/{year}")
async GetReportDevelopemtHistoryEmployee(@Query("year") year: number = 2024) {
const type = "EMPLOYEE";
const development = await AppDataSource.getRepository(DevelopmentHistory)
.createQueryBuilder("developmentHistory")
.leftJoinAndSelect("developmentHistory.employeePosLevel", "employeePosLevel")
.leftJoinAndSelect("developmentHistory.employeePosType", "employeePosType")
.leftJoinAndSelect("developmentHistory.development", "development")
.where("development.year = :year", { year })
.andWhere("developmentHistory.type = :type", { type: type })
.select([
"developmentHistory.citizenId",
"developmentHistory.position",
"developmentHistory.developmentId",
"developmentHistory.prefix",
"developmentHistory.firstName",
"developmentHistory.lastName",
"employeePosLevel.posLevelName",
"employeePosType.posTypeName",
"employeePosType.posTypeShortName",
"development.projectName",
])
.getMany();
const formattedData = development.map((item) => ({
id: item.id,
citizenId: Extension.ToThaiNumber(item.citizenId.toString()),
fullName: item.prefix + item.firstName + " " + item.lastName,
position: item.position,
employeePosType: item.employeePosType ? item.employeePosType.posTypeName : null,
employeePosLevel:
item.employeePosType.posTypeShortName +
" " +
Extension.ToThaiNumber(item.employeePosLevel.posLevelName.toString()),
projectName: item.development ? item.development.projectName : null,
}));
return new HttpSuccess({
template: "development",
reportName: "development",
template: "developmentHistoryEmployee",
reportName: "developmentHistoryEmployee",
data: {
data: formattedData,
},