Refactoring + Checkpoint

This commit is contained in:
DahoudG
2024-11-17 22:58:38 +00:00
parent 588984aa9c
commit 2f33b09753
10 changed files with 278 additions and 50 deletions

View File

@@ -651,7 +651,6 @@ public class EventsResource {
return Response.ok(responseDTOs).build();
}
@POST
@Path("/{id}/favorite")
@Transactional
@@ -750,5 +749,90 @@ public class EventsResource {
String shareLink = "https://lions.dev /events/" + eventId;
return Response.ok(Map.of("shareLink", shareLink)).build();
}
/**
* Endpoint pour fermer un événement.
*
* @param eventId L'ID de l'événement.
* @return Une réponse HTTP indiquant le succès de la fermeture.
*/
@PATCH
@Path("/{id}/close")
@Transactional
@Operation(
summary = "Fermer un événement",
description = "Ferme un événement et empêche les nouvelles participations"
)
public Response closeEvent(@PathParam("id") UUID eventId) {
LOG.info("Tentative de fermeture de l'événement avec l'ID : " + eventId);
// Recherche de l'événement par ID
Events event = eventsRepository.findById(eventId);
if (event == null) {
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
return Response.status(Response.Status.NOT_FOUND)
.entity("Événement non trouvé.")
.build();
}
// Marquer l'événement comme fermé
event.setStatus("fermé"); // Modification du statut de l'événement
eventsRepository.persist(event); // Persister les modifications dans la base
LOG.info("Événement fermé avec succès : " + event.getTitle());
// Retourner une réponse HTTP 200 OK avec le DTO de l'événement fermé
return Response.ok(new EventCreateResponseDTO(event)).build();
}
/**
* Endpoint pour réouvrir un événement.
*
* @param eventId L'ID de l'événement à rouvrir.
* @return Une réponse HTTP indiquant le succès ou l'échec de la réouverture.
*/
@PATCH
@Path("{eventId}/reopen")
@Transactional
@Operation(
summary = "Rouvrir un événement",
description = "Rouvre un événement existant qui est actuellement fermé"
)
public Response reopenEvent(@PathParam("eventId") UUID eventId) {
LOG.info("Tentative de réouverture de l'événement avec l'ID : " + eventId);
// Recherche de l'événement par ID
Events event = eventsRepository.findById(eventId);
if (event == null) {
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
return Response.status(Response.Status.NOT_FOUND)
.entity("Événement non trouvé.")
.build();
}
// Vérifier si l'événement est déjà ouvert
if ("ouvert".equals(event.getStatus())) {
LOG.warn("L'événement est déjà ouvert : " + eventId);
return Response.status(Response.Status.BAD_REQUEST)
.entity("L'événement est déjà ouvert.")
.build();
}
// Vérifier si l'événement est fermé avant de tenter la réouverture
if (!"fermé".equals(event.getStatus())) {
LOG.warn("L'événement n'est pas fermé, donc il ne peut pas être rouvert : " + eventId);
return Response.status(Response.Status.BAD_REQUEST)
.entity("L'événement n'est pas fermé et ne peut pas être rouvert.")
.build();
}
// Réouvrir l'événement en mettant à jour son statut
event.setStatus("ouvert"); // Changer le statut à "Ouvert"
eventsRepository.persist(event); // Persister les modifications dans la base
LOG.info("Événement rouvert avec succès : " + event.getTitle());
// Retourner une réponse HTTP 200 OK avec un message de succès
return Response.ok("L'événement a été réouvert avec succès.").build();
}
}