package hdm.mi.sthbackend.controller; 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.Player; import hdm.mi.sthbackend.model.Team; import hdm.mi.sthbackend.model.Tournament; import hdm.mi.sthbackend.service.TournamentService; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.UUID; @RestController @RequestMapping("/api/v1/tournaments") @AllArgsConstructor public class TournamentController { private final TournamentService service; /** * Player Endpoints **/ @PatchMapping("/{tournamentId}/teams/{teamId}/players/{playerId}") public UUID updatePlayerName(@PathVariable UUID tournamentId, @PathVariable UUID teamId, @PathVariable UUID playerId, @RequestBody String newPlayerName) throws Exception { return service.updatePlayerName(tournamentId, teamId, playerId, newPlayerName); } /** * Team Endpoints **/ @PostMapping("/{tournamentId}/teams") public Team createTeam(@PathVariable UUID tournamentId, @RequestBody String teamName) throws TournamentIdNotFoundException { return service.createTeamFromTournament(tournamentId, teamName); } @DeleteMapping("/{tournamentId}/teams/{teamId}") public UUID removeTeamFromTournament(@PathVariable UUID tournamentId, @PathVariable UUID teamId) throws TournamentIdNotFoundException, TeamIdNotFoundException{ return service.removeTeamFromTournament(tournamentId, teamId); } @PostMapping("/{tournamentId}/teams/{teamId}/addPlayer") public Player addPlayerToTeam(@PathVariable UUID tournamentId, @PathVariable UUID teamId, @RequestBody String playerName) throws Exception { return service.addPlayerToTeam(tournamentId, teamId, playerName); } @DeleteMapping("/{tournamentId}/teams/{teamId}/players/{playerId}") public Player removePlayerFromTeam(@PathVariable UUID tournamentId, @PathVariable UUID teamId, @PathVariable UUID playerId) throws PlayerIdNotFoundException, TournamentIdNotFoundException { // muss hier die PlayerIdNotFoundException eingefügt werden, return service.removePlayerFromTeam(tournamentId, teamId, playerId); // wenn die nicht im TournamentService drin ist? } @PatchMapping public UUID determineWinner(@PathVariable UUID tournamentId, @PathVariable UUID matchId) throws TournamentIdNotFoundException, MatchIdNotFoundException { return service.determineWinner(tournamentId, matchId); } /** * Tournament Endpoints */ @PostMapping public Tournament createTournament(@RequestBody String tournamentName) { return service.createTournament(tournamentName); } }