From eb2f4c8b1ba7675d72cb3764a4b03036a1d7b2c4 Mon Sep 17 00:00:00 2001 From: harid Date: Tue, 31 Mar 2026 17:19:49 +0700 Subject: [PATCH] =?UTF-8?q?fix=20=E0=B8=A3=E0=B8=B0=E0=B8=9A=E0=B8=9A?= =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B0=E0=B9=80=E0=B8=A1=E0=B8=B4=E0=B8=99?= =?UTF-8?q?=E0=B8=9A=E0=B8=B8=E0=B8=84=E0=B8=84=E0=B8=A5=20(EVA)=20=20?= =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1=E0=B8=A3=E0=B8=B2?= =?UTF-8?q?=E0=B8=A2=E0=B8=8A=E0=B8=B7=E0=B9=88=E0=B8=AD=E0=B8=81=E0=B8=A3?= =?UTF-8?q?=E0=B8=A3=E0=B8=A1=E0=B8=81=E0=B8=B2=E0=B8=A3=20=E0=B8=A3?= =?UTF-8?q?=E0=B8=B0=E0=B8=9A=E0=B8=9A=E0=B9=81=E0=B8=88=E0=B9=89=E0=B8=87?= =?UTF-8?q?=20Error=20#2396?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controllers/EvaluationController.ts | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/controllers/EvaluationController.ts b/src/controllers/EvaluationController.ts index 622060e..09a09bc 100644 --- a/src/controllers/EvaluationController.ts +++ b/src/controllers/EvaluationController.ts @@ -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;