fix ระบบประเมินบุคคล (EVA) เพิ่มรายชื่อกรรมการ ระบบแจ้ง Error #2396

This commit is contained in:
harid 2026-03-31 17:19:49 +07:00
parent 640c7eabee
commit eb2f4c8b1b

View file

@ -2630,13 +2630,22 @@ export class EvaluationController {
if (!evaluation) {
throw new HttpError(HttpStatusCode.NOT_FOUND, "not found.");
}
if (!evaluation.evaluation_directors_director) {
evaluation.evaluation_directors_director = [];
}
body.directors.forEach(async (directorId) => {
// ดึง directors เดิมที่มีอยู่
const existingDirectors = await this.evaluation_directors_directorRepository.find({
where: { evaluationId: evaluation.id },
});
const existingDirectorIds = new Set(existingDirectors.map((d) => d.directorId));
// เพิ่ม directors ใหม่ที่ยังไม่มี
const newDirectors = [];
for (const directorId of body.directors) {
// ข้ามถ้ามีอยู่แล้ว
if (existingDirectorIds.has(directorId)) {
continue;
}
const director = await this.directorRepository.findOne({ where: { id: directorId } });
if (director != null) {
await this.evaluation_directors_directorRepository.save({
newDirectors.push({
directorId: director.id,
evaluationId: evaluation.id,
createdUserId: request.user.sub,
@ -2646,8 +2655,12 @@ export class EvaluationController {
createdAt: new Date(),
lastUpdatedAt: new Date(),
});
existingDirectorIds.add(director.id); // เพิ่มเพื่อป้องกันซ้ำใน batch เดียวกัน
}
});
}
if (newDirectors.length > 0) {
await this.evaluation_directors_directorRepository.insert(newDirectors);
}
evaluation.lastUpdateUserId = request.user.sub;
evaluation.lastUpdateFullName = request.user.name;