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` +