From 0bf66c8c08dde22749dc1555de4fa04c7dcc9792 Mon Sep 17 00:00:00 2001 From: tuanvu Date: Mon, 12 Jan 2026 08:43:16 +0100 Subject: [PATCH] add getGroupe dans session et athlete --- .../FrisbYEE/rest/AthleteResource.java | 26 ++++++++++++++----- .../FrisbYEE/rest/SessionResource.java | 23 ++++++++++------ front_end/src/api.ts | 4 ++- 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java index 8bca5ff..d938d11 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java @@ -51,8 +51,9 @@ public class AthleteResource { @PreAuthorize("hasRole('admin') or hasRole('coach') or hasRole('athlete')") public ResponseEntity create(@RequestBody AthleteDTO dto) { Athlete athlete = mapToEntity(dto); - if(athleteDAO.existsByKeycloakId(athlete.getKeycloakId())) { - return ResponseEntity.status(200).body(mapToDTO(athleteDAO.findByKeycloakId(athlete.getKeycloakId()).get())); + if (athleteDAO.existsByKeycloakId(athlete.getKeycloakId())) { + return ResponseEntity.status(200) + .body(mapToDTO(athleteDAO.findByKeycloakId(athlete.getKeycloakId()).get())); } athleteDAO.save(athlete); return ResponseEntity.status(201).body(mapToDTO(athlete)); @@ -177,7 +178,7 @@ public class AthleteResource { dto.setName(s.getName()); dto.setCreneau(s.getCreneau()); List activiteIDs = new ArrayList<>(); - for (Activite activite : s.getActivites()) { + for (Activite activite : s.getActivites()) { activiteIDs.add(activite.getId()); } dto.setActiviteIds(activiteIDs); @@ -186,11 +187,11 @@ public class AthleteResource { dto.setGroupe(s.getGroupe()); dto.setIsRecurrent(s.getIsRecurrent()); List athleteIds = new ArrayList<>(); - for (Athlete athlete : s.getAthletes()) { + for (Athlete athlete : s.getAthletes()) { athleteIds.add(athlete.getId()); } dto.setAthleteIds(athleteIds); - + // Map other fields as necessary athleteSessions.add(dto); } @@ -300,5 +301,18 @@ public class AthleteResource { return new ArrayList<>(); } - + @GetMapping("/{athleteId}/groupes") + public List getGroupesByAthlete(@PathVariable Integer athleteId) { + java.util.Optional athleteOptional = athleteDAO.findById(athleteId); + List groupes = new ArrayList<>(); + if (athleteOptional.isPresent()) { + Athlete athlete = athleteOptional.get(); + for (Session session : athlete.getSessions()) { + if (!groupes.contains(session.getGroupe())) { + groupes.add(session.getGroupe()); + } + } + } + return groupes; + } } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java index b37460d..96979d4 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java @@ -80,6 +80,17 @@ public class SessionResource { } } + @GetMapping("{id}/groupe") + @PreAuthorize("hasRole('coach') or hasRole('athlete')") + public ResponseEntity getGroupeById(@PathVariable Integer id) { + try { + Session session = sessionDAO.findById(id).orElseThrow(); + return ResponseEntity.ok(session.getGroupe()); + } catch (Exception ex) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage()); + } + } + @DeleteMapping("/delete/{id}") @ResponseBody @PreAuthorize("hasRole('coach')") @@ -114,38 +125,34 @@ public class SessionResource { return ResponseEntity.noContent().build(); } - @PutMapping("/{id}/subscribe/{userId}") @PreAuthorize("hasRole('admin') or hasRole('coach') or hasRole('athlete')") - public ResponseEntity subscribe(@PathVariable Integer id,@PathVariable Integer userId){ + public ResponseEntity subscribe(@PathVariable Integer id, @PathVariable Integer userId) { Session session = sessionDAO.findById(id).orElseThrow(() -> new ResponseStatusException( HttpStatus.NOT_FOUND, "Session not found with id " + id)); Athlete athlete = athleteDAO.findById(userId).orElseThrow(() -> new ResponseStatusException( HttpStatus.NOT_FOUND, "Athlete not found with id " + userId)); - + session.getAthletes().add(athlete); sessionDAO.save(session); - return ResponseEntity.noContent().build(); } @PutMapping("/{id}/unsubscribe/{userId}") @PreAuthorize("hasRole('admin') or hasRole('coach') or hasRole('athlete')") - public ResponseEntity unsubscribe(@PathVariable Integer id,@PathVariable Integer userId){ + public ResponseEntity unsubscribe(@PathVariable Integer id, @PathVariable Integer userId) { Session session = sessionDAO.findById(id).orElseThrow(() -> new ResponseStatusException( HttpStatus.NOT_FOUND, "Session not found with id " + id)); Athlete athlete = athleteDAO.findById(userId).orElseThrow(() -> new ResponseStatusException( HttpStatus.NOT_FOUND, "Athlete not found with id " + userId)); - + session.getAthletes().remove(athlete); sessionDAO.save(session); - return ResponseEntity.noContent().build(); } - @GetMapping("/{id}/activities") @PreAuthorize("hasRole('coach') or hasRole('athlete')") public ResponseEntity getActivitiesBySessionId(@PathVariable Integer id) { diff --git a/front_end/src/api.ts b/front_end/src/api.ts index b57e12c..fba6a78 100644 --- a/front_end/src/api.ts +++ b/front_end/src/api.ts @@ -50,7 +50,8 @@ export const athleteService = { getActivitiesForSession: (sessionId: number | string) => api.get(`/athletes/session/${sessionId}/activities`), getSessionsAfterDate: (athleteId: number | string, date: string) => api.get(`/athletes/${athleteId}/session/after/${encodeURIComponent(date)}`), getSessionsBetweenDates: (athleteId: number | string, startDate: string, endDate: string) => api.get(`/athletes/${athleteId}/session/between/${encodeURIComponent(startDate)}/${encodeURIComponent(endDate)}`), - addActivity: (id_sess: number, id_act: number) => api.get(`/${id_sess}/activities/add/${id_act}`) + addActivity: (id_sess: number, id_act: number) => api.get(`/${id_sess}/activities/add/${id_act}`), + getGroupes: (athleteId: number | string) => api.get(`/athlete/${athleteId}/groupes`), }; export const activiteService = { @@ -73,6 +74,7 @@ export const sessionService = { getActivities: (sessionId: number | null) => api.get(`/session/${sessionId}/activities`), addActivity: (sessionId: number | null, activityId: number) => api.post(`/session/${sessionId}/activities/${activityId}`), + getGroupe: (sessionId: number | null) => api.get(`/session/${sessionId}/groupe`), subscribe: (sessionId: number | null, userId: number) => api.put(`/session/${sessionId}/subscribe/${userId}`), unsubscribe: (sessionId: number | null, userId: number) => api.put(`/session/${sessionId}/unsubscribe/${userId}`), };