diff --git a/src/controllers/DevelopmentController.ts b/src/controllers/DevelopmentController.ts index 2364ddc..f2b456a 100644 --- a/src/controllers/DevelopmentController.ts +++ b/src/controllers/DevelopmentController.ts @@ -59,6 +59,7 @@ import { RequestWithUser } from "../middlewares/user"; import { DevelopmentRisk, UpdateDevelopmentRisk } from "../entities/DevelopmentRisk"; import { DevelopmentOther, UpdateDevelopmentOther } from "../entities/DevelopmentOther"; import permission from "../interfaces/permission"; +import { Brackets } from "typeorm"; @Route("api/v1/development/main") @Tags("Development") @@ -1941,9 +1942,21 @@ export class DevelopmentController extends Controller { .andWhere(status != undefined ? "development.status LIKE :status" : "1=1", { status: `%${status}%`, }) - .andWhere(keyword != undefined ? "development.projectName LIKE :keyword" : "1=1", { - keyword: `%${keyword}%`, - }) + .andWhere( + keyword != undefined + ? new Brackets ((qb) => { + qb.where("development.projectName LIKE :keyword") + .orWhere("development.root LIKE :keyword") + .orWhere("development.child1 LIKE :keyword") + .orWhere("development.child2 LIKE :keyword") + .orWhere("development.child3 LIKE :keyword") + .orWhere("development.child4 LIKE :keyword"); + }) + : "1=1", + { + keyword: `%${keyword}%`, + }, + ) .select([ "development.id", "development.projectName", @@ -2593,6 +2606,58 @@ export class DevelopmentController extends Controller { return new HttpSuccess(getOrg); } + @Get("registry/{type}/{developmentId}") + async developmentDetail( + @Path() developmentId: string, + @Path() type: string, + @Request() request: RequestWithUser + ) { + const getDevelopment = await this.developmentRepository.findOne({ + where: { id: developmentId }, + relations: [ + "developmentProjectTypes", + "developmentProjectTechniquePlanneds", + "developmentProjectTechniqueActuals", + "developmentAddresss", + ], + }); + if (!getDevelopment) + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลโครงการ/หลักสูตรการฝึกอบรมนี้"); + + if (type.trim().toLocaleUpperCase() == "OFFICER") { + let _workflow = await new permission().Workflow(request, developmentId, "SYS_REGISTRY_OFFICER"); + if (_workflow == false) await new permission().PermissionGet(request, "SYS_REGISTRY_OFFICER"); + } else if (type.trim().toLocaleUpperCase() == "USER") { + } else { + throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่สามารถเข้าถึงข้อมูลนี้ได้"); + } + + let _getDevelopment: any = { + id: getDevelopment.id, + evaluationId: null, + target: null, + summary: null, + point: null, + name: getDevelopment.projectName, + achievement10: "มีผลการพัฒนาและมีการดำเนินการตามเป้าหมายการนำไปพัฒนางาน", + achievement5: "มีผลการพัฒนาแต่ยังไม่ได้ดำเนินการตามเป้าหมายการนำไปพัฒนางาน", + achievement0: "ไม่ได้ดำเนินการพัฒนา", + isDevelopment70: getDevelopment.isReasonActual70, + isDevelopment20: getDevelopment.isReasonActual20, + isDevelopment10: getDevelopment.isReasonActual10, + reasonDevelopment70: getDevelopment.reasonActual70, + reasonDevelopment20: getDevelopment.reasonActual20, + reasonDevelopment10: getDevelopment.reasonActual10, + selectType: "PROJECT", + selectTypeYear: getDevelopment.year, + selectTypeId: null, + developmentProjects : getDevelopment.developmentProjectTechniqueActuals + .map((x) => x.name) + .sort(), + }; + return new HttpSuccess(_getDevelopment); + } + /** * API upload User * diff --git a/src/controllers/DevelopmentEmployeeHistoryController.ts b/src/controllers/DevelopmentEmployeeHistoryController.ts index 65dadc1..3d152ea 100644 --- a/src/controllers/DevelopmentEmployeeHistoryController.ts +++ b/src/controllers/DevelopmentEmployeeHistoryController.ts @@ -360,10 +360,18 @@ export class DevelopmentEmployeeHistoryController extends Controller { relations: [ "development", "development.developmentOthers", + "development.developmentOthers.province", "employeePosLevel", "employeePosType", ], where: { id: id, type: type }, + order: { + development:{ + developmentOthers: { + createdAt: "ASC" + } + } + } }); if (!getDevelopment) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประวัติการฝึกอบรม/ดูงานนี้"); @@ -408,6 +416,7 @@ export class DevelopmentEmployeeHistoryController extends Controller { ? getDevelopment.development.developmentOthers.map((dev) => ({ topicAcademic: dev.topicAcademic, addressAcademic: dev.addressAcademic, + province: dev.province.name })) : [], }; diff --git a/src/controllers/DevelopmentHistoryController.ts b/src/controllers/DevelopmentHistoryController.ts index 368858f..dec3501 100644 --- a/src/controllers/DevelopmentHistoryController.ts +++ b/src/controllers/DevelopmentHistoryController.ts @@ -27,6 +27,7 @@ import { PosLevel } from "../entities/PosLevel"; import { RequestWithUser } from "../middlewares/user"; import { setLogDataDiff } from "../interfaces/utils"; import permission from "../interfaces/permission"; +import { Province } from "../entities/Province"; @Route("api/v1/development/history/officer") @Tags("DevelopmentOfficerHistory") @@ -321,9 +322,10 @@ export class DevelopmentOfficerHistoryController extends Controller { const formattedData = development.map((item) => ({ id: item.id, citizenId: item.citizenId, - fullName: item.prefix == null && item.firstName == null && item.lastName == null - ? "" - : `${item?.prefix}${item?.firstName} ${item?.lastName}`, + fullName: + item.prefix == null && item.firstName == null && item.lastName == null + ? "" + : `${item?.prefix}${item?.firstName} ${item?.lastName}`, position: item.position, year: item.development.year, root: item.development.root, //test @@ -350,8 +352,21 @@ export class DevelopmentOfficerHistoryController extends Controller { await new permission().PermissionGet(request, "SYS_DEV_HISTORY_OFFICER"); const type = "OFFICER"; const getDevelopment = await this.developmentHistoryRepository.findOne({ - relations: ["development", "development.developmentOthers","posLevel", "posType"], + relations: [ + "development", + "development.developmentOthers", + "development.developmentOthers.province", + "posLevel", + "posType", + ], where: { id: id, type: type }, + order: { + development: { + developmentOthers: { + createdAt: "ASC", + }, + }, + }, }); if (!getDevelopment) { throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลประวัติการฝึกอบรม/ดูงานนี้"); @@ -389,12 +404,13 @@ export class DevelopmentOfficerHistoryController extends Controller { getDevelopment.development != null ? getDevelopment.development.dateStudyStart : null, dateStudyEnd: getDevelopment.development != null ? getDevelopment.development.dateStudyEnd : null, - academic: getDevelopment.development?.developmentOthers - ? getDevelopment.development.developmentOthers.map(dev => ({ + academic: getDevelopment.development?.developmentOthers + ? getDevelopment.development.developmentOthers.map((dev) => ({ topicAcademic: dev.topicAcademic, - addressAcademic: dev.addressAcademic - })) - : [] + addressAcademic: dev.addressAcademic, + province: dev.province.name, + })) + : [], }; return new HttpSuccess(formattedData); diff --git a/src/entities/DevelopmentOther.ts b/src/entities/DevelopmentOther.ts index 0e627f0..7cf0da1 100644 --- a/src/entities/DevelopmentOther.ts +++ b/src/entities/DevelopmentOther.ts @@ -38,7 +38,7 @@ export class DevelopmentOther extends EntityBase { development: Development; @ManyToOne(() => Province, (province: Province) => province.developmentOthers) - @JoinColumn({ name: "developmentId" }) + @JoinColumn({ name: "provinceActualId" }) province: Province; } diff --git a/src/middlewares/logs.ts b/src/middlewares/logs.ts index b1d83ba..fb2b6e2 100644 --- a/src/middlewares/logs.ts +++ b/src/middlewares/logs.ts @@ -60,7 +60,7 @@ async function logMiddleware(req: Request, res: Response, next: NextFunction) { logType: res.statusCode >= 500 ? "error" : res.statusCode >= 400 ? "warning" : "info", ip: req.ip, rootId: rootId?.orgRootId ?? null, - systemName: "evaluation", + systemName: "development", startTimeStamp: timestamp, endTimeStamp: new Date().toISOString(), processTime: performance.now() - start, diff --git a/src/migration/1734583427091-update_devorder_add_relation_province.ts b/src/migration/1734583427091-update_devorder_add_relation_province.ts deleted file mode 100644 index 9084218..0000000 --- a/src/migration/1734583427091-update_devorder_add_relation_province.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { MigrationInterface, QueryRunner } from "typeorm"; - -export class UpdateDevorderAddRelationProvince1734583427091 implements MigrationInterface { - name = 'UpdateDevorderAddRelationProvince1734583427091' - - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE \`developmentOther\` ADD CONSTRAINT \`FK_d5dfdb7ca0d11c0cdf3b3a55e6f\` FOREIGN KEY (\`developmentId\`) REFERENCES \`province\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE \`developmentOther\` DROP FOREIGN KEY \`FK_d5dfdb7ca0d11c0cdf3b3a55e6f\``); - } - -}