From 346d161083c1cae923d172a8075c13582f982b69 Mon Sep 17 00:00:00 2001 From: AdisakKanthawilang Date: Tue, 22 Apr 2025 13:51:46 +0700 Subject: [PATCH] migrate and update #207 --- src/controllers/EvaluationController.ts | 60 ++++++++++++++++++- src/entities/Evaluation.ts | 5 ++ ...358-add_field_isUpdate_table_evaluation.ts | 14 +++++ 3 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 src/migration/1745303689358-add_field_isUpdate_table_evaluation.ts diff --git a/src/controllers/EvaluationController.ts b/src/controllers/EvaluationController.ts index 9d607e5..8d687e6 100644 --- a/src/controllers/EvaluationController.ts +++ b/src/controllers/EvaluationController.ts @@ -35,6 +35,7 @@ import { setLogDataDiff } from "../interfaces/utils"; import Extension from "../interfaces/extension"; import { Portfolio } from "../entities/Portfolio"; import { Performance } from "../entities/Performance"; +import { AnnounceTemplate } from "../entities/AnnounceTemplate"; @Route("api/v1/evaluation") @Tags("evaluation") @@ -56,6 +57,7 @@ export class EvaluationController { private performanceRepository = AppDataSource.getRepository(Performance); private directorRepository = AppDataSource.getRepository(Director); private meetingRepository = AppDataSource.getRepository(Meeting); + private announceTemplateRepository = AppDataSource.getRepository(AnnounceTemplate); /** * API ล้างข้อมูล @@ -479,11 +481,17 @@ export class EvaluationController { async save(@Body() requestBody: CreateEvaluation, @Request() request: RequestWithUser) { // await new permission().PermissionCreate(request, "SYS_EVA_REQ"); try { + const _null: any = null; const evaluation = Object.assign(new Evaluation(), requestBody); if (!evaluation) { return `not found data`; } - + const announceTemplate5 = await this.announceTemplateRepository.findOne({ + where:{ + code : "ST05-1" + }, + select: ["detailBody","detailFooter"] + }) const before = null; await new CallAPI() .GetData(request, `/org/profile/keycloak/commander/${request.user.sub}`) @@ -505,10 +513,11 @@ export class EvaluationController { evaluation.lastUpdateFullName = request.user.name; evaluation.lastUpdatedAt = new Date(); evaluation.userId = request.user.sub; + evaluation.detailAnnounceStep5Body = announceTemplate5?.detailBody??_null; + evaluation.detailAnnounceStep5Footer = announceTemplate5?.detailFooter??_null; await this.evaluationRepository.save(evaluation, { data: request }); setLogDataDiff(request, { before, after: evaluation }); - const _null: any = null; //Education if (requestBody.educations != null) requestBody.educations.forEach(async (edu) => { @@ -1030,6 +1039,9 @@ export class EvaluationController { "evaluation.birthDate", "evaluation.govAge", "evaluation.experience", + "evaluation.detailAnnounceStep5Body", + "evaluation.detailAnnounceStep5Footer", + "evaluation.isUpdated", "education.educationLevel", "education.institute", @@ -1144,6 +1156,9 @@ export class EvaluationController { birthDate: evaluation.birthDate, govAge: evaluation.govAge, experience: evaluation.experience, + detailAnnounceStep5Body: evaluation.detailAnnounceStep5Body, + detailAnnounceStep5Footer: evaluation.detailAnnounceStep5Footer, + isUpdated: evaluation.isUpdated, educations: evaluation.education.map((education) => ({ educationLevel: education.educationLevel, institute: education.institute, @@ -1384,6 +1399,9 @@ export class EvaluationController { "evaluation.birthDate", "evaluation.govAge", "evaluation.experience", + "evaluation.detailAnnounceStep5Body", + "evaluation.detailAnnounceStep5Footer", + "evaluation.isUpdated", "education.educationLevel", "education.institute", @@ -1498,6 +1516,9 @@ export class EvaluationController { birthDate: evaluation.birthDate, govAge: evaluation.govAge, experience: evaluation.experience, + detailAnnounceStep5Body: evaluation.detailAnnounceStep5Body, + detailAnnounceStep5Footer: evaluation.detailAnnounceStep5Footer, + isUpdated: evaluation.isUpdated, educations: evaluation.education.map((education) => ({ educationLevel: education.educationLevel, institute: education.institute, @@ -2051,6 +2072,40 @@ export class EvaluationController { } } + /** + * API แก้ไข template ประกาศคัดเลือก + * + * @summary แก้ไข template ประกาศคัดเลือก (ADMIN) + * + * @param {string} id id ข้อมูลการประเมิน + */ + @Put("edit-announce-template/{id}") + async editAnnounceTemp(@Path() id: string, @Request() request: RequestWithUser, @Body() body: {detailBody: string, detailFooter: string}) { + try { + await new permission().PermissionUpdate(request, "SYS_EVA_REQ"); + + const evaluation = await this.evaluationRepository.findOne({ where: { id } }); + if (!evaluation) { + throw new HttpError(HttpStatusCode.NOT_FOUND, "not found."); + } + const before = structuredClone(evaluation); + + evaluation.detailAnnounceStep5Body = body.detailBody; + evaluation.detailAnnounceStep5Footer = body.detailFooter; + evaluation.lastUpdateUserId = request.user.sub; + evaluation.lastUpdateFullName = request.user.name; + evaluation.lastUpdatedAt = new Date(); + await this.evaluationRepository.save(evaluation, { data: request }); + setLogDataDiff(request, { before, after: evaluation }); + + return new HttpSuccess(); + } catch (error: any) { + if (error instanceof HttpError) { + throw error; + } else throw new HttpError(HttpStatusCode.INTERNAL_SERVER_ERROR, error); + } + } + /** * API บันทึกแจ้งผลการประกาศคัดเลือก * @@ -2938,6 +2993,7 @@ export class EvaluationController { evaluation.commanderAboveOrgOldDoc2 = body.commanderAboveOrgOldDoc2??_null; evaluation.commanderAbovePositionDoc2 = body.commanderAbovePositionDoc2; evaluation.commanderAbovePositionOldDoc2 = body.commanderAbovePositionOldDoc2??_null; + evaluation.isUpdated = true; evaluation.lastUpdateUserId = request.user.sub; evaluation.lastUpdateFullName = request.user.name; evaluation.lastUpdatedAt = new Date(); diff --git a/src/entities/Evaluation.ts b/src/entities/Evaluation.ts index 88eb5b4..1d86511 100644 --- a/src/entities/Evaluation.ts +++ b/src/entities/Evaluation.ts @@ -272,6 +272,11 @@ export class Evaluation extends EntityBase { @Column({ type: 'text', nullable: true, comment: 'รายละเอียดส่วนท้าย(STEP5)'}) detailAnnounceStep5Footer: string; + @Column({ default: false, comment: 'สถานะเช็คการอัพเดทชื่อผลงาน (STEP6)'}) + isUpdated: boolean; + + + @OneToMany(() => EvaluationLogs, (evaluationLogs) => evaluationLogs.evaluation) evaluationLogs: EvaluationLogs[]; diff --git a/src/migration/1745303689358-add_field_isUpdate_table_evaluation.ts b/src/migration/1745303689358-add_field_isUpdate_table_evaluation.ts new file mode 100644 index 0000000..1b8cbe5 --- /dev/null +++ b/src/migration/1745303689358-add_field_isUpdate_table_evaluation.ts @@ -0,0 +1,14 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; + +export class AddFieldIsUpdateTableEvaluation1745303689358 implements MigrationInterface { + name = 'AddFieldIsUpdateTableEvaluation1745303689358' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`evaluation\` ADD \`isUpdated\` tinyint NOT NULL COMMENT 'สถานะเช็คการอัพเดทชื่อผลงาน (STEP6)' DEFAULT 0`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE \`evaluation\` DROP COLUMN \`isUpdated\``); + } + +}