Documentation

This commit is contained in:
Alexis Leboeuf
2026-01-06 18:33:15 +01:00
parent 3ec0110aab
commit fb9515cc3c
2 changed files with 110 additions and 1 deletions

View File

@@ -5,6 +5,12 @@ import hackathon.FrisbYEE.jpa.metier.Activite;
import hackathon.FrisbYEE.jpa.metier.Session; import hackathon.FrisbYEE.jpa.metier.Session;
import hackathon.FrisbYEE.jpa.service.ActiviteDAO; import hackathon.FrisbYEE.jpa.service.ActiviteDAO;
import hackathon.FrisbYEE.jpa.service.SessionDAO; import hackathon.FrisbYEE.jpa.service.SessionDAO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -30,6 +36,12 @@ public class ActiviteResource {
* *
*/ */
@Operation(summary = "Créer une activité")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Création effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = ActiviteDTO.class)))
})
@PostMapping("/create") @PostMapping("/create")
@ResponseBody @ResponseBody
@PreAuthorize("hasRole('Coach')") @PreAuthorize("hasRole('Coach')")
@@ -46,6 +58,12 @@ public class ActiviteResource {
return ResponseEntity.status(HttpStatus.CREATED).body("Activity created"); return ResponseEntity.status(HttpStatus.CREATED).body("Activity created");
} }
@Operation(summary = "Supprime l'activité ayant l'identifiant correspondant")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Suppression effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = ActiviteDTO.class)))
})
@DeleteMapping("/delete/{id}") @DeleteMapping("/delete/{id}")
@ResponseBody @ResponseBody
@PreAuthorize("hasRole('Coach')") @PreAuthorize("hasRole('Coach')")
@@ -60,6 +78,12 @@ public class ActiviteResource {
return ResponseEntity.ok("Activity deleted"); return ResponseEntity.ok("Activity deleted");
} }
@Operation(summary = "Modifie l'activité ayant l'identifiant correspondant")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Modification effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = ActiviteDTO.class)))
})
@PostMapping("/update/{id}") @PostMapping("/update/{id}")
@ResponseBody @ResponseBody
@PreAuthorize("hasRole('Coach')") @PreAuthorize("hasRole('Coach')")
@@ -80,6 +104,12 @@ public class ActiviteResource {
} }
@Operation(summary = "Récupère l'activité ayant l'identifiant correspondant")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupération effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = ActiviteDTO.class)))
})
@GetMapping("/{id}") @GetMapping("/{id}")
@PreAuthorize("hasRole('Coach') or hasRole('Athlete')") @PreAuthorize("hasRole('Coach') or hasRole('Athlete')")
@ResponseBody @ResponseBody
@@ -93,6 +123,12 @@ public class ActiviteResource {
} }
} }
@Operation(summary = "Récupère toutes les activités")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupération effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = ActiviteDTO.class)))
})
@GetMapping("/all") @GetMapping("/all")
@PreAuthorize("hasRole('Coach') or hasRole('Athlete')") @PreAuthorize("hasRole('Coach') or hasRole('Athlete')")
@ResponseBody @ResponseBody
@@ -107,6 +143,12 @@ public class ActiviteResource {
} }
@Operation(summary = "Récupère les activités correspondant au thème donné")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupération effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = ActiviteDTO.class)))
})
@GetMapping("/theme/{theme}") @GetMapping("/theme/{theme}")
@PreAuthorize("hasRole('Coach') or hasRole('Athlete')") @PreAuthorize("hasRole('Coach') or hasRole('Athlete')")
@ResponseBody @ResponseBody

View File

