diff --git a/frontend/src/components/MatchReportApiDialog.vue b/frontend/src/components/MatchReportApiDialog.vue index bf0df44..5458595 100644 --- a/frontend/src/components/MatchReportApiDialog.vue +++ b/frontend/src/components/MatchReportApiDialog.vue @@ -530,10 +530,14 @@
- + ❌ Der Spielbericht kann nicht abgesendet werden. Es müssen alle Spiele abgeschlossen sein.
Bitte schließen Sie alle {{ results.filter(match => !match.completed).length }} offenen Spiele ab!
+ + ℹ️ ALLGAMES-Modus aktiv, aber beide Mannschaften haben nicht genügend Spieler für alle Spiele. +
Das Absenden ist trotzdem möglich. Abgeschlossene Spiele werden übertragen. +
❌ Der Spielbericht kann nicht abgesendet werden. Es gibt noch Fehler in den Match-Ergebnissen.
Bitte überprüfen Sie die Ergebniserfassung! @@ -781,6 +785,38 @@ Wir wünschen den Spielen einen schönen, spannenden und fairen Verlauf und begr return actualCount; }, + // Prüfe ob beide Mannschaften genügend Spieler für alle Spiele haben + canBothTeamsPlayAllGames() { + const playMode = this.getPlayMode(); + const homePlayerCount = this.getSelectedPlayerCount('home'); + const guestPlayerCount = this.getSelectedPlayerCount('guest'); + + console.log(`🔍 Prüfe Spielberechtigung: ${playMode}, Heim: ${homePlayerCount}, Gast: ${guestPlayerCount}`); + + // Spezielle Regeln basierend auf Spielsystem + if (playMode && playMode.toLowerCase().includes('braunschweiger')) { + // Braunschweiger System: Beide müssen mindestens 4 Spieler haben + const requiresMinPlayers = 4; + const canBothPlay = homePlayerCount >= requiresMinPlayers && guestPlayerCount >= requiresMinPlayers; + console.log(`📊 Braunschweiger System: Heim ${homePlayerCount} >= ${requiresMinPlayers} && Gast ${guestPlayerCount} >= ${requiresMinPlayers} = ${canBothPlay}`); + return canBothPlay; + } + else if (playMode && playMode.toLowerCase().includes('6er')) { + // 6er System: Beide müssen mindestens 6 Spieler haben + const requiresMinPlayers = 6; + const canBothPlay = homePlayerCount >= requiresMinPlayers && guestPlayerCount >= requiresMinPlayers; + console.log(`📊 6er System: Heim ${homePlayerCount} >= ${requiresMinPlayers} && Gast ${guestPlayerCount} >= ${requiresMinPlayers} = ${canBothPlay}`); + return canBothPlay; + } + else { + // 4er Systeme (einschließlich Standard): Beide müssen mindestens 4 Spieler haben + const requiresMinPlayers = 4; + const canBothPlay = homePlayerCount >= requiresMinPlayers && guestPlayerCount >= requiresMinPlayers; + console.log(`📊 4er System: Heim ${homePlayerCount} >= ${requiresMinPlayers} && Gast ${guestPlayerCount} >= ${requiresMinPlayers} = ${canBothPlay}`); + return canBothPlay; + } + }, + // Auto-Fill für leere Matches autoFillEmptyMatches() { console.log('🔧 Starte Auto-Fill für leere Matches...'); @@ -980,8 +1016,12 @@ Wir wünschen den Spielen einen schönen, spannenden und fairen Verlauf und begr } else if (!this.areAllMatchResultsValid()) { const playThrough = this.getPlayThrough(); if (playThrough && playThrough.toUpperCase().includes('ALLGAMES')) { - const unfinishedMatches = this.results.filter(match => !match.completed); - return `❌ Spielbericht absenden (${unfinishedMatches.length} Spiel/e noch offen)`; + if (this.canBothTeamsPlayAllGames()) { + const unfinishedMatches = this.results.filter(match => !match.completed); + return `❌ Spielbericht absenden (${unfinishedMatches.length} Spiel/e noch offen)`; + } else { + return '✅ Spielbericht absenden (Mannschaften unvollständig)'; + } } return '❌ Spielbericht absenden (Ergebnisse fehlerhaft)'; } else if (!this.areStartAndEndTimesValid()) { @@ -1031,13 +1071,21 @@ Wir wünschen den Spielen einen schönen, spannenden und fairen Verlauf und begr // Spezielle Regel für ALLGAMES Spielmodus const playThrough = this.getPlayThrough(); if (playThrough && playThrough.toUpperCase().includes('ALLGAMES')) { - // Alle Spiele müssen abgeschlossen sein - const unfinishedMatches = this.results.filter(match => !match.completed); - if (unfinishedMatches.length > 0) { - console.log(`❌ ALLGAMES Modus: ${unfinishedMatches.length} Spiel(e) noch nicht abgeschlossen`); - return false; + // Prüfe zuerst, ob beide Mannschaften genügend Spieler haben + const canBothTeamsPlayFullGames = this.canBothTeamsPlayAllGames(); + + if (!canBothTeamsPlayFullGames) { + console.log('✅ ALLGAMES Modus: Beide Mannschaften haben nicht genüged Spieler - Absenden trotzdem möglich'); + // Validiere nur die vorhandenen/abgeschlossenen Matches, nicht alle müssen alle abgeschlossen sein + } else { + // Alle Spiele müssen abgeschlossen sein + const unfinishedMatches = this.results.filter(match => !match.completed); + if (unfinishedMatches.length > 0) { + console.log(`❌ ALLGAMES Modus: ${unfinishedMatches.length} Spiel(e) noch nicht abgeschlossen`); + return false; + } + console.log('✅ ALLGAMES Modus: Alle Spiele sind abgeschlossen'); } - console.log('✅ ALLGAMES Modus: Alle Spiele sind abgeschlossen'); } for (let i = 0; i < this.results.length; i++) { @@ -1088,7 +1136,7 @@ Wir wünschen den Spielen einen schönen, spannenden und fairen Verlauf und begr // Validiere zuerst alle Match-Ergebnisse if (!this.areAllMatchResultsValid()) { const playThrough = this.getPlayThrough(); - if (playThrough && playThrough.toUpperCase().includes('ALLGAMES')) { + if (playThrough && playThrough.toUpperCase().includes('ALLGAMES') && this.canBothTeamsPlayAllGames()) { const unfinishedMatches = this.results.filter(match => !match.completed); alert(`❌ Der Spielbericht kann nicht abgesendet werden. Es müssen alle Spiele abgeschlossen sein.\n\n` + `📊 Aktueller Status:\n` +