migrate and update #207

This commit is contained in:
AdisakKanthawilang 2025-04-22 13:51:46 +07:00
parent b958680692
commit 346d161083
3 changed files with 77 additions and 2 deletions

View file

@ -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();

View file

@ -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[];

View file

@ -0,0 +1,14 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class AddFieldIsUpdateTableEvaluation1745303689358 implements MigrationInterface {
name = 'AddFieldIsUpdateTableEvaluation1745303689358'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`evaluation\` ADD \`isUpdated\` tinyint NOT NULL COMMENT 'สถานะเช็คการอัพเดทชื่อผลงาน (STEP6)' DEFAULT 0`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE \`evaluation\` DROP COLUMN \`isUpdated\``);
}
}