แก้กรรมการ
This commit is contained in:
parent
309f295391
commit
3a4eb56629
6 changed files with 128 additions and 44 deletions
|
|
@ -22,6 +22,7 @@ import { Not, Brackets } from "typeorm";
|
|||
import permission from "../interfaces/permission";
|
||||
import { RequestWithUser } from "../middlewares/user";
|
||||
import { setLogDataDiff } from "../interfaces/utils";
|
||||
import { evaluation_directors_director } from "../entities/evaluation_directors_director";
|
||||
@Route("api/v1/evaluation/director")
|
||||
@Tags("director")
|
||||
@Security("bearerAuth")
|
||||
|
|
@ -32,6 +33,9 @@ import { setLogDataDiff } from "../interfaces/utils";
|
|||
@SuccessResponse(HttpStatusCode.OK, "สำเร็จ")
|
||||
export class DirectorController {
|
||||
private directorRepository = AppDataSource.getRepository(Director);
|
||||
private evaluation_directors_directorRepository = AppDataSource.getRepository(
|
||||
evaluation_directors_director,
|
||||
);
|
||||
|
||||
/**
|
||||
* API สำหรับแสดงรายการกรรมการ
|
||||
|
|
@ -200,10 +204,14 @@ export class DirectorController {
|
|||
*
|
||||
*/
|
||||
@Put("duty/{id}")
|
||||
async updateDuty(@Path() id: string, @Body() body:{duty: string} , @Request() request: RequestWithUser) {
|
||||
async updateDuty(
|
||||
@Path() id: string,
|
||||
@Body() body: { duty: string },
|
||||
@Request() request: RequestWithUser,
|
||||
) {
|
||||
try {
|
||||
await new permission().PermissionUpdate(request, "SYS_EVA_INFO");
|
||||
let director = await this.directorRepository.findOneBy({ id });
|
||||
let director = await this.evaluation_directors_directorRepository.findOneBy({ id });
|
||||
if (!director) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลกรรมการ");
|
||||
}
|
||||
|
|
@ -212,7 +220,7 @@ export class DirectorController {
|
|||
director.lastUpdateUserId = request.user.sub;
|
||||
director.lastUpdateFullName = request.user.name;
|
||||
director.lastUpdatedAt = new Date();
|
||||
await this.directorRepository.save(director, { data: request });
|
||||
await this.evaluation_directors_directorRepository.save(director, { data: request });
|
||||
setLogDataDiff(request, { before, after: director });
|
||||
return new HttpSuccess();
|
||||
} catch (error: any) {
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ import Extension from "../interfaces/extension";
|
|||
import { Portfolio } from "../entities/Portfolio";
|
||||
import { Performance } from "../entities/Performance";
|
||||
import { AnnounceTemplate } from "../entities/AnnounceTemplate";
|
||||
import { evaluation_directors_director } from "../entities/evaluation_directors_director";
|
||||
|
||||
@Route("api/v1/evaluation")
|
||||
@Tags("evaluation")
|
||||
|
|
@ -58,6 +59,9 @@ export class EvaluationController {
|
|||
private directorRepository = AppDataSource.getRepository(Director);
|
||||
private meetingRepository = AppDataSource.getRepository(Meeting);
|
||||
private announceTemplateRepository = AppDataSource.getRepository(AnnounceTemplate);
|
||||
private evaluation_directors_directorRepository = AppDataSource.getRepository(
|
||||
evaluation_directors_director,
|
||||
);
|
||||
|
||||
/**
|
||||
* API ล้างข้อมูล
|
||||
|
|
@ -2221,7 +2225,7 @@ export class EvaluationController {
|
|||
evaluation.step = "PREPARE_DOC_V2";
|
||||
evaluation.subjectDoc2 = evaluation.subject;
|
||||
evaluation.authorDoc2 = evaluation.author;
|
||||
evaluation.assignedPosition = evaluation.position;
|
||||
evaluation.assignedPosition = evaluation.position; //xxxxxxxxxx
|
||||
evaluation.commanderFullnameDoc2 = evaluation.commanderFullname;
|
||||
evaluation.commanderPositionDoc2 = evaluation.commanderPosition;
|
||||
evaluation.commanderAboveFullnameDoc2 = evaluation.commanderAboveFullname;
|
||||
|
|
@ -2478,12 +2482,23 @@ export class EvaluationController {
|
|||
if (!evaluation) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "not found.");
|
||||
}
|
||||
if (!evaluation.directors) {
|
||||
evaluation.directors = [];
|
||||
if (!evaluation.evaluation_directors_director) {
|
||||
evaluation.evaluation_directors_director = [];
|
||||
}
|
||||
body.directors.forEach(async (directorId) => {
|
||||
const director = await this.directorRepository.findOne({ where: { id: directorId } });
|
||||
if (director != null) evaluation.directors.push(director);
|
||||
if (director != null) {
|
||||
await this.evaluation_directors_directorRepository.save({
|
||||
directorId: director.id,
|
||||
evaluationId: evaluation.id,
|
||||
createdUserId: request.user.sub,
|
||||
createdFullName: request.user.name,
|
||||
lastUpdateUserId: request.user.sub,
|
||||
lastUpdateFullName: request.user.name,
|
||||
createdAt: new Date(),
|
||||
lastUpdatedAt: new Date(),
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
evaluation.lastUpdateUserId = request.user.sub;
|
||||
|
|
@ -2580,20 +2595,24 @@ export class EvaluationController {
|
|||
|
||||
const evaluation = await this.evaluationRepository.findOne({
|
||||
where: { id },
|
||||
relations: ["directors", "meetings"],
|
||||
relations: [
|
||||
"evaluation_directors_director",
|
||||
"evaluation_directors_director.director",
|
||||
"meetings",
|
||||
],
|
||||
});
|
||||
if (!evaluation) {
|
||||
throw new HttpError(HttpStatusCode.NOT_FOUND, "not found.");
|
||||
}
|
||||
const directors = evaluation.directors.map((director) => ({
|
||||
const directors = evaluation.evaluation_directors_director.map((director) => ({
|
||||
id: director.id,
|
||||
prefix: director.prefix,
|
||||
firstName: director.firstName,
|
||||
lastName: director.lastName,
|
||||
position: director.position,
|
||||
prefix: director.director.prefix,
|
||||
firstName: director.director.firstName,
|
||||
lastName: director.director.lastName,
|
||||
position: director.director.position,
|
||||
positionName: null,
|
||||
email: director.email,
|
||||
phone: director.phone,
|
||||
email: director.director.email,
|
||||
phone: director.director.phone,
|
||||
duty: director.duty,
|
||||
}));
|
||||
|
||||
|
|
@ -3104,7 +3123,7 @@ export class EvaluationController {
|
|||
// await new permission().PermissionDelete(request, "SYS_EVA_REQ");
|
||||
const evaluation = await this.evaluationRepository.findOne({
|
||||
where: { id },
|
||||
relations: ["meetings", "directors"],
|
||||
relations: ["meetings", "evaluation_directors_director"],
|
||||
});
|
||||
|
||||
if (!evaluation) {
|
||||
|
|
@ -3125,11 +3144,7 @@ export class EvaluationController {
|
|||
this.meetingRepository.remove(meeting, { data: request }),
|
||||
),
|
||||
);
|
||||
await Promise.all(
|
||||
evaluation.directors.map((director) =>
|
||||
this.directorRepository.remove(director, { data: request }),
|
||||
),
|
||||
);
|
||||
await this.evaluation_directors_directorRepository.delete({ evaluationId: id });
|
||||
await this.evaluationRepository.delete({ id });
|
||||
|
||||
return new HttpSuccess();
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
import {
|
||||
Entity,
|
||||
Column,
|
||||
ManyToMany,
|
||||
} from "typeorm";
|
||||
import { Entity, Column, ManyToMany, OneToMany, JoinTable } from "typeorm";
|
||||
import { EntityBase } from "./base/Base";
|
||||
import { Evaluation } from "./Evaluation";
|
||||
import { evaluation_directors_director } from "./evaluation_directors_director";
|
||||
@Entity("director")
|
||||
export class Director extends EntityBase {
|
||||
@Column({ nullable: true, comment: "คำนำหน้าชื่อ" })
|
||||
|
|
@ -25,11 +22,18 @@ export class Director extends EntityBase {
|
|||
@Column({ nullable: true, comment: "ตำแหน่ง" })
|
||||
position: string;
|
||||
|
||||
@Column({ nullable: true, comment: "หน้าที่" })
|
||||
duty: string;
|
||||
// @Column({ nullable: true, comment: "หน้าที่" })
|
||||
// duty: string;
|
||||
|
||||
@ManyToMany(() => Evaluation, (evaluation) => evaluation.directors)
|
||||
evaluations: Evaluation[];
|
||||
// @ManyToMany(() => Evaluation, (evaluation) => evaluation.directors)
|
||||
// evaluations: Evaluation[];
|
||||
|
||||
@OneToMany(
|
||||
() => evaluation_directors_director,
|
||||
(evaluation_directors_director) => evaluation_directors_director.director,
|
||||
)
|
||||
@JoinTable()
|
||||
evaluation_directors_director: evaluation_directors_director[];
|
||||
}
|
||||
|
||||
export class CreateDirector {
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import { Director } from "./Director";
|
|||
import { Meeting } from "./Meeting";
|
||||
import { Portfolio } from "./Portfolio";
|
||||
import { Performance } from "./Performance";
|
||||
import { evaluation_directors_director } from "./evaluation_directors_director";
|
||||
|
||||
@Entity("evaluation")
|
||||
export class Evaluation extends EntityBase {
|
||||
|
|
@ -201,7 +202,6 @@ export class Evaluation extends EntityBase {
|
|||
@Column({ nullable: true, comment: "ตำแหน่ง ผู้บังคับบัญชาชั้นต้น (จัดเตรียมเอกสารเล่ม 2)" })
|
||||
commanderPositionDoc2: string;
|
||||
|
||||
|
||||
@Column({ nullable: true, comment: "สังกัดปัจุบัน ผู้บังคับบัญชาชั้นต้น" })
|
||||
commanderOrg: string;
|
||||
@Column({ nullable: true, comment: "สังกัดเดิม ผู้บังคับบัญชาชั้นต้น" })
|
||||
|
|
@ -256,13 +256,13 @@ export class Evaluation extends EntityBase {
|
|||
@Column({ nullable: true, comment: "ชื่อเจ้าของผลงาน" })
|
||||
author: string;
|
||||
|
||||
@Column({ type: 'json', nullable: true, comment: 'ชื่อผลงาน' })
|
||||
@Column({ type: "json", nullable: true, comment: "ชื่อผลงาน" })
|
||||
subject: string[];
|
||||
|
||||
@Column({ nullable: true, comment: "ชื่อเจ้าของผลงาน2" })
|
||||
authorDoc2: string;
|
||||
|
||||
@Column({ type: 'json', nullable: true, comment: "ชื่อผลงาน2" })
|
||||
@Column({ type: "json", nullable: true, comment: "ชื่อผลงาน2" })
|
||||
subjectDoc2: string[];
|
||||
|
||||
@Column({ nullable: true, comment: "ตำแหน่งที่ได้รับมอบหมาย" })
|
||||
|
|
@ -271,17 +271,15 @@ export class Evaluation extends EntityBase {
|
|||
@Column({ nullable: true, comment: "ผลการประเมิน", default: "PENDING" }) //PENDING,PASS,NOTPASS
|
||||
evaluationResult: string;
|
||||
|
||||
@Column({ type: 'text', nullable: true, comment: 'รายละเอียดประกาศ(STEP5)'})
|
||||
@Column({ type: "text", nullable: true, comment: "รายละเอียดประกาศ(STEP5)" })
|
||||
detailAnnounceStep5Body: string;
|
||||
|
||||
@Column({ type: 'text', nullable: true, comment: 'รายละเอียดส่วนท้าย(STEP5)'})
|
||||
@Column({ type: "text", nullable: true, comment: "รายละเอียดส่วนท้าย(STEP5)" })
|
||||
detailAnnounceStep5Footer: string;
|
||||
|
||||
@Column({ default: false, comment: 'สถานะเช็คการอัพเดทชื่อผลงาน (STEP6)'})
|
||||
@Column({ default: false, comment: "สถานะเช็คการอัพเดทชื่อผลงาน (STEP6)" })
|
||||
isUpdated: boolean;
|
||||
|
||||
|
||||
|
||||
@OneToMany(() => EvaluationLogs, (evaluationLogs) => evaluationLogs.evaluation)
|
||||
evaluationLogs: EvaluationLogs[];
|
||||
|
||||
|
|
@ -306,15 +304,20 @@ export class Evaluation extends EntityBase {
|
|||
@OneToMany(() => Performance, (performance) => performance.evaluation)
|
||||
performances: Performance[];
|
||||
|
||||
@ManyToMany(() => Director, (director) => director.evaluations)
|
||||
@JoinTable()
|
||||
directors: Director[];
|
||||
// @ManyToMany(() => Director, (director) => director.evaluations)
|
||||
// @JoinTable()
|
||||
// directors: Director[];
|
||||
|
||||
@ManyToMany(() => Meeting, (meeting) => meeting.evaluations)
|
||||
@JoinTable()
|
||||
meetings: Meeting[];
|
||||
|
||||
|
||||
@OneToMany(
|
||||
() => evaluation_directors_director,
|
||||
(evaluation_directors_director) => evaluation_directors_director.evaluation,
|
||||
)
|
||||
@JoinTable()
|
||||
evaluation_directors_director: evaluation_directors_director[];
|
||||
}
|
||||
|
||||
export class CreateEvaluation {
|
||||
|
|
@ -612,7 +615,7 @@ export class CreateEvaluationExpertise {
|
|||
|
||||
@Column()
|
||||
oc?: string | null;
|
||||
|
||||
|
||||
@Column()
|
||||
citizenId?: string | null;
|
||||
|
||||
|
|
@ -639,7 +642,6 @@ export class CreateEvaluationExpertise {
|
|||
|
||||
@Column()
|
||||
govAge?: string | null;
|
||||
|
||||
}
|
||||
|
||||
export type UpdateEvaluation = Partial<Evaluation>;
|
||||
|
|
|
|||
35
src/entities/evaluation_directors_director.ts
Normal file
35
src/entities/evaluation_directors_director.ts
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import { Entity, Column, ManyToMany, ManyToOne, JoinColumn } from "typeorm";
|
||||
import { EntityBase } from "./base/Base";
|
||||
import { Evaluation } from "./Evaluation";
|
||||
import { Director } from "./Director";
|
||||
@Entity("evaluation_directors_director")
|
||||
export class evaluation_directors_director extends EntityBase {
|
||||
@Column({
|
||||
comment: "Id การทำรายการระบบประเมิน",
|
||||
length: 40,
|
||||
default: "00000000-0000-0000-0000-000000000000",
|
||||
})
|
||||
directorId: string;
|
||||
|
||||
@Column({
|
||||
comment: "Id การทำรายการระบบประเมิน",
|
||||
length: 40,
|
||||
default: "00000000-0000-0000-0000-000000000000",
|
||||
})
|
||||
evaluationId: string;
|
||||
|
||||
@Column({
|
||||
nullable: true,
|
||||
comment: "หน้าที่",
|
||||
default: null,
|
||||
})
|
||||
duty: string;
|
||||
|
||||
@ManyToOne(() => Director, (Director) => Director.evaluation_directors_director)
|
||||
@JoinColumn({ name: "directorId" })
|
||||
director: Director;
|
||||
|
||||
@ManyToOne(() => Evaluation, (Evaluation) => Evaluation.evaluation_directors_director)
|
||||
@JoinColumn({ name: "evaluationId" })
|
||||
evaluation: Evaluation;
|
||||
}
|
||||
20
src/migration/1749798550561-update30062025603.ts
Normal file
20
src/migration/1749798550561-update30062025603.ts
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
import { MigrationInterface, QueryRunner } from "typeorm";
|
||||
|
||||
export class Update300620256031749798550561 implements MigrationInterface {
|
||||
name = 'Update300620256031749798550561'
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`CREATE TABLE \`evaluation_directors_director\` (\`id\` varchar(36) NOT NULL, \`createdAt\` datetime(6) NOT NULL COMMENT 'สร้างข้อมูลเมื่อ' DEFAULT CURRENT_TIMESTAMP(6), \`createdUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่สร้างข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`lastUpdatedAt\` datetime(6) NOT NULL COMMENT 'แก้ไขข้อมูลล่าสุดเมื่อ' DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), \`lastUpdateUserId\` varchar(40) NOT NULL COMMENT 'User Id ที่แก้ไขข้อมูล' DEFAULT '00000000-0000-0000-0000-000000000000', \`createdFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่สร้างข้อมูล' DEFAULT 'string', \`lastUpdateFullName\` varchar(200) NOT NULL COMMENT 'ชื่อ User ที่แก้ไขข้อมูลล่าสุด' DEFAULT 'string', \`directorId\` varchar(40) NOT NULL COMMENT 'Id การทำรายการระบบประเมิน' DEFAULT '00000000-0000-0000-0000-000000000000', \`evaluationId\` varchar(40) NOT NULL COMMENT 'Id การทำรายการระบบประเมิน' DEFAULT '00000000-0000-0000-0000-000000000000', \`duty\` varchar(255) NULL COMMENT 'หน้าที่', PRIMARY KEY (\`id\`)) ENGINE=InnoDB`);
|
||||
await queryRunner.query(`ALTER TABLE \`director\` DROP COLUMN \`duty\``);
|
||||
await queryRunner.query(`ALTER TABLE \`evaluation_directors_director\` ADD CONSTRAINT \`FK_a1b902762a4a2410a10b6728065\` FOREIGN KEY (\`directorId\`) REFERENCES \`director\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
||||
await queryRunner.query(`ALTER TABLE \`evaluation_directors_director\` ADD CONSTRAINT \`FK_aee4e7f5076bf5ff10190ddb79b\` FOREIGN KEY (\`evaluationId\`) REFERENCES \`evaluation\`(\`id\`) ON DELETE NO ACTION ON UPDATE NO ACTION`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`ALTER TABLE \`evaluation_directors_director\` DROP FOREIGN KEY \`FK_aee4e7f5076bf5ff10190ddb79b\``);
|
||||
await queryRunner.query(`ALTER TABLE \`evaluation_directors_director\` DROP FOREIGN KEY \`FK_a1b902762a4a2410a10b6728065\``);
|
||||
await queryRunner.query(`ALTER TABLE \`director\` ADD \`duty\` varchar(255) NULL COMMENT 'หน้าที่'`);
|
||||
await queryRunner.query(`DROP TABLE \`evaluation_directors_director\``);
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue