fix(backend): Correction du système de réactions (favoris) pour les événements
This commit is contained in:
@@ -214,7 +214,6 @@ public class EventsResource {
|
||||
event.setStartDate(eventUpdateRequestDTO.getStartDate());
|
||||
event.setEndDate(eventUpdateRequestDTO.getEndDate());
|
||||
event.setDescription(eventUpdateRequestDTO.getDescription());
|
||||
event.setLocation(eventUpdateRequestDTO.getLocation());
|
||||
event.setCategory(eventUpdateRequestDTO.getCategory());
|
||||
event.setLink(eventUpdateRequestDTO.getLink());
|
||||
event.setImageUrl(eventUpdateRequestDTO.getImageUrl());
|
||||
@@ -252,9 +251,9 @@ public class EventsResource {
|
||||
List<Events> events = eventsRepository.find("creator.id IN ?1", friendIds).list();
|
||||
LOG.info("[LOG] Nombre d'événements récupérés dans la requête : " + events.size());
|
||||
|
||||
// Retourner une liste vide si aucun événement trouvé (pas d'erreur 404)
|
||||
List<EventReadManyByIdResponseDTO> responseDTOs = events.stream()
|
||||
.map(EventReadManyByIdResponseDTO::new)
|
||||
// ✅ Retourner avec reactionsCount et isFavorite pour l'utilisateur actuel
|
||||
List<EventCreateResponseDTO> responseDTOs = events.stream()
|
||||
.map(event -> new EventCreateResponseDTO(event, usersRepository, userId))
|
||||
.toList();
|
||||
return Response.ok(responseDTOs).build();
|
||||
} catch (Exception e) {
|
||||
@@ -552,9 +551,6 @@ public class EventsResource {
|
||||
case "description":
|
||||
event.setDescription(value != null ? value.toString() : null);
|
||||
break;
|
||||
case "location":
|
||||
event.setLocation(value != null ? value.toString() : null);
|
||||
break;
|
||||
case "category":
|
||||
event.setCategory(value != null ? value.toString() : null);
|
||||
break;
|
||||
@@ -762,9 +758,9 @@ public class EventsResource {
|
||||
@POST
|
||||
@Path("/{id}/favorite")
|
||||
@Transactional
|
||||
@Operation(summary = "Marquer un événement comme favori", description = "Permet à un utilisateur de marquer un événement comme favori.")
|
||||
@Operation(summary = "Toggle favori d'un événement", description = "Permet à un utilisateur d'ajouter ou retirer un événement de ses favoris (toggle).")
|
||||
public Response favoriteEvent(@PathParam("id") UUID eventId, @QueryParam("userId") UUID userId) {
|
||||
LOG.info("[LOG] Marquage de l'événement comme favori pour l'utilisateur ID : " + userId);
|
||||
LOG.info("[LOG] Toggle favori de l'événement " + eventId + " pour l'utilisateur ID : " + userId);
|
||||
|
||||
Events event = eventsRepository.findById(eventId);
|
||||
Users user = usersRepository.findById(userId);
|
||||
@@ -773,9 +769,22 @@ public class EventsResource {
|
||||
return Response.status(Response.Status.NOT_FOUND).entity("Événement ou utilisateur non trouvé.").build();
|
||||
}
|
||||
|
||||
user.addFavoriteEvent(event);
|
||||
// ✅ Toggle : ajouter si pas favori, retirer si déjà favori
|
||||
boolean wasFavorite = user.hasFavoriteEvent(event);
|
||||
if (wasFavorite) {
|
||||
user.removeFavoriteEvent(event);
|
||||
LOG.info("[LOG] Événement retiré des favoris pour l'utilisateur : " + user.getEmail());
|
||||
} else {
|
||||
user.addFavoriteEvent(event);
|
||||
LOG.info("[LOG] Événement ajouté aux favoris pour l'utilisateur : " + user.getEmail());
|
||||
}
|
||||
usersRepository.persist(user);
|
||||
return Response.ok("Événement marqué comme favori.").build();
|
||||
|
||||
// Retourner un JSON avec le statut
|
||||
Map<String, Object> response = new java.util.HashMap<>();
|
||||
response.put("isFavorite", !wasFavorite);
|
||||
response.put("message", wasFavorite ? "Événement retiré des favoris." : "Événement ajouté aux favoris.");
|
||||
return Response.ok(response).build();
|
||||
}
|
||||
|
||||
@GET
|
||||
|
||||
Reference in New Issue
Block a user