Various improvements
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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user