diff --git a/backend/services/tournamentService.js b/backend/services/tournamentService.js index 6faae16..a55edea 100644 --- a/backend/services/tournamentService.js +++ b/backend/services/tournamentService.js @@ -1726,13 +1726,39 @@ class TournamentService { return (a.id ?? 0) - (b.id ?? 0); }); - // WICHTIG: Prüfe, ob die geladenen TournamentMember tatsächlich zu diesem Turnier gehören - // Wenn nicht, setze sie auf null, damit sie als externe Teilnehmer geladen werden können + // WICHTIG: Lade alle gültigen TournamentMember-IDs und ExternalTournamentParticipant-IDs für dieses Turnier + // um zu prüfen, ob ein geladenes TournamentMember tatsächlich zu diesem Turnier gehört + const validTournamentMemberIds = new Set(); + const allTournamentMembers = await TournamentMember.findAll({ + where: { tournamentId }, + attributes: ['id'] + }); + allTournamentMembers.forEach(tm => validTournamentMemberIds.add(tm.id)); + + // Lade auch alle ExternalTournamentParticipant-IDs, um zu prüfen, ob eine ID zu einem externen Teilnehmer gehört + const validExternalParticipantIds = new Set(); + const allExternalParticipants = await ExternalTournamentParticipant.findAll({ + where: { tournamentId }, + attributes: ['id'] + }); + allExternalParticipants.forEach(ep => validExternalParticipantIds.add(ep.id)); + + // Prüfe für jedes Match, ob die player1Id/player2Id zu einem externen Teilnehmer gehört + // Wenn ja, setze das geladene TournamentMember auf null (auch wenn es zufällig geladen wurde) matches.forEach(match => { - if (match.player1 && match.player1.tournamentId !== tournamentId) { + if (match.player1Id && validExternalParticipantIds.has(match.player1Id)) { + // Diese ID gehört zu einem externen Teilnehmer, also sollte player1 null sein + match.player1 = null; + } else if (match.player1 && !validTournamentMemberIds.has(match.player1.id)) { + // Das geladene TournamentMember gehört nicht zu diesem Turnier match.player1 = null; } - if (match.player2 && match.player2.tournamentId !== tournamentId) { + + if (match.player2Id && validExternalParticipantIds.has(match.player2Id)) { + // Diese ID gehört zu einem externen Teilnehmer, also sollte player2 null sein + match.player2 = null; + } else if (match.player2 && !validTournamentMemberIds.has(match.player2.id)) { + // Das geladene TournamentMember gehört nicht zu diesem Turnier match.player2 = null; } });