Moved logic to backend
All checks were successful
Gitea/swiss-backend/pipeline/head This commit looks good
All checks were successful
Gitea/swiss-backend/pipeline/head This commit looks good
This commit is contained in:
@@ -34,4 +34,10 @@ public class TournamentDto extends AbstractDto {
|
|||||||
|
|
||||||
private List<TournamentPlayerSubstitutionDto> substitutions;
|
private List<TournamentPlayerSubstitutionDto> substitutions;
|
||||||
|
|
||||||
|
private List<Long> playersPlaying;
|
||||||
|
|
||||||
|
private List<Long> playersCounting;
|
||||||
|
|
||||||
|
private List<Long> playersAvailable;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,20 @@
|
|||||||
package nl.connectedit.swiss.mapper;
|
package nl.connectedit.swiss.mapper;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import nl.connectedit.swiss.domain.EventType;
|
||||||
|
import nl.connectedit.swiss.domain.Status;
|
||||||
import nl.connectedit.swiss.domain.TournamentStatus;
|
import nl.connectedit.swiss.domain.TournamentStatus;
|
||||||
import nl.connectedit.swiss.domain.entity.Event;
|
import nl.connectedit.swiss.domain.entity.*;
|
||||||
import nl.connectedit.swiss.domain.entity.Tournament;
|
|
||||||
import nl.connectedit.swiss.domain.entity.TournamentPlayer;
|
|
||||||
import nl.connectedit.swiss.dto.TournamentDto;
|
import nl.connectedit.swiss.dto.TournamentDto;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -81,6 +83,92 @@ public class TournamentMapper implements DtoMapper<Tournament, TournamentDto>, E
|
|||||||
|
|
||||||
tournamentDto.setCourts(tournament.getCourts() == null ? 1L : tournament.getCourts());
|
tournamentDto.setCourts(tournament.getCourts() == null ? 1L : tournament.getCourts());
|
||||||
|
|
||||||
|
tournamentDto.setPlayersCounting(getPlayersCounting(tournament));
|
||||||
|
tournamentDto.setPlayersPlaying(getPlayersPlaying(tournament));
|
||||||
|
tournamentDto.setPlayersAvailable(getPlayersAvailable(tournament));
|
||||||
|
|
||||||
return tournamentDto;
|
return tournamentDto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<Long> getPlayersCounting(Tournament tournament) {
|
||||||
|
var playersCounting = new ArrayList<Long>();
|
||||||
|
|
||||||
|
for (var event : tournament.getEvents()) {
|
||||||
|
for (var group : event.getGroups()) {
|
||||||
|
for (var round : group.getRounds()) {
|
||||||
|
for (var match : round.getMatches()) {
|
||||||
|
if (match.getStatus() == Status.IN_PROGRESS) {
|
||||||
|
var counter = getTournamentPlayerFromPlayerId(tournament, match.getCounter().getId());
|
||||||
|
if (counter != null) {
|
||||||
|
playersCounting.add(counter.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return playersCounting;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Long> getPlayersPlaying(Tournament tournament) {
|
||||||
|
var playersPlaying = new ArrayList<Long>();
|
||||||
|
|
||||||
|
for (var event : tournament.getEvents()) {
|
||||||
|
for (var group : event.getGroups()) {
|
||||||
|
for (var round : group.getRounds()) {
|
||||||
|
for (var match : round.getMatches()) {
|
||||||
|
if (match.getStatus() == Status.IN_PROGRESS) {
|
||||||
|
playersPlaying.addAll(getPlayersInMatch(tournament, match));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return playersPlaying;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Long> getPlayersAvailable(Tournament tournament) {
|
||||||
|
var playersAvailable = tournament.getTournamentPlayers()
|
||||||
|
.stream()
|
||||||
|
.map(TournamentPlayer::getId)
|
||||||
|
.collect(Collectors.toCollection(ArrayList::new));
|
||||||
|
|
||||||
|
playersAvailable.removeAll(getPlayersCounting(tournament));
|
||||||
|
playersAvailable.removeAll(getPlayersPlaying(tournament));
|
||||||
|
|
||||||
|
return playersAvailable;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<Long> getPlayersInMatch(Tournament tournament, Match match) {
|
||||||
|
var playersInMatch = new ArrayList<Long>();
|
||||||
|
playersInMatch.add(getPlayerOrSubstitute(tournament, match.getTeam1().getPlayer1(), match.getType()).getId());
|
||||||
|
playersInMatch.add(getPlayerOrSubstitute(tournament, match.getTeam2().getPlayer1(), match.getType()).getId());
|
||||||
|
if (match.getType().isDoublesEvent()) {
|
||||||
|
playersInMatch.add(getPlayerOrSubstitute(tournament, match.getTeam1().getPlayer2(), match.getType()).getId());
|
||||||
|
playersInMatch.add(getPlayerOrSubstitute(tournament, match.getTeam2().getPlayer2(), match.getType()).getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
return playersInMatch;
|
||||||
|
}
|
||||||
|
|
||||||
|
private TournamentPlayer getPlayerOrSubstitute(Tournament tournament, Player player, EventType type) {
|
||||||
|
var tournamentPlayer = getTournamentPlayerFromPlayerId(tournament, player.getId());
|
||||||
|
for (var substitution : tournamentPlayer.getSubstitutions()) {
|
||||||
|
if (substitution.getEvent().getType() == type && substitution.getSubstitute() != null) {
|
||||||
|
return substitution.getSubstitute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tournamentPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
private TournamentPlayer getTournamentPlayerFromPlayerId(Tournament tournament, Long playerId) {
|
||||||
|
for (var tournamentPlayer : tournament.getTournamentPlayers()) {
|
||||||
|
if (tournamentPlayer.getPlayer().getId().equals(playerId)) {
|
||||||
|
return tournamentPlayer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user