แก้กรรมการ

This commit is contained in:
Moss 2025-06-13 15:20:58 +07:00
parent 309f295391
commit 3a4eb56629
6 changed files with 128 additions and 44 deletions

View file

@ -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) {

View file

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