This commit is contained in:
Amaël Kesteman
2026-01-11 21:45:11 +01:00
parent 903da8e11a
commit 70d6f9b01b

View File

@@ -4,7 +4,6 @@ import java.time.LocalDate;
import java.time.chrono.ChronoLocalDateTime; import java.time.chrono.ChronoLocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@@ -53,7 +52,11 @@ public class AthleteResource {
public ResponseEntity<AthleteDTO> create(@RequestBody AthleteDTO dto) { public ResponseEntity<AthleteDTO> create(@RequestBody AthleteDTO dto) {
Athlete athlete = mapToEntity(dto); Athlete athlete = mapToEntity(dto);
if(athleteDAO.existsByKeycloakId(athlete.getKeycloakId())) { if(athleteDAO.existsByKeycloakId(athlete.getKeycloakId())) {
return ResponseEntity.status(200).body(mapToDTO(athleteDAO.findByKeycloakId(athlete.getKeycloakId()).get())); Athlete existing = athleteDAO.findByKeycloakId(athlete.getKeycloakId()).orElse(null);
if (existing != null) {
return ResponseEntity.status(200).body(mapToDTO(existing));
}
return ResponseEntity.status(200).build();
} }
athleteDAO.save(athlete); athleteDAO.save(athlete);
return ResponseEntity.status(201).body(mapToDTO(athlete)); return ResponseEntity.status(201).body(mapToDTO(athlete));
@@ -81,14 +84,16 @@ public class AthleteResource {
@GetMapping("/{id}") @GetMapping("/{id}")
@PreAuthorize("hasRole('admin') or hasRole('coach') or hasRole('athlete')") @PreAuthorize("hasRole('admin') or hasRole('coach') or hasRole('athlete')")
public ResponseEntity<AthleteDTO> getById(@PathVariable String id) { public ResponseEntity<AthleteDTO> getById(@PathVariable String id) {
Athlete athlete = athleteDAO.findByKeycloakId(id).get(); Athlete athlete = athleteDAO.findByKeycloakId(id).orElse(null);
if (athlete == null) return ResponseEntity.notFound().build();
return ResponseEntity.ok(mapToDTO(athlete)); return ResponseEntity.ok(mapToDTO(athlete));
} }
@GetMapping("/keycloak/{keycloak_id}") @GetMapping("/keycloak/{keycloak_id}")
@PreAuthorize("hasRole('admin') or hasRole('coach') or hasRole('athlete')") @PreAuthorize("hasRole('admin') or hasRole('coach') or hasRole('athlete')")
public ResponseEntity<AthleteDTO> getByKeycloakId(@PathVariable String keycloak_id) { public ResponseEntity<AthleteDTO> getByKeycloakId(@PathVariable String keycloak_id) {
Athlete athlete = athleteDAO.findByKeycloakId(keycloak_id).get(); Athlete athlete = athleteDAO.findByKeycloakId(keycloak_id).orElse(null);
if (athlete == null) return ResponseEntity.notFound().build();
return ResponseEntity.ok(mapToDTO(athlete)); return ResponseEntity.ok(mapToDTO(athlete));
} }
@@ -100,7 +105,8 @@ public class AthleteResource {
@PreAuthorize("hasRole('admin') or #id == principal.id") @PreAuthorize("hasRole('admin') or #id == principal.id")
public ResponseEntity<AthleteDTO> update(@PathVariable Integer id, @RequestBody AthleteDTO dto) { public ResponseEntity<AthleteDTO> update(@PathVariable Integer id, @RequestBody AthleteDTO dto) {
try { try {
Athlete athlete = athleteDAO.findById(id).get(); Athlete athlete = athleteDAO.findById(id).orElse(null);
if (athlete == null) return ResponseEntity.notFound().build();
athlete.setName(dto.getName()); athlete.setName(dto.getName());
athlete.setCategorie(dto.getCategorie()); athlete.setCategorie(dto.getCategorie());
athlete.setNiveau(dto.getNiveau()); athlete.setNiveau(dto.getNiveau());
@@ -165,16 +171,15 @@ public class AthleteResource {
}) })
@GetMapping("/{athleteId}/session") @GetMapping("/{athleteId}/session")
public List<SessionDTO> getSessionsAthlete(@PathVariable Integer athleteId) { public List<SessionDTO> getSessionsAthlete(@PathVariable Integer athleteId) {
Optional<Athlete> athleteOpt = athleteDAO.findById(athleteId); Athlete athlete = athleteDAO.findById(athleteId).orElse(null);
if (athleteOpt.isEmpty()) { if (athlete == null) {
return new ArrayList<>(); return new ArrayList<>();
} }
List<Session> sessions = sessionDAO.findByAthletes_Id(athleteId); List<Session> sessions = sessionDAO.findByAthletes_Id(athleteId);
List<SessionDTO> athleteSessions = new ArrayList<>(); List<SessionDTO> athleteSessions = new ArrayList<>();
for (Session s : sessions) { for (Session s : sessions) {
if (s.getAthletes().contains(athlete.get())) { if (s.getAthletes().contains(athlete)) {
SessionDTO dto = new SessionDTO(); SessionDTO dto = new SessionDTO();
dto.setId(s.getId()); dto.setId(s.getId());
@@ -185,7 +190,7 @@ public class AthleteResource {
activiteIDs.add(activite.getId()); activiteIDs.add(activite.getId());
} }
dto.setActiviteIds(activiteIDs); dto.setActiviteIds(activiteIDs);
dto.setCoachId(s.getCoach().getId()); dto.setCoachId(s.getCoach() != null ? s.getCoach().getId() : null);
dto.setDuree(s.getDuree()); dto.setDuree(s.getDuree());
dto.setGroupe(s.getGroupe()); dto.setGroupe(s.getGroupe());
dto.setIsRecurrent(s.getIsRecurrent()); dto.setIsRecurrent(s.getIsRecurrent());
@@ -229,9 +234,8 @@ public class AthleteResource {
@GetMapping("/athletes/session/{id}/activities") @GetMapping("/athletes/session/{id}/activities")
public List<ActiviteDTO> getActivitiesForSession(@PathVariable Integer id) { public List<ActiviteDTO> getActivitiesForSession(@PathVariable Integer id) {
// Récupérer la session par ID // Récupérer la session par ID
java.util.Optional<Session> sessionOpt = sessionDAO.findById(id); Session session = sessionDAO.findById(id).orElse(null);
if (sessionOpt.isPresent()) { if (session != null) {
Session session = sessionOpt.get();
// Retourner les activités de la session // Retourner les activités de la session
List<ActiviteDTO> activiteDTOs = new ArrayList<>(); List<ActiviteDTO> activiteDTOs = new ArrayList<>();
for (Activite activite : session.getActivites()) { for (Activite activite : session.getActivites()) {
@@ -253,9 +257,8 @@ public class AthleteResource {
@GetMapping("/athletes/{id}/session/after/{date}") @GetMapping("/athletes/{id}/session/after/{date}")
public List<SessionDTO> getSessionsAfterDate(@PathVariable Integer id, @PathVariable String date) { public List<SessionDTO> getSessionsAfterDate(@PathVariable Integer id, @PathVariable String date) {
// Récupérer l'athlète par ID // Récupérer l'athlète par ID
java.util.Optional<Athlete> athleteOpt = athleteDAO.findById(id); Athlete athlete = athleteDAO.findById(id).orElse(null);
if (athleteOpt.isPresent()) { if (athlete != null) {
Athlete athlete = athleteOpt.get();
// Récupérer les sessions de l'athlète après la date donnée // Récupérer les sessions de l'athlète après la date donnée
List<Session> sessions = sessionDAO.findAll(); List<Session> sessions = sessionDAO.findAll();
List<SessionDTO> filteredSessions = new ArrayList<>(); List<SessionDTO> filteredSessions = new ArrayList<>();
@@ -284,9 +287,8 @@ public class AthleteResource {
public List<SessionDTO> getSessionsBetweenDates(@PathVariable Integer id, @PathVariable String startDate, public List<SessionDTO> getSessionsBetweenDates(@PathVariable Integer id, @PathVariable String startDate,
@PathVariable String endDate) { @PathVariable String endDate) {
// Récupérer l'athlète par ID // Récupérer l'athlète par ID
java.util.Optional<Athlete> athleteOpt = athleteDAO.findById(id); Athlete athlete = athleteDAO.findById(id).orElse(null);
if (athleteOpt.isPresent()) { if (athlete != null) {
Athlete athlete = athleteOpt.get();
// Récupérer les sessions de l'athlète entre les deux dates données // Récupérer les sessions de l'athlète entre les deux dates données
List<Session> sessions = sessionDAO.findAll(); List<Session> sessions = sessionDAO.findAll();
List<SessionDTO> filteredSessions = new ArrayList<>(); List<SessionDTO> filteredSessions = new ArrayList<>();