From fad05e8bb12b0f988a95f01524d7eac745429ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ama=C3=ABl=20Kesteman?= Date: Mon, 5 Jan 2026 22:20:29 +0100 Subject: [PATCH] Feat: Fin de ActiviteResource + ajout id dans les DTO (erreur de ma part) --- .../FrisbYEE/jpa/dto/ActiviteDTO.java | 1 + .../hackathon/FrisbYEE/jpa/dto/AdminDTO.java | 1 + .../FrisbYEE/jpa/dto/AthleteDTO.java | 1 + .../hackathon/FrisbYEE/jpa/dto/CoachDTO.java | 1 + .../hackathon/FrisbYEE/jpa/dto/UserDTO.java | 1 + .../FrisbYEE/rest/ActiviteResource.java | 84 +++++++++++++++++-- 6 files changed, 80 insertions(+), 9 deletions(-) diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/ActiviteDTO.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/ActiviteDTO.java index 0b5316e..8302d63 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/ActiviteDTO.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/ActiviteDTO.java @@ -6,6 +6,7 @@ import java.util.List; @Data public class ActiviteDTO { + private Integer id; private String name; private String theme; private Long duree; // optional, can be null diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AdminDTO.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AdminDTO.java index 1846a71..3656be2 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AdminDTO.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AdminDTO.java @@ -3,5 +3,6 @@ import lombok.Data; @Data public class AdminDTO { + private Integer id; private String name; } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AthleteDTO.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AthleteDTO.java index 0a3da0f..d47d2de 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AthleteDTO.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/AthleteDTO.java @@ -7,6 +7,7 @@ import java.util.List; @Data public class AthleteDTO { + private Integer id; private String nom; private String niveau; private String categorie; diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/CoachDTO.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/CoachDTO.java index 581ea31..32fb5f2 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/CoachDTO.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/CoachDTO.java @@ -4,6 +4,7 @@ import lombok.Data; @Data public class CoachDTO { + private Integer id; private String name; } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/UserDTO.java b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/UserDTO.java index 635dfc4..239977f 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/UserDTO.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/jpa/dto/UserDTO.java @@ -5,6 +5,7 @@ import lombok.Data; @Data public class UserDTO { + private Integer id; private String name; private String email; private Role role; diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/ActiviteResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/ActiviteResource.java index 6a02fc9..271b4d7 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/ActiviteResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/ActiviteResource.java @@ -6,9 +6,13 @@ import hackathon.FrisbYEE.jpa.metier.Session; import hackathon.FrisbYEE.jpa.service.ActiviteDAO; import hackathon.FrisbYEE.jpa.service.SessionDAO; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import java.util.List; +import java.util.stream.Collectors; @Controller @RequestMapping("/activite") @@ -21,15 +25,15 @@ public class ActiviteResource { private SessionDAO sessionDAO; /* - POST /activite/create - DELETE /activite/delete/{id} - + * POST /activite/create + * DELETE /activite/delete/{id} + * */ @PostMapping("/create") @ResponseBody @PreAuthorize("hasRole('Coach')") - public String create(@RequestBody ActiviteDTO dto) { + public ResponseEntity create(@RequestBody ActiviteDTO dto) { try { Session session = sessionDAO.findById(dto.getSessionId()).get(); @@ -41,21 +45,83 @@ public class ActiviteResource { activite.setSession(session); activiteDAO.save(activite); } catch (Exception ex) { - return ex.toString(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error: " + ex.getMessage()); } - return "ok"; + return ResponseEntity.status(HttpStatus.CREATED).body("Activity created"); } @DeleteMapping("/delete/{id}") @ResponseBody @PreAuthorize("hasRole('Coach')") - public String delete(@PathVariable("id") int id) { + public ResponseEntity delete(@PathVariable("id") int id) { try { Activite activite = activiteDAO.findById(id).get(); activiteDAO.delete(activite); } catch (Exception ex) { - return ex.toString(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error: " + ex.getMessage()); + } - return "ok"; + return ResponseEntity.ok("Activity deleted"); + } + + @PostMapping("/update/{id}") + @ResponseBody + @PreAuthorize("hasRole('Coach')") + public ResponseEntity modifyById(@PathVariable("id") int id, @RequestBody ActiviteDTO dto) { + try { + Session session = sessionDAO.findById(dto.getSessionId()).get(); + Activite activite = activiteDAO.findById(id).get(); + activite.setName(dto.getName()); + activite.setTheme(dto.getTheme()); + activite.setDuree(dto.getDuree() != null ? dto.getDuree() : 0L); + activite.setDataActivite(dto.getDataActivite()); + activite.setSession(session); + activiteDAO.save(activite); + } catch (Exception ex) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error: " + ex.getMessage()); + } + return ResponseEntity.ok("Activity modified"); + + } + + @GetMapping("/read/{id}") + @ResponseBody + public ResponseEntity getActivityById(@PathVariable("id") int id) { + try { + Activite activite = activiteDAO.findById(id).get(); + ActiviteDTO dto = new ActiviteDTO(); + dto.setName(activite.getName()); + dto.setId(activite.getId()); + dto.setTheme(activite.getTheme()); + dto.setDuree(activite.getDuree()); + dto.setDataActivite(activite.getDataActivite()); + dto.setSessionId(activite.getSession() != null ? activite.getSession().getId() : null); + + return ResponseEntity.ok(dto); + } catch (Exception ex) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + } + } + + @GetMapping("/all") + @ResponseBody + public ResponseEntity> getAllActivity() { + try { + List activites = activiteDAO.findAll(); + List dtos = activites.stream().map(activite -> { + ActiviteDTO dto = new ActiviteDTO(); + dto.setName(activite.getName()); + dto.setId(activite.getId()); + dto.setTheme(activite.getTheme()); + dto.setDuree(activite.getDuree()); + dto.setDataActivite(activite.getDataActivite()); + dto.setSessionId(activite.getSession() != null ? activite.getSession().getId() : null); + return dto; + }).collect(Collectors.toList()); + return ResponseEntity.ok(dtos); + } catch (Exception ex) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + } + } }