From 57ad010feb3db03a961bf5642b84a6020c99d76f Mon Sep 17 00:00:00 2001 From: DahoudG Date: Mon, 2 Sep 2024 21:16:50 +0000 Subject: [PATCH] Refactoring --- .../dev/repository/EventsRepository.java | 28 ++- .../lions/dev/resource/EventsResource.java | 168 +++++++++++++++++- 2 files changed, 190 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/lions/dev/repository/EventsRepository.java b/src/main/java/com/lions/dev/repository/EventsRepository.java index b156d7d..1efcf51 100644 --- a/src/main/java/com/lions/dev/repository/EventsRepository.java +++ b/src/main/java/com/lions/dev/repository/EventsRepository.java @@ -5,6 +5,7 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; import jakarta.transaction.Transactional; + import java.util.List; import java.util.UUID; @@ -20,7 +21,12 @@ public class EventsRepository { * @return Liste de tous les événements. */ public List findAllEvents() { - return entityManager.createQuery("SELECT e FROM Events e", Events.class).getResultList(); + // Log pour la tentative de récupération de tous les événements + System.out.println("Tentative de récupération de tous les événements."); + List events = entityManager.createQuery("SELECT e FROM Events e", Events.class).getResultList(); + // Log du nombre d'événements trouvés + System.out.println("Nombre d'événements trouvés: " + events.size()); + return events; } /** @@ -30,7 +36,17 @@ public class EventsRepository { * @return L'événement trouvé ou null. */ public Events findById(UUID id) { - return entityManager.find(Events.class, id); + // Log pour la tentative de recherche d'un événement par ID + System.out.println("Recherche de l'événement avec ID: " + id); + Events event = entityManager.find(Events.class, id); + if (event == null) { + // Log si l'événement n'est pas trouvé + System.out.println("Événement non trouvé: " + id); + } else { + // Log si l'événement est trouvé + System.out.println("Événement trouvé: " + event.getTitle()); + } + return event; } /** @@ -40,7 +56,11 @@ public class EventsRepository { */ @Transactional public void persist(Events event) { + // Log pour la tentative de persistance + System.out.println("Tentative de persistance de l'événement: " + event.getTitle()); entityManager.persist(event); + // Log après la persistance + System.out.println("Événement persisté avec succès: " + event.getId()); } /** @@ -50,6 +70,10 @@ public class EventsRepository { */ @Transactional public void delete(Events event) { + // Log pour la tentative de suppression + System.out.println("Tentative de suppression de l'événement: " + event.getTitle()); entityManager.remove(entityManager.contains(event) ? event : entityManager.merge(event)); + // Log après suppression + System.out.println("Événement supprimé avec succès: " + event.getId()); } } diff --git a/src/main/java/com/lions/dev/resource/EventsResource.java b/src/main/java/com/lions/dev/resource/EventsResource.java index e37d9fe..424dc20 100644 --- a/src/main/java/com/lions/dev/resource/EventsResource.java +++ b/src/main/java/com/lions/dev/resource/EventsResource.java @@ -28,12 +28,28 @@ public class EventsResource { @Inject EventsRepository eventsRepository; + /** + * Récupérer tous les événements. + * + * @return Liste de tous les événements. + */ @GET @Operation(summary = "Récupérer tous les événements", description = "Retourne une liste de tous les événements") public List getAllEvents() { - return eventsRepository.findAllEvents(); + // Log pour le début de la récupération des événements + System.out.println("Tentative de récupération de tous les événements."); + List events = eventsRepository.findAllEvents(); + // Log du nombre d'événements récupérés + System.out.println("Nombre d'événements récupérés: " + events.size()); + return events; } + /** + * Créer un nouvel événement. + * + * @param event L'événement à créer. + * @return Réponse HTTP indiquant le succès ou l'échec de la création. + */ @POST @Transactional @Operation(summary = "Créer un nouvel événement", description = "Crée un nouvel événement") @@ -65,8 +81,11 @@ public class EventsResource { event.setCreator(creator); event.addParticipant(creator); - // Persister l'événement + // Log avant la persistance de l'événement + System.out.println("Tentative de persistance de l'événement: " + event.getTitle()); eventsRepository.persist(event); + // Log après la persistance + System.out.println("Événement persisté avec succès: " + event.getId()); return Response.status(Response.Status.CREATED).entity(event).build(); } catch (Exception e) { @@ -77,28 +96,51 @@ public class EventsResource { } } - + /** + * Récupérer un événement par ID. + * + * @param id L'ID de l'événement. + * @return L'événement correspondant à l'ID ou une réponse HTTP 404 si non trouvé. + */ @GET @Path("{id}") @Operation(summary = "Récupérer un événement par ID", description = "Retourne un événement par son ID") public Response getEventById(@PathParam("id") UUID id) { + // Log pour la récupération par ID + System.out.println("Tentative de récupération de l'événement avec ID: " + id); Events event = eventsRepository.findById(id); if (event == null) { + // Log si l'événement n'est pas trouvé + System.out.println("Événement non trouvé: " + id); return Response.status(Response.Status.NOT_FOUND).build(); } + // Log de la réussite de la récupération + System.out.println("Événement trouvé: " + event.getTitle()); return Response.ok(event).build(); } + /** + * Mettre à jour un événement existant. + * + * @param id L'ID de l'événement à mettre à jour. + * @param event Les nouvelles informations de l'événement. + * @return L'événement mis à jour ou une réponse HTTP 404 si non trouvé. + */ @PUT @Path("{id}") @Transactional @Operation(summary = "Mettre à jour un événement", description = "Met à jour un événement existant par ID") public Response updateEvent(@PathParam("id") UUID id, @Valid Events event) { + // Log pour la tentative de mise à jour + System.out.println("Tentative de mise à jour de l'événement avec ID: " + id); Events entity = eventsRepository.findById(id); if (entity == null) { + // Log si l'événement n'est pas trouvé + System.out.println("Événement non trouvé: " + id); return Response.status(Response.Status.NOT_FOUND).build(); } + // Mise à jour des informations de l'événement entity.setTitle(event.getTitle()); entity.setDescription(event.getDescription()); entity.setEventDate(event.getEventDate()); @@ -107,109 +149,187 @@ public class EventsResource { entity.setLink(event.getLink()); entity.setImageUrl(event.getImageUrl()); + // Log après mise à jour + System.out.println("Événement mis à jour avec succès: " + entity.getId()); return Response.ok(entity).build(); } + /** + * Supprimer un événement. + * + * @param id L'ID de l'événement à supprimer. + * @return Une réponse HTTP 204 (No Content) ou 404 si non trouvé. + */ @DELETE @Path("{id}") @Transactional @Operation(summary = "Supprimer un événement", description = "Supprime un événement existant par ID") public Response deleteEvent(@PathParam("id") UUID id) { + // Log pour la tentative de suppression + System.out.println("Tentative de suppression de l'événement avec ID: " + id); Events event = eventsRepository.findById(id); if (event == null) { + // Log si l'événement n'est pas trouvé + System.out.println("Événement non trouvé: " + id); return Response.status(Response.Status.NOT_FOUND).build(); } eventsRepository.delete(event); + // Log après suppression + System.out.println("Événement supprimé avec succès: " + id); return Response.noContent().build(); } + /** + * Ajouter un participant à un événement. + * + * @param eventId L'ID de l'événement. + * @param userId L'ID de l'utilisateur à ajouter comme participant. + * @return L'événement mis à jour ou une réponse HTTP 404 si l'événement ou l'utilisateur est non trouvé. + */ @POST @Path("{eventId}/participants/{userId}") @Transactional @Operation(summary = "Ajouter un participant à un événement", description = "Ajoute un utilisateur en tant que participant à un événement") public Response addParticipant(@PathParam("eventId") UUID eventId, @PathParam("userId") UUID userId) { + // Log pour l'ajout de participant + System.out.println("Tentative d'ajout du participant avec ID: " + userId + " à l'événement avec ID: " + eventId); Events event = eventsRepository.findById(eventId); Users user = usersRepository.findById(userId); if (event == null || user == null) { + // Log si l'événement ou l'utilisateur n'est pas trouvé + System.out.println("Événement ou utilisateur non trouvé. Event ID: " + eventId + ", User ID: " + userId); return Response.status(Response.Status.NOT_FOUND) .entity("Événement ou utilisateur non trouvé.") .build(); } event.addParticipant(user); + // Log après l'ajout de participant + System.out.println("Participant ajouté avec succès. Event ID: " + eventId + ", User ID: " + userId); return Response.ok(event).build(); } + /** + * Retirer un participant d'un événement. + * + * @param eventId L'ID de l'événement. + * @param userId L'ID de l'utilisateur à retirer comme participant. + * @return L'événement mis à jour ou une réponse HTTP 404 si l'événement ou l'utilisateur est non trouvé. + */ @DELETE @Path("{eventId}/participants/{userId}") @Transactional @Operation(summary = "Retirer un participant d'un événement", description = "Retire un utilisateur en tant que participant d'un événement") public Response removeParticipant(@PathParam("eventId") UUID eventId, @PathParam("userId") UUID userId) { + // Log pour la tentative de retrait du participant + System.out.println("Tentative de retrait du participant avec ID: " + userId + " de l'événement avec ID: " + eventId); Events event = eventsRepository.findById(eventId); Users user = usersRepository.findById(userId); if (event == null || user == null) { + // Log si l'événement ou l'utilisateur n'est pas trouvé + System.out.println("Événement ou utilisateur non trouvé. Event ID: " + eventId + ", User ID: " + userId); return Response.status(Response.Status.NOT_FOUND) .entity("Événement ou utilisateur non trouvé.") .build(); } event.removeParticipant(user); + // Log après le retrait du participant + System.out.println("Participant retiré avec succès. Event ID: " + eventId + ", User ID: " + userId); return Response.ok(event).build(); } + /** + * Ajouter un "j'aime" à un événement. + * + * @param eventId L'ID de l'événement. + * @param userId L'ID de l'utilisateur qui aime l'événement. + * @return L'événement mis à jour ou une réponse HTTP 404 si l'événement ou l'utilisateur est non trouvé. + */ @POST @Path("{eventId}/like/{userId}") @Transactional @Operation(summary = "Ajouter un 'j'aime' à un événement", description = "Ajoute un utilisateur aux 'j'aime' d'un événement") public Response likeEvent(@PathParam("eventId") UUID eventId, @PathParam("userId") UUID userId) { + // Log pour l'ajout d'un "j'aime" + System.out.println("Tentative d'ajout d'un 'j'aime' par l'utilisateur avec ID: " + userId + " pour l'événement avec ID: " + eventId); Events event = eventsRepository.findById(eventId); Users user = usersRepository.findById(userId); if (event == null || user == null) { + // Log si l'événement ou l'utilisateur n'est pas trouvé + System.out.println("Événement ou utilisateur non trouvé. Event ID: " + eventId + ", User ID: " + userId); return Response.status(Response.Status.NOT_FOUND) .entity("Événement ou utilisateur non trouvé.") .build(); } event.addLike(user); + // Log après l'ajout du "j'aime" + System.out.println("'J'aime' ajouté avec succès. Event ID: " + eventId + ", User ID: " + userId); return Response.ok(event).build(); } + /** + * Retirer un "j'aime" d'un événement. + * + * @param eventId L'ID de l'événement. + * @param userId L'ID de l'utilisateur qui retire son "j'aime". + * @return L'événement mis à jour ou une réponse HTTP 404 si l'événement ou l'utilisateur est non trouvé. + */ @DELETE @Path("{eventId}/like/{userId}") @Transactional @Operation(summary = "Retirer un 'j'aime' d'un événement", description = "Retire un utilisateur des 'j'aime' d'un événement") public Response unlikeEvent(@PathParam("eventId") UUID eventId, @PathParam("userId") UUID userId) { + // Log pour la tentative de retrait d'un "j'aime" + System.out.println("Tentative de retrait d'un 'j'aime' par l'utilisateur avec ID: " + userId + " pour l'événement avec ID: " + eventId); Events event = eventsRepository.findById(eventId); Users user = usersRepository.findById(userId); if (event == null || user == null) { + // Log si l'événement ou l'utilisateur n'est pas trouvé + System.out.println("Événement ou utilisateur non trouvé. Event ID: " + eventId + ", User ID: " + userId); return Response.status(Response.Status.NOT_FOUND) .entity("Événement ou utilisateur non trouvé.") .build(); } event.removeLike(user); + // Log après le retrait du "j'aime" + System.out.println("'J'aime' retiré avec succès. Event ID: " + eventId + ", User ID: " + userId); return Response.ok(event).build(); } + /** + * Fermer un événement. + * + * @param eventId L'ID de l'événement à fermer. + * @return Une réponse HTTP indiquant le succès ou l'échec de la fermeture. + */ @POST @Path("{eventId}/close") @Transactional @Operation(summary = "Fermer un événement", description = "Ferme un événement existant") public Response closeEvent(@PathParam("eventId") UUID eventId) { + // Log pour la tentative de fermeture de l'événement + System.out.println("Tentative de fermeture de l'événement avec ID: " + eventId); Events event = eventsRepository.findById(eventId); if (event == null) { + // Log si l'événement n'est pas trouvé + System.out.println("Événement non trouvé: " + eventId); return Response.status(Response.Status.NOT_FOUND) .entity("Événement non trouvé.") .build(); } if ("CLOSED".equals(event.getStatus())) { + // Log si l'événement est déjà fermé + System.out.println("L'événement est déjà fermé: " + eventId); return Response.status(Response.Status.BAD_REQUEST) .entity("L'événement est déjà fermé.") .build(); @@ -217,8 +337,48 @@ public class EventsResource { event.setStatus("CLOSED"); eventsRepository.persist(event); - + // Log après la fermeture de l'événement + System.out.println("Événement fermé avec succès: " + eventId); return Response.ok("Événement fermé avec succès.").build(); } + /** + * Rouvrir 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. + */ + @POST + @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 pour la tentative de réouverture de l'événement + System.out.println("Tentative de réouverture de l'événement avec ID: " + eventId); + Events event = eventsRepository.findById(eventId); + + if (event == null) { + // Log si l'événement n'est pas trouvé + System.out.println("Événement non trouvé: " + eventId); + return Response.status(Response.Status.NOT_FOUND) + .entity("Événement non trouvé.") + .build(); + } + + if (!"CLOSED".equals(event.getStatus())) { + // Log si l'événement n'est pas fermé + System.out.println("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(); + } + + // Rouvrir l'événement + event.setStatus("OPEN"); + eventsRepository.persist(event); + // Log après la réouverture de l'événement + System.out.println("Événement rouvert avec succès: " + eventId); + return Response.ok("Événement rouvert avec succès.").build(); + } + }