Various improvements
All checks were successful
Gitea/swiss-backend/pipeline/head This commit looks good

This commit is contained in:
2025-08-25 23:37:35 +02:00
parent 83c9b53330
commit e89a7d4bff
15 changed files with 133 additions and 32 deletions

View File

@@ -2,11 +2,12 @@ package nl.connectedit.swiss.service;
import lombok.RequiredArgsConstructor;
import lombok.extern.java.Log;
import nl.connectedit.swiss.domain.EventType;
import nl.connectedit.swiss.domain.StandingsEntry;
import nl.connectedit.swiss.domain.Status;
import nl.connectedit.swiss.domain.TournamentStatus;
import nl.connectedit.swiss.domain.entity.*;
import nl.connectedit.swiss.dto.ResultDto;
import nl.connectedit.swiss.dto.StandingsEntry;
import nl.connectedit.swiss.repository.TournamentRepository;
import org.springframework.stereotype.Service;
@@ -14,7 +15,6 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Random;
import java.util.stream.Collectors;
import static nl.connectedit.swiss.service.ServiceUtil.*;
@@ -42,11 +42,86 @@ public class TournamentPlayService {
}
public Tournament finishGroup(Tournament tournament, Long groupId) {
getGroup(tournament, groupId).setStatus(Status.FINISHED);
var group = getGroup(tournament, groupId);
group.setStatus(Status.FINISHED);
checkForEventCompletion(tournament, group.getType());
tournamentRepository.save(tournament);
return tournament;
}
private void checkForEventCompletion(Tournament tournament, EventType type) {
Group group1 = null;
Group group2 = null;
Event event = null;
for (var e : tournament.getEvents()) {
if (e.getType() == type) {
if (e.getGroups().size() != 2) {
return;
}
group1 = e.getGroups().getFirst();
if (group1.getStatus() != Status.FINISHED) {
return;
}
group2 = e.getGroups().getLast();
if (group2.getStatus() != Status.FINISHED) {
return;
}
event = e;
}
}
var finalsGroup = new Group();
finalsGroup.setName(type.getText());
finalsGroup.setType(type);
finalsGroup.setStatus(Status.IN_PROGRESS);
finalsGroup.setEvent(group1.getEvent());
var standings1 = standingsService.getStandings(group1.getRounds(), group1.getTeams());
var standings2 = standingsService.getStandings(group2.getRounds(), group2.getTeams());
var team1_1 = standings1.get(0).getTeam();
var team1_2 = standings1.get(1).getTeam();
var team2_1 = standings2.get(0).getTeam();
var team2_2 = standings2.get(1).getTeam();
team1_1.getGroups().add(finalsGroup);
team1_2.getGroups().add(finalsGroup);
team2_1.getGroups().add(finalsGroup);
team2_2.getGroups().add(finalsGroup);
finalsGroup.setTeams(List.of(team1_1, team1_2, team2_1, team2_2));
var finalsRound = new Round();
finalsRound.setGroup(finalsGroup);
finalsRound.setStatus(Status.NOT_STARTED);
finalsRound.setName("Finales");
finalsRound.setIsFinalsRound(Boolean.TRUE);
var match1 = new Match();
match1.setRound(finalsRound);
match1.setType(type);
match1.setStatus(Status.NOT_STARTED);
match1.setPlayed(false);
match1.setTeam1(standings1.get(0).getTeam());
match1.setTeam2(standings2.get(0).getTeam());
var match2 = new Match();
match2.setRound(finalsRound);
match2.setType(type);
match2.setStatus(Status.NOT_STARTED);
match2.setPlayed(false);
match2.setTeam1(standings1.get(1).getTeam());
match2.setTeam2(standings2.get(1).getTeam());
finalsRound.setMatches(List.of(match1, match2));
finalsGroup.setRounds(List.of(finalsRound));
event.getGroups().add(finalsGroup);
}
public Tournament reopenGroup(Tournament tournament, Long groupId) {
getGroup(tournament, groupId).setStatus(Status.IN_PROGRESS);
tournamentRepository.save(tournament);
@@ -215,6 +290,7 @@ public class TournamentPlayService {
var countingPlayer = getPlayer(tournament, match.getCounter().getId());
countingPlayer.setCounting(false);
countingPlayer.incrementCounts();
match.setCounter(null);
tournamentRepository.save(tournament);