Fix drawn players
This commit is contained in:
@@ -61,15 +61,16 @@ public class TournamentPlayService {
|
||||
round.setStatus(Status.NOT_STARTED);
|
||||
|
||||
if (remainingTeams.size() % 2 == 1) {
|
||||
var random = new Random();
|
||||
var drawnOutPlayers = getDrawnOutPlayers(tournament);
|
||||
var drawnOutPlayers = tournament.getDrawnOutPlayers();
|
||||
var tryPosition = remainingTeams.size() - 1;
|
||||
do {
|
||||
var randomTeam = remainingTeams.get(random.nextInt(remainingTeams.size()));
|
||||
if (!drawnOutPlayers.contains(randomTeam.getPlayer1()) && (randomTeam.getPlayer2() == null || !drawnOutPlayers.contains(randomTeam.getPlayer2()))) {
|
||||
remainingTeams.remove(randomTeam);
|
||||
round.setDrawnOut(randomTeam);
|
||||
var tryDrawOutTeam = remainingTeams.get(tryPosition);
|
||||
if (!drawnOutPlayers.contains(tryDrawOutTeam.getPlayer1()) && (tryDrawOutTeam.getPlayer2() == null || !drawnOutPlayers.contains(tryDrawOutTeam.getPlayer2()))) {
|
||||
remainingTeams.remove(tryDrawOutTeam);
|
||||
round.setDrawnOut(tryDrawOutTeam);
|
||||
break;
|
||||
}
|
||||
tryPosition--;
|
||||
} while(true);
|
||||
}
|
||||
|
||||
@@ -92,47 +93,6 @@ public class TournamentPlayService {
|
||||
return tournament;
|
||||
}
|
||||
|
||||
private List<Player> getDrawnOutPlayers(Tournament tournament) {
|
||||
var players = new ArrayList<Player>();
|
||||
|
||||
for (var event : tournament.getEvents()) {
|
||||
for (var group : event.getGroups()) {
|
||||
var playersInGroup = group.getTeams().stream()
|
||||
.map(this::getPlayersInTeam)
|
||||
.flatMap(List::stream)
|
||||
.toList();
|
||||
|
||||
for (var player : playersInGroup) {
|
||||
for (var round : group.getRounds()) {
|
||||
var foundInRound = false;
|
||||
for (var match : round.getMatches()) {
|
||||
if (playerIsInMatch(match, player)) {
|
||||
foundInRound = true;
|
||||
}
|
||||
}
|
||||
if (!foundInRound) {
|
||||
players.add(player);
|
||||
log.info(player.getFullName() + " is al uitgeloot in het toernooi.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return players;
|
||||
}
|
||||
|
||||
private List<Player> getPlayersInTeam(Team team) {
|
||||
return team.getPlayer2() == null ? List.of(team.getPlayer1()) : List.of(team.getPlayer1(), team.getPlayer2());
|
||||
}
|
||||
|
||||
private boolean playerIsInTeam(Team team, Player player) {
|
||||
return Objects.equals(team.getPlayer1(), player) || Objects.equals(team.getPlayer2(), player);
|
||||
}
|
||||
|
||||
private boolean playerIsInMatch(Match match, Player player) {
|
||||
return playerIsInTeam(match.getTeam1(), player) || playerIsInTeam(match.getTeam2(), player);
|
||||
}
|
||||
|
||||
private void printRound(Round round, List<StandingsEntry> standings) {
|
||||
for (var match: round.getMatches()) {
|
||||
log.info("%s - %s".formatted(
|
||||
|
||||
Reference in New Issue
Block a user