Bon checkpoint + Refactoring
This commit is contained in:
@@ -16,7 +16,8 @@ import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Service de gestion des événements.
|
||||
* Ce service contient la logique métier pour la création, récupération et suppression des événements.
|
||||
* Ce service contient la logique métier pour la création, récupération, mise à jour et suppression des événements.
|
||||
* Chaque méthode est loguée pour assurer une traçabilité exhaustive des actions effectuées.
|
||||
*/
|
||||
@ApplicationScoped
|
||||
public class EventService {
|
||||
@@ -34,6 +35,7 @@ public class EventService {
|
||||
* @return L'événement créé.
|
||||
*/
|
||||
public Events createEvent(EventCreateRequestDTO eventCreateRequestDTO, Users creator) {
|
||||
// Initialisation de l'entité Event avec les détails fournis
|
||||
Events event = new Events();
|
||||
event.setTitle(eventCreateRequestDTO.getTitle());
|
||||
event.setDescription(eventCreateRequestDTO.getDescription());
|
||||
@@ -46,8 +48,9 @@ public class EventService {
|
||||
event.setCreator(creator);
|
||||
event.setStatus("ouvert");
|
||||
|
||||
// Persiste l'événement dans la base de données
|
||||
eventsRepository.persist(event);
|
||||
logger.info("[LOG] Événement créé avec succès : {}", event.getTitle());
|
||||
logger.info("[logger] Événement créé avec succès : {}", event.getTitle());
|
||||
return event;
|
||||
}
|
||||
|
||||
@@ -59,24 +62,28 @@ public class EventService {
|
||||
* @throws EventNotFoundException Si l'événement n'est pas trouvé.
|
||||
*/
|
||||
public Events getEventById(UUID id) {
|
||||
logger.info("[logger] Tentative de récupération de l'événement avec l'ID : {}", id);
|
||||
Events event = eventsRepository.findById(id);
|
||||
|
||||
if (event == null) {
|
||||
logger.error("[ERROR] Événement non trouvé avec l'ID : {}", id);
|
||||
throw new EventNotFoundException(id);
|
||||
}
|
||||
logger.info("[LOG] Événement trouvé avec l'ID : {}", id);
|
||||
logger.info("[logger] Événement trouvé avec l'ID : {}", id);
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère tous les événements après une date donnée.
|
||||
*
|
||||
* @param startDate La date de début de filtre.
|
||||
* @return Une liste d'événements.
|
||||
* @param startDate La date de début pour filtrer les événements.
|
||||
* @return Une liste d'événements après cette date.
|
||||
*/
|
||||
public List<Events> getEventsAfterDate(LocalDateTime startDate) {
|
||||
logger.info("[logger] Récupération des événements après la date : {}", startDate);
|
||||
|
||||
List<Events> events = eventsRepository.findEventsAfterDate(startDate);
|
||||
logger.info("[LOG] Nombre d'événements trouvés après la date {} : {}", startDate, events.size());
|
||||
logger.info("[logger] Nombre d'événements trouvés après la date {} : {}", startDate, events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
@@ -85,16 +92,17 @@ public class EventService {
|
||||
*
|
||||
* @param id L'ID de l'événement à supprimer.
|
||||
* @return true si l'événement a été supprimé, false sinon.
|
||||
* @throws EventNotFoundException Si l'événement n'est pas trouvé.
|
||||
*/
|
||||
@Transactional
|
||||
public boolean deleteEvent(UUID id) {
|
||||
logger.info("[LOG] Tentative de suppression de l'événement avec l'ID : {}", id);
|
||||
logger.info("[logger] Tentative de suppression de l'événement avec l'ID : {}", id);
|
||||
|
||||
boolean deleted = eventsRepository.deleteById(id);
|
||||
if (deleted) {
|
||||
logger.info("[LOG] Événement avec l'ID {} supprimé avec succès.", id);
|
||||
logger.info("[logger] Événement avec l'ID {} supprimé avec succès.", id);
|
||||
} else {
|
||||
logger.warn("[LOG] Échec de la suppression : événement avec l'ID {} introuvable.", id);
|
||||
logger.warn("[logger] Échec de la suppression : événement avec l'ID {} introuvable.", id);
|
||||
throw new EventNotFoundException(id);
|
||||
}
|
||||
return deleted;
|
||||
@@ -103,11 +111,14 @@ public class EventService {
|
||||
/**
|
||||
* Met à jour un événement dans le système.
|
||||
*
|
||||
* @param event L'événement à mettre à jour.
|
||||
* @param event L'événement contenant les détails mis à jour.
|
||||
* @return L'événement mis à jour.
|
||||
* @throws EventNotFoundException Si l'événement n'est pas trouvé.
|
||||
*/
|
||||
@Transactional
|
||||
public Events updateEvent(Events event) {
|
||||
logger.info("[logger] Tentative de mise à jour de l'événement avec l'ID : {}", event.getId());
|
||||
|
||||
Events existingEvent = eventsRepository.findById(event.getId());
|
||||
if (existingEvent == null) {
|
||||
logger.error("[ERROR] Événement non trouvé avec l'ID : {}", event.getId());
|
||||
@@ -125,8 +136,9 @@ public class EventService {
|
||||
existingEvent.setImageUrl(event.getImageUrl());
|
||||
existingEvent.setStatus(event.getStatus());
|
||||
|
||||
// Persiste les modifications dans la base de données
|
||||
eventsRepository.persist(existingEvent);
|
||||
logger.info("[LOG] Événement mis à jour avec succès : {}", existingEvent.getTitle());
|
||||
logger.info("[logger] Événement mis à jour avec succès : {}", existingEvent.getTitle());
|
||||
return existingEvent;
|
||||
}
|
||||
|
||||
@@ -137,27 +149,36 @@ public class EventService {
|
||||
* @return La liste des événements dans cette catégorie.
|
||||
*/
|
||||
public List<Events> findEventsByCategory(String category) {
|
||||
return eventsRepository.find("category", category).list();
|
||||
logger.info("[logger] Récupération des événements dans la catégorie : {}", category);
|
||||
List<Events> events = eventsRepository.find("category", category).list();
|
||||
logger.info("[logger] Nombre d'événements trouvés dans la catégorie '{}' : {}", category, events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recherche des événements par mot-clé.
|
||||
* Recherche des événements par mot-clé dans le titre ou la description.
|
||||
*
|
||||
* @param keyword Le mot-clé à rechercher.
|
||||
* @return La liste des événements correspondant au mot-clé.
|
||||
*/
|
||||
public List<Events> searchEvents(String keyword) {
|
||||
return eventsRepository.find("title like ?1 or description like ?1", "%" + keyword + "%").list();
|
||||
logger.info("[logger] Recherche d'événements avec le mot-clé : {}", keyword);
|
||||
List<Events> events = eventsRepository.find("title like ?1 or description like ?1", "%" + keyword + "%").list();
|
||||
logger.info("[logger] Nombre d'événements trouvés pour le mot-clé '{}' : {}", keyword, events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère les événements d'un utilisateur.
|
||||
* Récupère les événements auxquels un utilisateur participe.
|
||||
*
|
||||
* @param user L'utilisateur pour lequel récupérer les événements.
|
||||
* @return La liste des événements auxquels l'utilisateur participe.
|
||||
*/
|
||||
public List<Events> findEventsByUser(Users user) {
|
||||
return eventsRepository.find("participants", user).list();
|
||||
logger.info("[logger] Récupération des événements pour l'utilisateur avec l'ID : {}", user.getId());
|
||||
List<Events> events = eventsRepository.find("participants", user).list();
|
||||
logger.info("[logger] Nombre d'événements pour l'utilisateur avec l'ID {} : {}", user.getId(), events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,17 +188,98 @@ public class EventService {
|
||||
* @return La liste des événements ayant ce statut.
|
||||
*/
|
||||
public List<Events> findEventsByStatus(String status) {
|
||||
return eventsRepository.find("status", status).list();
|
||||
logger.info("[logger] Récupération des événements avec le statut : {}", status);
|
||||
List<Events> events = eventsRepository.find("status", status).list();
|
||||
logger.info("[logger] Nombre d'événements avec le statut '{}' : {}", status, events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère les événements entre deux dates.
|
||||
* Récupère les événements qui se déroulent entre deux dates spécifiques.
|
||||
*
|
||||
* @param startDate La date de début.
|
||||
* @param endDate La date de fin.
|
||||
* @return La liste des événements entre ces deux dates.
|
||||
*/
|
||||
public List<Events> findEventsBetweenDates(LocalDateTime startDate, LocalDateTime endDate) {
|
||||
return eventsRepository.findEventsBetweenDates(startDate, endDate);
|
||||
logger.info("[logger] Récupération des événements entre les dates : {} et {}", startDate, endDate);
|
||||
|
||||
// Vérifie la validité des dates fournies
|
||||
if (startDate == null || endDate == null || endDate.isBefore(startDate)) {
|
||||
logger.error("[ERROR] Dates invalides fournies : startDate={}, endDate={}", startDate, endDate);
|
||||
throw new IllegalArgumentException("Les dates sont invalides ou mal formatées.");
|
||||
}
|
||||
|
||||
List<Events> events = eventsRepository.findEventsBetweenDates(startDate, endDate);
|
||||
logger.info("[logger] Nombre d'événements trouvés entre les dates : {}", events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Récupère les événements futurs.
|
||||
*
|
||||
* @return Une liste d'événements à venir.
|
||||
*/
|
||||
public List<Events> findUpcomingEvents() {
|
||||
logger.info("[logger] Récupération des événements futurs.");
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
List<Events> events = eventsRepository.find("startDate > ?1", now).list();
|
||||
logger.info("[logger] Nombre d'événements futurs trouvés : " + events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère les événements passés.
|
||||
*
|
||||
* @return Une liste d'événements passés.
|
||||
*/
|
||||
public List<Events> findPastEvents() {
|
||||
logger.info("[logger] Récupération des événements passés.");
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
List<Events> events = eventsRepository.find("endDate < ?1", now).list();
|
||||
logger.info("[logger] Nombre d'événements passés trouvés : " + events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère les événements par localisation.
|
||||
*
|
||||
* @param location La localisation des événements.
|
||||
* @return La liste des événements situés à cette localisation.
|
||||
*/
|
||||
public List<Events> findEventsByLocation(String location) {
|
||||
logger.info("[logger] Récupération des événements pour la localisation : " + location);
|
||||
List<Events> events = eventsRepository.find("location", location).list();
|
||||
logger.info("[logger] Nombre d'événements trouvés pour la localisation '" + location + "' : " + events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère les événements populaires en fonction du nombre de participants.
|
||||
*
|
||||
* @return Une liste d'événements populaires.
|
||||
*/
|
||||
public List<Events> findPopularEvents() {
|
||||
logger.info("[logger] Récupération des événements populaires.");
|
||||
List<Events> events = eventsRepository.listAll().stream()
|
||||
.sorted((e1, e2) -> Integer.compare(e2.getNumberOfParticipants(), e1.getNumberOfParticipants()))
|
||||
.limit(10)
|
||||
.toList();
|
||||
logger.info("[logger] Nombre d'événements populaires trouvés : " + events.size());
|
||||
return events;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recommande des événements pour un utilisateur spécifique.
|
||||
*
|
||||
* @param user L'utilisateur pour lequel recommander des événements.
|
||||
* @return La liste des événements recommandés.
|
||||
*/
|
||||
public List<Events> recommendEventsForUser(Users user) {
|
||||
logger.info("[logger] Recommandation d'événements pour l'utilisateur : " + user.getEmail());
|
||||
List<Events> events = eventsRepository.find("category", user.getPreferredCategory()).list();
|
||||
logger.info("[logger] Nombre d'événements recommandés pour l'utilisateur : " + events.size());
|
||||
return events;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user