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