Fix drawn players
This commit is contained in:
@@ -64,8 +64,6 @@ public class TestController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/testdata")
|
@GetMapping("/testdata")
|
||||||
// @PostConstruct
|
|
||||||
// @Transactional
|
|
||||||
public void init(@RequestHeader(name = "Authorization", required = false) String authorizationHeader) {
|
public void init(@RequestHeader(name = "Authorization", required = false) String authorizationHeader) {
|
||||||
this.authorizationHeader = authorizationHeader;
|
this.authorizationHeader = authorizationHeader;
|
||||||
|
|
||||||
@@ -73,8 +71,10 @@ public class TestController {
|
|||||||
|
|
||||||
var tournament = createTournament();
|
var tournament = createTournament();
|
||||||
|
|
||||||
getMales().forEach(player -> savePlayer(player, Sex.M));
|
if (getPlayers().size() < 60) {
|
||||||
getFemales().forEach(player -> savePlayer(player, Sex.V));
|
getMales().forEach(player -> savePlayer(player, Sex.M));
|
||||||
|
getFemales().forEach(player -> savePlayer(player, Sex.V));
|
||||||
|
}
|
||||||
|
|
||||||
registerForSingles(tournament);
|
registerForSingles(tournament);
|
||||||
registerForDoubles(tournament);
|
registerForDoubles(tournament);
|
||||||
@@ -88,7 +88,6 @@ public class TestController {
|
|||||||
headers.add("Authorization", authorizationHeader);
|
headers.add("Authorization", authorizationHeader);
|
||||||
var entity = new HttpEntity<>(headers);
|
var entity = new HttpEntity<>(headers);
|
||||||
|
|
||||||
// return Arrays.asList(restTemplate.getForEntity("http://localhost:8080/players", PlayerDto[].class).getBody());
|
|
||||||
return Arrays.asList(restTemplate.exchange("http://localhost:8080/players", HttpMethod.GET, entity, PlayerDto[].class).getBody());
|
return Arrays.asList(restTemplate.exchange("http://localhost:8080/players", HttpMethod.GET, entity, PlayerDto[].class).getBody());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +136,6 @@ public class TestController {
|
|||||||
|
|
||||||
var eventId = tournament.getEvents().stream().filter(event -> event.getType().equals(eventType)).findFirst().get().getId();
|
var eventId = tournament.getEvents().stream().filter(event -> event.getType().equals(eventType)).findFirst().get().getId();
|
||||||
|
|
||||||
// for (var player : getPlayers()) {
|
|
||||||
var tournamentRegistrationDto = new TournamentRegistrationDto();
|
var tournamentRegistrationDto = new TournamentRegistrationDto();
|
||||||
tournamentRegistrationDto.setId(tournament.getId());
|
tournamentRegistrationDto.setId(tournament.getId());
|
||||||
var eventRegistrationDto = new EventRegistrationDto();
|
var eventRegistrationDto = new EventRegistrationDto();
|
||||||
@@ -152,7 +150,6 @@ public class TestController {
|
|||||||
headers.add("Authorization", authorizationHeader);
|
headers.add("Authorization", authorizationHeader);
|
||||||
var entity = new HttpEntity<>(tournamentRegistrationDto, headers);
|
var entity = new HttpEntity<>(tournamentRegistrationDto, headers);
|
||||||
restTemplate.postForObject("http://localhost:8080/players/%d/registrations/%d".formatted(player.getId(), tournament.getId()), entity, TournamentRegistrationDto.class);
|
restTemplate.postForObject("http://localhost:8080/players/%d/registrations/%d".formatted(player.getId(), tournament.getId()), entity, TournamentRegistrationDto.class);
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,268 +237,4 @@ public class TestController {
|
|||||||
return LocalDate.ofEpochDay(randomDay);
|
return LocalDate.ofEpochDay(randomDay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
private void deRest() {
|
|
||||||
|
|
||||||
var malePlayers = List.of(
|
|
||||||
savePlayer("Michel", Sex.M),
|
|
||||||
savePlayer("Eric", Sex.M),
|
|
||||||
savePlayer("Leon", Sex.M),
|
|
||||||
savePlayer("Luuk", Sex.M),
|
|
||||||
savePlayer("Jeffrey", Sex.M),
|
|
||||||
savePlayer("Jason", Sex.M),
|
|
||||||
savePlayer("Oleg", Sex.M),
|
|
||||||
savePlayer("Gerjan", Sex.M),
|
|
||||||
savePlayer("Gerard", Sex.M),
|
|
||||||
savePlayer("Henk", Sex.M),
|
|
||||||
savePlayer("Peter", Sex.M),
|
|
||||||
savePlayer("Gerrit", Sex.M),
|
|
||||||
savePlayer("Wilco", Sex.M),
|
|
||||||
savePlayer("Guido", Sex.M),
|
|
||||||
savePlayer("Sander", Sex.M),
|
|
||||||
savePlayer("Roy", Sex.M),
|
|
||||||
|
|
||||||
savePlayer("Yafiq", Sex.M),
|
|
||||||
savePlayer("Martijn", Sex.M),
|
|
||||||
savePlayer("Dick", Sex.M),
|
|
||||||
savePlayer("Willem", Sex.M),
|
|
||||||
savePlayer("Layo", Sex.M),
|
|
||||||
savePlayer("Thomas", Sex.M),
|
|
||||||
savePlayer("Gerben", Sex.M),
|
|
||||||
savePlayer("Bert", Sex.M),
|
|
||||||
savePlayer("Bart", Sex.M),
|
|
||||||
savePlayer("Nico", Sex.M),
|
|
||||||
savePlayer("Jan", Sex.M),
|
|
||||||
savePlayer("Diederik", Sex.M),
|
|
||||||
savePlayer("Gert", Sex.M),
|
|
||||||
savePlayer("Dennis", Sex.M),
|
|
||||||
savePlayer("Pieter", Sex.M)
|
|
||||||
);
|
|
||||||
|
|
||||||
var femalePlayers = List.of(
|
|
||||||
savePlayer("Amber", Sex.V),
|
|
||||||
savePlayer("Lisa", Sex.V),
|
|
||||||
savePlayer("Vanja", Sex.V),
|
|
||||||
savePlayer("Evelien", Sex.V),
|
|
||||||
savePlayer("Daphne", Sex.V),
|
|
||||||
savePlayer("Willemijn", Sex.V),
|
|
||||||
savePlayer("Miranda", Sex.V),
|
|
||||||
savePlayer("Inge", Sex.V),
|
|
||||||
savePlayer("Esmee", Sex.V),
|
|
||||||
savePlayer("Joanne", Sex.V),
|
|
||||||
savePlayer("Laura", Sex.V),
|
|
||||||
savePlayer("Nienke", Sex.V),
|
|
||||||
savePlayer("Patty", Sex.V),
|
|
||||||
savePlayer("Rosan", Sex.V),
|
|
||||||
savePlayer("Vera", Sex.V),
|
|
||||||
savePlayer("Hedwig", Sex.V),
|
|
||||||
|
|
||||||
savePlayer("Lois", Sex.V),
|
|
||||||
savePlayer("Liedewij", Sex.V),
|
|
||||||
savePlayer("Gera", Sex.V),
|
|
||||||
savePlayer("Carolien", Sex.V),
|
|
||||||
savePlayer("Anne", Sex.V),
|
|
||||||
savePlayer("Dominique", Sex.V),
|
|
||||||
savePlayer("Linda", Sex.V),
|
|
||||||
savePlayer("Esther", Sex.V),
|
|
||||||
savePlayer("Marilyn", Sex.V),
|
|
||||||
savePlayer("Ilse", Sex.V),
|
|
||||||
savePlayer("Emily", Sex.V),
|
|
||||||
savePlayer("Eva", Sex.V),
|
|
||||||
savePlayer("Kitty", Sex.V),
|
|
||||||
savePlayer("Floor", Sex.V),
|
|
||||||
savePlayer("Tess", Sex.V),
|
|
||||||
savePlayer("Fenna", Sex.V)
|
|
||||||
);
|
|
||||||
|
|
||||||
malePlayers.forEach(player -> registerForSingles(tournamentId, player));
|
|
||||||
femalePlayers.forEach(player -> registerForSingles(tournamentId, player));
|
|
||||||
|
|
||||||
malePlayers = new ArrayList<>(malePlayers);
|
|
||||||
malePlayers.add(savePlayer("Rolf", Sex.M));
|
|
||||||
|
|
||||||
for (var i = 0; i < 14; i += 2) {
|
|
||||||
registerForDoubles(tournamentId, malePlayers.get(i), malePlayers.get(i + 1));
|
|
||||||
registerForDoubles(tournamentId, malePlayers.get(i + 1), malePlayers.get(i));
|
|
||||||
}
|
|
||||||
for (var i = 0; i < 16; i += 2) {
|
|
||||||
registerForDoubles(tournamentId, femalePlayers.get(i), femalePlayers.get(i + 1));
|
|
||||||
registerForDoubles(tournamentId, femalePlayers.get(i + 1), femalePlayers.get(i));
|
|
||||||
}
|
|
||||||
for (var i = 16; i < malePlayers.size(); i++) {
|
|
||||||
registerForDoubles(tournamentId, malePlayers.get(i), femalePlayers.get(i));
|
|
||||||
registerForDoubles(tournamentId, femalePlayers.get(i), malePlayers.get(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
divideTournament(tournamentId);
|
|
||||||
drawTournament(tournamentId);
|
|
||||||
// startRound(2L, 1L);
|
|
||||||
// playRound(2L, 0, 0);
|
|
||||||
|
|
||||||
startRound(tournamentId, 2L);
|
|
||||||
playRound(tournamentId, 1, 0);
|
|
||||||
|
|
||||||
|
|
||||||
finishRound(tournamentId, 2L);
|
|
||||||
newRound(tournamentId, 2L);
|
|
||||||
|
|
||||||
startRound(tournamentId, 8L);
|
|
||||||
playRound(tournamentId, 1, 1);
|
|
||||||
|
|
||||||
if (1==1) return;
|
|
||||||
|
|
||||||
finishRound(tournamentId, 8L);
|
|
||||||
newRound(tournamentId, 2L);
|
|
||||||
|
|
||||||
startRound(tournamentId, 9L);
|
|
||||||
playRound(tournamentId, 1, 2);
|
|
||||||
finishRound(tournamentId, 9L);
|
|
||||||
newRound(tournamentId, 2L);
|
|
||||||
|
|
||||||
startRound(tournamentId, 10L);
|
|
||||||
playRound(tournamentId, 1, 3);
|
|
||||||
// finishRound(2L, 10L);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addToTournament(Long tournamentId, Player player) {
|
|
||||||
var tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
TournamentPlayer tournamentPlayer = new TournamentPlayer();
|
|
||||||
tournamentPlayer.setTournament(tournament);
|
|
||||||
tournamentPlayer.setPlayer(player);
|
|
||||||
tournament.getTournamentPlayers().add(tournamentPlayer);
|
|
||||||
tournamentService.saveTournament(tournament);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void divideTournament(Long tournamentId) {
|
|
||||||
var tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
tournamentDivideService.divide(tournament);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void drawTournament(Long tournamentId) {
|
|
||||||
var tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
tournamentDrawService.draw(tournament);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void playRound(long tournamentId, int group, int round) {
|
|
||||||
var tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
for (var match : tournament.getEvents().get(0).getGroups().get(group).getRounds().get(round).getMatches()) {
|
|
||||||
tournamentPlayService.startMatch(tournament, match.getId(), 1L);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var match : tournament.getEvents().get(0).getGroups().get(group).getRounds().get(round).getMatches()) {
|
|
||||||
tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
var resultDto = new ResultDto();
|
|
||||||
resultDto.getGames().add(getRandomGame());
|
|
||||||
resultDto.getGames().add(getRandomGame());
|
|
||||||
resultDto.setMatchId(match.getId());
|
|
||||||
tournamentPlayService.saveResult(tournament, match.getId(), resultDto);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private GameDto getRandomGame() {
|
|
||||||
Random random = new Random();
|
|
||||||
|
|
||||||
var gameDto = new GameDto();
|
|
||||||
gameDto.setScore1(21L);
|
|
||||||
gameDto.setScore2(random.nextLong(19));
|
|
||||||
|
|
||||||
return gameDto;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void finishRound(long tournamentId, long roundId) {
|
|
||||||
var tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
tournamentPlayService.finishRound(tournament, roundId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void newRound(long tournamentId, long groupId) {
|
|
||||||
var tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
tournamentPlayService.newRound(tournament, groupId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startRound(long tournamentId, long roundId) {
|
|
||||||
var tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
tournamentPlayService.startRound(tournament, roundId);
|
|
||||||
}
|
|
||||||
|
|
||||||
// private void saveTournament1() {
|
|
||||||
// var tournament = new Tournament();
|
|
||||||
// tournament.setName("Zwitsers Laddersysteem BC Holten 2023");
|
|
||||||
// tournament.setDate(LocalDate.of(2023, Month.DECEMBER, 12));
|
|
||||||
// tournament.setStatus(TournamentStatus.CLOSED);
|
|
||||||
// tournamentService.saveTournament(tournament);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
private Long saveTournament() {
|
|
||||||
var tournament = new Tournament();
|
|
||||||
tournament.setName("Testtoernooi");
|
|
||||||
tournament.setDate(LocalDate.of(2024, Month.DECEMBER, 14));
|
|
||||||
tournament.setStatus(TournamentStatus.UPCOMING);
|
|
||||||
tournament.setMaxEvents(2L);
|
|
||||||
tournament.setCourts(9L);
|
|
||||||
tournament.setCostsPerEvent(List.of(6f, 10f));
|
|
||||||
tournamentService.saveTournament(tournament);
|
|
||||||
return tournament.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void registerForSingles(Long tournamentId, Player player) {
|
|
||||||
var tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
var registration = new Registration();
|
|
||||||
registration.setPlayer(player);
|
|
||||||
var event = tournament.getEventByType(player.getSex() == Sex.M ? EventType.HE : EventType.DE);
|
|
||||||
registration.setPartner(null);
|
|
||||||
registration.setTournament(tournament);
|
|
||||||
registration.setEvent(event);
|
|
||||||
if (event.getRegistrations() == null) event.setRegistrations(new ArrayList<>());
|
|
||||||
event.getRegistrations().add(registration);
|
|
||||||
// player.getRegistrations().add(registration);
|
|
||||||
tournamentService.saveTournament(tournament);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void registerForDoubles(Long tournamentId, Player player, Player partner) {
|
|
||||||
var tournament = tournamentService.findTournamentById(tournamentId);
|
|
||||||
var registration = new Registration();
|
|
||||||
registration.setPlayer(player);
|
|
||||||
registration.setPartner(partner);
|
|
||||||
var event = tournament.getEventByType(
|
|
||||||
player.getSex() == partner.getSex() ?
|
|
||||||
(player.getSex() == Sex.M ? EventType.HD : EventType.DD) : EventType.GD);
|
|
||||||
registration.setTournament(tournament);
|
|
||||||
registration.setEvent(event);
|
|
||||||
event.getRegistrations().add(registration);
|
|
||||||
// player.getRegistrations().add(registration);
|
|
||||||
tournamentService.saveTournament(tournament);
|
|
||||||
}
|
|
||||||
|
|
||||||
// private Player savePlayer(String firstName, Sex sex) {
|
|
||||||
// Random random = new Random();
|
|
||||||
//
|
|
||||||
// String[] lastNames = {
|
|
||||||
// "Meedendorp", "Holstege", "Goedhart", "Zijlma", "Duursma", "Keizer", "Verschoor",
|
|
||||||
// "Mulder", "Koers", "Duindam", "Castelein", "Coemans", "Huijbers", "Kelder",
|
|
||||||
// "Stein", "Rakhorst", "Brugman", "Seinen", "Mayer", "Gijsman", "Kingma",
|
|
||||||
// "Jansen", "Westerik", "Brehler", "Ebbers", "Lensink", "Lups", "Verboom"
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// String[] clubs = {
|
|
||||||
// "BC Holten", "BC Reflex", "ZBC", "WSV Apeldoorn", "BC IJsselstad", "Flits", "ELO United", "BC Kwiek"
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// var player = new Player();
|
|
||||||
// player.setFirstName(firstName);
|
|
||||||
// player.setLastName(lastNames[random.nextInt(lastNames.length)]);
|
|
||||||
// player.setClub(clubs[random.nextInt(clubs.length)]);
|
|
||||||
// player.setSex(sex);
|
|
||||||
// player.setBirthday(randomDate(LocalDate.of(1950, 1, 1), LocalDate.of(2010, 1, 1)));
|
|
||||||
// player.setPhoneNumber("0612345678");
|
|
||||||
// player.setEmail("aaaa@bbb.cc");
|
|
||||||
// player.setStrength(getRandomStrength());
|
|
||||||
//
|
|
||||||
// playerService.savePlayer(player);
|
|
||||||
// return player;
|
|
||||||
// }
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,7 +65,12 @@ public class TournamentController {
|
|||||||
|
|
||||||
@PostMapping("/tournaments")
|
@PostMapping("/tournaments")
|
||||||
public ResponseEntity<TournamentDto> createTournament(@RequestBody TournamentDto tournamentDto) {
|
public ResponseEntity<TournamentDto> createTournament(@RequestBody TournamentDto tournamentDto) {
|
||||||
var tournament = tournamentMapper.toEntity(tournamentDto);
|
Tournament tournament;
|
||||||
|
try {
|
||||||
|
tournament = tournamentMapper.toEntity(tournamentDto);
|
||||||
|
} catch (NullPointerException e) {
|
||||||
|
return ResponseEntity.badRequest().build();
|
||||||
|
}
|
||||||
return ResponseEntity.ok(tournamentMapper.toDto(tournamentService.saveTournament(tournament)));
|
return ResponseEntity.ok(tournamentMapper.toDto(tournamentService.saveTournament(tournament)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package nl.connectedit.swiss.domain.entity;
|
package nl.connectedit.swiss.domain.entity;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
|
import java.util.HashSet;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import nl.connectedit.swiss.domain.EventType;
|
import nl.connectedit.swiss.domain.EventType;
|
||||||
@@ -68,4 +69,23 @@ public class Tournament extends AbstractEntity {
|
|||||||
.collect(Collectors.toCollection(ArrayList::new));
|
.collect(Collectors.toCollection(ArrayList::new));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean hasPlayersDrawnOutMaxOnce() {
|
||||||
|
var drawnOutPlayers = new HashSet<Player>();
|
||||||
|
for (var event : events) {
|
||||||
|
for (var group : event.getGroups()) {
|
||||||
|
for (var round : group.getRounds()) {
|
||||||
|
var drawnOut = round.getDrawnOut();
|
||||||
|
if (drawnOut != null) {
|
||||||
|
if (!drawnOutPlayers.add(drawnOut.getPlayer1())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (drawnOut.getPlayer2() != null && !drawnOutPlayers.add(drawnOut.getPlayer2())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,11 +21,13 @@ public class TournamentDrawService {
|
|||||||
for (var event : tournament.getEvents()) {
|
for (var event : tournament.getEvents()) {
|
||||||
for (var group : event.getGroups()) {
|
for (var group : event.getGroups()) {
|
||||||
var round = new Round();
|
var round = new Round();
|
||||||
|
group.getRounds().add(round);
|
||||||
round.setName("Ronde 1");
|
round.setName("Ronde 1");
|
||||||
round.setGroup(group);
|
round.setGroup(group);
|
||||||
round.setMatches(createMatchList(group, round));
|
do {
|
||||||
|
round.setMatches(createMatchList(group, round));
|
||||||
|
} while (!tournament.hasPlayersDrawnOutMaxOnce());
|
||||||
round.setStatus(Status.NOT_STARTED);
|
round.setStatus(Status.NOT_STARTED);
|
||||||
group.getRounds().add(round);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user