From 2cc188540b072fabbf81a6fcc30b6f11029f4054 Mon Sep 17 00:00:00 2001 From: Michel ten Voorde Date: Mon, 1 Sep 2025 23:00:10 +0200 Subject: [PATCH] Registreer TournamentPlayer gelijk bij inschrijven --- TODO | 7 +++ .../swiss/controller/TestController.java | 4 +- .../swiss/domain/entity/TournamentPlayer.java | 2 +- .../swiss/service/RegistrationService.java | 43 ++++++++++++++++--- .../swiss/service/TournamentDrawService.java | 4 +- 5 files changed, 48 insertions(+), 12 deletions(-) diff --git a/TODO b/TODO index 5046de6..84f6b2a 100644 --- a/TODO +++ b/TODO @@ -5,3 +5,10 @@ https://bootify.io/spring-security/rest-api-spring-security-with-jwt.html https://access.crunchydata.com/documentation/postgres-operator/latest/tutorials/cluster-management/update-cluster Token refresh + + +db update: + +round.is_finals_round +koppeltabel eventgroup_teams +tournament.active \ No newline at end of file diff --git a/src/main/java/nl/connectedit/swiss/controller/TestController.java b/src/main/java/nl/connectedit/swiss/controller/TestController.java index b25f4f4..b253528 100644 --- a/src/main/java/nl/connectedit/swiss/controller/TestController.java +++ b/src/main/java/nl/connectedit/swiss/controller/TestController.java @@ -95,7 +95,7 @@ public class TestController { var eventIdHE = tournament.getEvents().stream().filter(event -> event.getType().equals("HE")).findFirst().get().getId(); var eventIdDE = tournament.getEvents().stream().filter(event -> event.getType().equals("DE")).findFirst().get().getId(); - for (var player : getPlayers()) { + for (var player : getPlayers().subList(0, 31)) { var tournamentRegistrationDto = new TournamentRegistrationDto(); tournamentRegistrationDto.setId(tournament.getId()); var eventRegistrationDto = new EventRegistrationDto(); @@ -162,7 +162,7 @@ public class TestController { private TournamentDto getTournament() { var tournamentDto = new TournamentDto(); - tournamentDto.setName("Testtoernooi"); + tournamentDto.setName("Testtoernooi aangemaakt op " + LocalDate.now().format(DateTimeFormatter.ofPattern("dd-MM-yyyy"))); tournamentDto.setDate("14-12-2024"); tournamentDto.setStatus("UPCOMING"); tournamentDto.setMaxEvents(2L); diff --git a/src/main/java/nl/connectedit/swiss/domain/entity/TournamentPlayer.java b/src/main/java/nl/connectedit/swiss/domain/entity/TournamentPlayer.java index c49b9be..7d43cb9 100644 --- a/src/main/java/nl/connectedit/swiss/domain/entity/TournamentPlayer.java +++ b/src/main/java/nl/connectedit/swiss/domain/entity/TournamentPlayer.java @@ -31,7 +31,7 @@ public class TournamentPlayer extends AbstractEntity { private boolean counting; - private Long counts; + private Long counts = 0L; public void incrementCounts() { this.counts++; diff --git a/src/main/java/nl/connectedit/swiss/service/RegistrationService.java b/src/main/java/nl/connectedit/swiss/service/RegistrationService.java index 9041113..f3e306a 100644 --- a/src/main/java/nl/connectedit/swiss/service/RegistrationService.java +++ b/src/main/java/nl/connectedit/swiss/service/RegistrationService.java @@ -1,14 +1,11 @@ package nl.connectedit.swiss.service; import lombok.RequiredArgsConstructor; -import nl.connectedit.swiss.domain.entity.Player; -import nl.connectedit.swiss.domain.entity.Registration; -import nl.connectedit.swiss.domain.entity.Tournament; +import nl.connectedit.swiss.domain.entity.*; import nl.connectedit.swiss.dto.EventRegistrationDto; -import nl.connectedit.swiss.repository.RegistrationRepository; import org.springframework.stereotype.Service; -import java.util.List; +import java.util.ArrayList; @Service @RequiredArgsConstructor @@ -23,6 +20,7 @@ public class RegistrationService { if (!eventRegistration.isRegistered()) { // remove any existing registration event.getRegistrations().removeIf(registration -> registration.getPlayer().equals(player)); + removeEventFromTournamentPlayer(tournament, player, event); } else { var optionalExistingPlayerRegistration = event.getRegistrations().stream() .filter(registration -> registration.getPlayer().equals(player)) @@ -32,14 +30,15 @@ public class RegistrationService { newRegistration.setTournament(tournament); newRegistration.setEvent(event); newRegistration.setPlayer(player); - if (eventRegistration.getPartner() != null){ + if (eventRegistration.getPartner() != null) { var partner = playerService.findPlayerById(eventRegistration.getPartner()); newRegistration.setPartner(partner); } event.addRegistration(newRegistration); + addEventToTournamentPlayer(tournament, player, event); } else { // change existing registration var existingPlayerRegistration = optionalExistingPlayerRegistration.get(); - if (eventRegistration.getPartner() != null){ + if (eventRegistration.getPartner() != null) { var partner = playerService.findPlayerById(eventRegistration.getPartner()); existingPlayerRegistration.setPartner(partner); } else { @@ -50,4 +49,34 @@ public class RegistrationService { tournamentService.saveTournament(tournament); } + + private void removeEventFromTournamentPlayer(Tournament tournament, Player player, Event event) { + var tournamentPlayer = findOrAddTournamentPlayer(tournament, player); + tournamentPlayer.getEvents().removeIf(eventType -> eventType.equals(event.getType().name())); + } + + private void addEventToTournamentPlayer(Tournament tournament, Player player, Event event) { + var tournamentPlayer = findOrAddTournamentPlayer(tournament, player); + tournamentPlayer.getEvents().add(event.getType().name()); + } + + private TournamentPlayer findOrAddTournamentPlayer(Tournament tournament, Player player) { + for (var tournamentPlayer : tournament.getTournamentPlayers()) { + if (tournamentPlayer.getPlayer().getId().equals(player.getId())) { + return tournamentPlayer; + } + } + + return registerTournamentPlayer(tournament, player); + } + + private TournamentPlayer registerTournamentPlayer(Tournament tournament, Player player) { + var tournamentPlayer = new TournamentPlayer(); + tournamentPlayer.setTournament(tournament); + tournamentPlayer.setPlayer(player); + tournamentPlayer.setEvents(new ArrayList<>()); + tournament.getTournamentPlayers().add(tournamentPlayer); + + return tournamentPlayer; + } } diff --git a/src/main/java/nl/connectedit/swiss/service/TournamentDrawService.java b/src/main/java/nl/connectedit/swiss/service/TournamentDrawService.java index 1586bc0..e6487b9 100644 --- a/src/main/java/nl/connectedit/swiss/service/TournamentDrawService.java +++ b/src/main/java/nl/connectedit/swiss/service/TournamentDrawService.java @@ -31,7 +31,7 @@ public class TournamentDrawService { } } - registerTournamentPlayers(tournament); +// registerTournamentPlayers(tournament); tournament.setStatus(TournamentStatus.DRAWN); @@ -78,7 +78,7 @@ public class TournamentDrawService { } } - tournament.getTournamentPlayers().clear(); +// tournament.getTournamentPlayers().clear(); tournament.setStatus(TournamentStatus.DIVIDED);