@@ -26,6 +26,11 @@ import hackathon.FrisbYEE.jpa.metier.Athlete;
import hackathon.FrisbYEE.jpa.metier.Session; import hackathon.FrisbYEE.jpa.metier.Session;
import hackathon.FrisbYEE.jpa.service.AthleteDAO; import hackathon.FrisbYEE.jpa.service.AthleteDAO;
import hackathon.FrisbYEE.jpa.service.SessionDAO; import hackathon.FrisbYEE.jpa.service.SessionDAO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
@RestController @RestController
@RequestMapping("/athletes") @RequestMapping("/athletes")
@@ -34,6 +39,14 @@ public class AthleteResource {
private AthleteDAO athleteDAO; private AthleteDAO athleteDAO;
private SessionDAO sessionDAO; private SessionDAO sessionDAO;
@Operation(summary = "Crée un Athlète avec les informations fournies")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Renvoie l'athlète créé",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = AthleteDTO.class)))
})
@PostMapping("/create") @PostMapping("/create")
@PreAuthorize("hasRole('Admin')") // Only admin can create?? @PreAuthorize("hasRole('Admin')") // Only admin can create??
public ResponseEntity<AthleteDTO> create(@RequestBody AthleteDTO dto) { public ResponseEntity<AthleteDTO> create(@RequestBody AthleteDTO dto) {
@@ -42,7 +55,13 @@ public class AthleteResource {
return ResponseEntity.status(HttpStatus.CREATED).body(mapToDTO(athlete)); return ResponseEntity.status(HttpStatus.CREATED).body(mapToDTO(athlete));
} }
@PostMapping("/all") @Operation(summary = "Récupère tous les athlètes")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupère tous les athlètes",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = List.class)))
})
@GetMapping("/all")
@PreAuthorize("hasRole('Admin') or hasRole('Coach') or hasRole('Athlete')") @PreAuthorize("hasRole('Admin') or hasRole('Coach') or hasRole('Athlete')")
public ResponseEntity<List<AthleteDTO>> all() { public ResponseEntity<List<AthleteDTO>> all() {
List<Athlete> athletes = athleteDAO.findAll(); List<Athlete> athletes = athleteDAO.findAll();
@@ -53,6 +72,12 @@ public class AthleteResource {
return ResponseEntity.ok(dtos); return ResponseEntity.ok(dtos);
} }
@Operation(summary = "Récupère l'athlète ayant l'identifiant correspondant")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupération effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = AthleteDTO.class)))
})
@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 Integer id) { public ResponseEntity<AthleteDTO> getById(@PathVariable Integer id) {
@@ -61,6 +86,12 @@ public class AthleteResource {
.orElse(ResponseEntity.notFound().build()); .orElse(ResponseEntity.notFound().build());
} }
@Operation(summary = "Met à jour l'athlète ayant l'identifiant correspondant")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Mise à jour effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = AthleteDTO.class)))
})
@PutMapping("/{id}") @PutMapping("/{id}")
@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) {
@@ -88,6 +119,12 @@ public class AthleteResource {
} }
} }
@Operation(summary = "Supprime l'athlète ayant l'identifiant correspondant")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Suppression effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = AthleteDTO.class)))
})
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
@PreAuthorize("hasRole('Admin')") @PreAuthorize("hasRole('Admin')")
public ResponseEntity<Void> delete(@PathVariable Integer id) { public ResponseEntity<Void> delete(@PathVariable Integer id) {
@@ -116,6 +153,12 @@ public class AthleteResource {
return athlete; return athlete;
} }
@Operation(summary = "Récupère les sessions correspondant à l'athlète donné")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupération effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = SessionDTO.class)))
})
@GetMapping("/athlete/{id}/session") @GetMapping("/athlete/{id}/session")
public List<SessionDTO> getSessionsAthlete(@PathVariable Integer athleteId) { public List<SessionDTO> getSessionsAthlete(@PathVariable Integer athleteId) {
// return pet // return pet
@@ -136,6 +179,12 @@ public class AthleteResource {
return athleteSessions; return athleteSessions;
} }
@Operation(summary = "Récupère toutes les sessions")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupération effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = SessionDTO.class)))
})
@GetMapping("/athletes/session") @GetMapping("/athletes/session")
public List<SessionDTO> getAllSessions() { public List<SessionDTO> getAllSessions() {
List<Session> sessions = sessionDAO.findAll(); List<Session> sessions = sessionDAO.findAll();
@@ -151,6 +200,12 @@ public class AthleteResource {
return sessionDTOs; return sessionDTOs;
} }
@Operation(summary = "Récupère les activités correspondant à la session donnée")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupération effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = ActiviteDTO.class)))
})
@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
@@ -171,6 +226,12 @@ public class AthleteResource {
return new ArrayList<>(); return new ArrayList<>();
} }
@Operation(summary = "Récupère toutes les sessions après une date donnée")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupération effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = SessionDTO.class)))
})
@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
@@ -194,6 +255,12 @@ public class AthleteResource {
return new ArrayList<>(); return new ArrayList<>();
} }
@Operation(summary = "Récupère les sessions entre deux dates")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "Récupération effectuée",
content = @Content(mediaType = "application/json",
schema = @Schema(implementation = SessionDTO.class)))
})
@GetMapping("/athletes/{id}/session/between/{startDate}/{endDate}") @GetMapping("/athletes/{id}/session/between/{startDate}/{endDate}")
public List<SessionDTO> getSessionsBetweenDates(@PathVariable Integer id, @PathVariable String startDate, @PathVariable String endDate) { public List<SessionDTO> getSessionsBetweenDates(@PathVariable Integer id, @PathVariable String startDate, @PathVariable String endDate) {
// Récupérer l'athlète par ID // Récupérer l'athlète par ID