Prevent players playing one 1 event from getting drawn out

This commit is contained in:
Michel ten Voorde
2024-11-06 18:06:47 +01:00
parent e75a5e1b66
commit 17c9f4e685
3 changed files with 29 additions and 6 deletions

View File

@@ -1,7 +1,9 @@
package nl.connectedit.swiss.domain.entity;
import jakarta.persistence.*;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
import nl.connectedit.swiss.domain.EventType;
@@ -91,4 +93,18 @@ public class Tournament extends AbstractEntity {
var drawnOutPlayers = this.getDrawnOutPlayers();
return drawnOutPlayers.size() == new HashSet<>(drawnOutPlayers).size();
}
public List<Player> getPlayersPlayingOnlyOneEvent() {
var playerEvents = new HashMap<Player, List<EventType>>();
for (var registration : getRegistrations()) {
if (!playerEvents.containsKey(registration.getPlayer())) {
playerEvents.put(registration.getPlayer(), new ArrayList<>());
}
playerEvents.get(registration.getPlayer()).add(registration.getEvent().getType());
}
return playerEvents.entrySet().stream()
.filter(entry -> entry.getValue().size() == 1)
.map(Map.Entry::getKey)
.toList();
}
}