From c56d0793ad35fc73af747c4ca2f5afd796d2f272 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Wed, 16 Sep 2026 07:29:19 +0200 Subject: [PATCH] refactor(TournamentService): update participant ID handling for knockout matches --- backend/services/tournamentService.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/backend/services/tournamentService.js b/backend/services/tournamentService.js index 8ee41127..f796d985 100755 --- a/backend/services/tournamentService.js +++ b/backend/services/tournamentService.js @@ -370,12 +370,12 @@ class TournamentService { const perGroupRanked = relevantStage1Groups.map(g => ({ groupId: g.groupId, classId: g.classId ?? null, - // WICHTIG: - // - Für interne Teilnehmer brauchen wir die ClubMember-ID (Member.id / TournamentMember.clubMemberId), - // nicht die TournamentMember.id. - // - Für externe Teilnehmer ist `id` die ExternalTournamentParticipant.id (bestehende Logik). + // `id` muss für K.-o.-Matches die Turnierteilnehmer-ID sein, weil + // getTournamentMatches() Spieler damit auflöst. Die Vereinsmitglied-ID + // behalten wir zusätzlich für einen möglichen Übergang in weitere Gruppen. participants: (g.participants || []).map((p, index) => ({ - id: p.isExternal ? p.id : (p.clubMemberId ?? p.member?.id ?? p.id), + id: p.id, + clubMemberId: p.isExternal ? null : p.clubMemberId, isExternal: !!p.isExternal, place: Number(p.position ?? index + 1), points: Number(p.points ?? 0), @@ -482,7 +482,8 @@ class TournamentService { createdGroups.push(containerGroup); const entrants = items.map(p => ({ - // p.id wurde oben bereits als clubMemberId (intern) bzw. ExternalParticipant.id (extern) gemappt + // `id` ist die Turnierteilnehmer-ID; clubMemberId bleibt für + // etwaige spätere Gruppenübergänge separat erhalten. id: Number(p.id), isExternal: !!p.isExternal, }));