Erweitert den MatchReportApiDialog um eine neue Validierungslogik zur Überprüfung, ob beide Mannschaften genügend Spieler für den ALLGAMES-Modus haben. Implementiert die Methode canBothTeamsPlayAllGames, die die Spieleranzahl basierend auf verschiedenen Spielsystemen überprüft. Aktualisiert die Benutzeroberfläche mit neuen Warnungen und Rückmeldungen für unvollständige Mannschaften und ermöglicht das Absenden des Berichts trotz unvollständiger Spieleranzahl.

This commit is contained in:
Torsten Schulz (local)
2025-10-04 00:54:41 +02:00
parent 280c1432b7
commit e8b6578bd4

View File

@@ -530,10 +530,14 @@
<!-- Warnung wenn Match-Ergebnisse fehlerhaft sind -->
<div v-else-if="!areAllMatchResultsValid()" class="validation-notice">
<span v-if="getPlayThrough() && getPlayThrough().toUpperCase().includes('ALLGAMES')">
<span v-if="getPlayThrough() && getPlayThrough().toUpperCase().includes('ALLGAMES') && canBothTeamsPlayAllGames()">
Der Spielbericht kann nicht abgesendet werden. Es müssen alle Spiele abgeschlossen sein.
<br><strong>Bitte schließen Sie alle {{ results.filter(match => !match.completed).length }} offenen Spiele ab!</strong>
</span>
<span v-else-if="getPlayThrough() && getPlayThrough().toUpperCase().includes('ALLGAMES') && !canBothTeamsPlayAllGames()">
ALLGAMES-Modus aktiv, aber beide Mannschaften haben nicht genügend Spieler für alle Spiele.
<br><strong>Das Absenden ist trotzdem möglich. Abgeschlossene Spiele werden übertragen.</strong>
</span>
<span v-else>
Der Spielbericht kann nicht abgesendet werden. Es gibt noch Fehler in den Match-Ergebnissen.
<br><strong>Bitte überprüfen Sie die Ergebniserfassung!</strong>
@@ -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` +