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.service.ActiviteDAO;
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.http.HttpStatus;
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")
@ResponseBody
@PreAuthorize("hasRole('Coach')")
@@ -46,6 +58,12 @@ public class ActiviteResource {
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}")
@ResponseBody
@PreAuthorize("hasRole('Coach')")
@@ -60,6 +78,12 @@ public class ActiviteResource {
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}")
@ResponseBody
@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}")
@PreAuthorize("hasRole('Coach') or hasRole('Athlete')")
@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")
@PreAuthorize("hasRole('Coach') or hasRole('Athlete')")
@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}")
@PreAuthorize("hasRole('Coach') or hasRole('Athlete')")
@ResponseBody

View File

@@ -26,6 +26,11 @@ import hackathon.FrisbYEE.jpa.metier.Athlete;
import hackathon.FrisbYEE.jpa.metier.Session;
import hackathon.FrisbYEE.jpa.service.AthleteDAO;
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
@RequestMapping("/athletes")
@@ -34,6 +39,14 @@ public class AthleteResource {
private AthleteDAO athleteDAO;
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")
@PreAuthorize("hasRole('Admin')") // Only admin can create??
public ResponseEntity<AthleteDTO> create(@RequestBody AthleteDTO dto) {
@@ -42,7 +55,13 @@ public class AthleteResource {
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')")
public ResponseEntity<List<AthleteDTO>> all() {
List<Athlete> athletes = athleteDAO.findAll();
@@ -53,6 +72,12 @@ public class AthleteResource {
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}")
@PreAuthorize("hasRole('Admin') or hasRole('Coach') or hasRole('Athlete')")
public ResponseEntity<AthleteDTO> getById(@PathVariable Integer id) {
@@ -61,6 +86,12 @@ public class AthleteResource {
.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}")
@PreAuthorize("hasRole('ADMIN') or #id == principal.id")
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}")
@PreAuthorize("hasRole('Admin')")
public ResponseEntity<Void> delete(@PathVariable Integer id) {
@@ -116,6 +153,12 @@ public class AthleteResource {
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")
public List<SessionDTO> getSessionsAthlete(@PathVariable Integer athleteId) {
// return pet
@@ -136,6 +179,12 @@ public class AthleteResource {
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")
public List<SessionDTO> getAllSessions() {
List<Session> sessions = sessionDAO.findAll();
@@ -151,6 +200,12 @@ public class AthleteResource {
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")
public List<ActiviteDTO> getActivitiesForSession(@PathVariable Integer id) {
// Récupérer la session par ID
@@ -171,6 +226,12 @@ public class AthleteResource {
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}")
public List<SessionDTO> getSessionsAfterDate(@PathVariable Integer id, @PathVariable String date) {
// Récupérer l'athlète par ID
@@ -194,6 +255,12 @@ public class AthleteResource {
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}")
public List<SessionDTO> getSessionsBetweenDates(@PathVariable Integer id, @PathVariable String startDate, @PathVariable String endDate) {
// Récupérer l'athlète par ID