feat(tournament): enhance validation of tournament members and external participants
- Implemented logic to load and validate TournamentMember and ExternalTournamentParticipant IDs for matches. - Updated checks to set player1 and player2 to null if they belong to external participants or do not match valid tournament members.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user