diff --git a/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java b/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java index 04821898bd841a428341381dc37ea22e12873fc8..de742139ff2544fdeb99d5ffcf2cd8cb04ea36e9 100644 --- a/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java +++ b/sth-backend/src/main/java/hdm/mi/sthbackend/service/TournamentService.java @@ -1,9 +1,11 @@ package hdm.mi.sthbackend.service; import com.mongodb.client.MongoClient; +import hdm.mi.sthbackend.exeptions.MatchIdNotFoundException; import hdm.mi.sthbackend.exeptions.PlayerIdNotFoundException; import hdm.mi.sthbackend.exeptions.TeamIdNotFoundException; import hdm.mi.sthbackend.exeptions.TournamentIdNotFoundException; +import hdm.mi.sthbackend.model.Match; import hdm.mi.sthbackend.model.Player; import hdm.mi.sthbackend.model.Team; import hdm.mi.sthbackend.model.Tournament; @@ -12,12 +14,11 @@ import hdm.mi.sthbackend.repository.MongoManager; import lombok.AllArgsConstructor; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.springframework.data.mongodb.core.aggregation.VariableOperators; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Optional; -import java.util.UUID; +import javax.swing.text.html.parser.Entity; +import java.util.*; @Service @AllArgsConstructor @@ -134,6 +135,26 @@ public class TournamentService { return tournament; } + public UUID determineWinner (UUID tournamentId, UUID matchId) throws TournamentIdNotFoundException, MatchIdNotFoundException{ + + Tournament tournament = tournamentRepository.findById(tournamentId) + .orElseThrow(() -> new TournamentIdNotFoundException(tournamentId)); + + Match match = tournament.getMatches().stream() + .filter(m -> m.getMatchId().equals(matchId)) + .findFirst() + .orElseThrow(() -> new MatchIdNotFoundException(matchId)); + + UUID winnerTeamId = match.getTeamScores().entrySet().stream() + .max(Comparator.<Map.Entry<UUID, Number>, Double>comparing(entry -> entry.getValue().doubleValue())) + .map(Map.Entry::getKey) + .orElse(null); + + match.setWinnerTeamId(winnerTeamId); + tournamentRepository.save(tournament); + log.debug("The Winner " + winnerTeamId + " is determined for Match " + matchId + " in Tournament " + tournamentId); + return winnerTeamId; + } /* Weitere Methoden: