From 76b9cfbc914aab3b76e9a05605f5097574b846ba Mon Sep 17 00:00:00 2001 From: Michel ten Voorde Date: Tue, 10 Dec 2024 21:58:49 +0100 Subject: [PATCH] Prevent match containing active players from being started --- .../tournament-manage.component.ts | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/app/components/tournament-manage/tournament-manage.component.ts b/src/app/components/tournament-manage/tournament-manage.component.ts index 75cc261..89e6612 100644 --- a/src/app/components/tournament-manage/tournament-manage.component.ts +++ b/src/app/components/tournament-manage/tournament-manage.component.ts @@ -2,7 +2,6 @@ import {Component, inject, Input, OnInit} from '@angular/core'; import { MatAccordion, MatExpansionPanel, - MatExpansionPanelDescription, MatExpansionPanelHeader, MatExpansionPanelTitle } from "@angular/material/expansion"; @@ -13,14 +12,10 @@ import {TournamentService} from "../../service/tournament.service"; import {ActivatedRoute, Router} from "@angular/router"; import {Tournament} from "../../model/tournament"; import {FullNamePipe} from "../../pipes/fullname-pipe"; -import {MatList, MatListItem} from "@angular/material/list"; -import {MatDivider} from "@angular/material/divider"; -import {MatAnchor, MatButton, MatIconAnchor, MatIconButton, MatMiniFabAnchor} from "@angular/material/button"; +import {MatButton, MatIconButton} from "@angular/material/button"; import {MatIcon} from "@angular/material/icon"; import {Group} from "../../model/group"; import {Round} from "../../model/round"; -import {MatTable} from "@angular/material/table"; -import {StatusPipe} from "../../pipes/status-pipe"; import {MatMenu, MatMenuContent, MatMenuItem, MatMenuTrigger} from "@angular/material/menu"; import {Match} from "../../model/match"; import {FormsModule} from "@angular/forms"; @@ -48,19 +43,12 @@ import {TitleService} from "../../service/title.service"; MatCardContent, MatCardHeader, MatExpansionPanel, - MatExpansionPanelDescription, MatExpansionPanelHeader, MatExpansionPanelTitle, NgForOf, NgIf, TeamPipe, - MatListItem, - MatDivider, - MatList, - MatAnchor, MatIcon, - MatTable, - StatusPipe, NgClass, MatMenu, MatMenuItem, @@ -71,9 +59,6 @@ import {TitleService} from "../../service/title.service"; MatTab, MatTabLabel, MatButton, - MatchResultPipe, - MatIconAnchor, - MatMiniFabAnchor, MatIconButton, DecimalPipe, TournamentValidateComponent, @@ -195,8 +180,11 @@ export class TournamentManageComponent implements OnInit { startMatch(match: Match) { const availableCourts = this.getAvailableCourts(); + if (availableCourts.length == 0) { alert('Geen banen beschikbaar!'); + } else if (this.matchContainsPlayersThatArePlaying(match)) { + alert('Deze wedstrijd bevat spelers die al aan het spelen zijn!'); } else { this.courtSelectionDialog.open(CourtSelectionComponent, { data: { @@ -216,6 +204,23 @@ export class TournamentManageComponent implements OnInit { } } + matchContainsPlayersThatArePlaying(match: Match): boolean { + let activePlayers: number[] = []; + for (let activeMatch of this.activeMatches()) { + activePlayers.push(activeMatch.match.team1.player1.id); + if (activeMatch.match.team1.player2) activePlayers.push(activeMatch.match.team1.player2.id); + activePlayers.push(activeMatch.match.team2.player1.id); + if (activeMatch.match.team2.player2) activePlayers.push(activeMatch.match.team2.player2.id); + } + let matchPlayers: number[] = []; + matchPlayers.push(match.team1.player1.id); + if (match.team1.player2) matchPlayers.push(match.team1.player2.id); + matchPlayers.push(match.team2.player1.id); + if (match.team2.player2) matchPlayers.push(match.team2.player2.id); + let playersThatArePlaying = activePlayers.filter(Set.prototype.has, new Set(matchPlayers)); + return playersThatArePlaying.length > 0; + } + getAvailableCourts(): number[] { const maxCourts = this.tournament.courts; const activeCourts = this.activeMatches().map(activeMatch => activeMatch.match.court);