Refactoring
This commit is contained in:
327
pom.xml
327
pom.xml
@@ -1,173 +1,174 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
<modelVersion>4.0.0</modelVersion>
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
<groupId>com.lions.dev</groupId>
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<artifactId>mic-after-work-server</artifactId>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
<groupId>com.lions.dev</groupId>
|
||||||
|
<artifactId>mic-after-work-server</artifactId>
|
||||||
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<compiler-plugin.version>3.13.0</compiler-plugin.version>
|
<compiler-plugin.version>3.13.0</compiler-plugin.version>
|
||||||
<maven.compiler.release>17</maven.compiler.release>
|
<maven.compiler.release>17</maven.compiler.release>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
|
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
|
||||||
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
|
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
|
||||||
<quarkus.platform.version>3.13.0</quarkus.platform.version>
|
<quarkus.platform.version>3.13.0</quarkus.platform.version>
|
||||||
<skipITs>true</skipITs>
|
<skipITs>true</skipITs>
|
||||||
<surefire-plugin.version>3.2.5</surefire-plugin.version>
|
<surefire-plugin.version>3.2.5</surefire-plugin.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencyManagement>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>${quarkus.platform.group-id}</groupId>
|
|
||||||
<artifactId>${quarkus.platform.artifact-id}</artifactId>
|
|
||||||
<version>${quarkus.platform.version}</version>
|
|
||||||
<type>pom</type>
|
|
||||||
<scope>import</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
</dependencyManagement>
|
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-smallrye-jwt</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.security</groupId>
|
|
||||||
<artifactId>spring-security-core</artifactId>
|
|
||||||
<version>6.3.3</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.fasterxml.jackson.datatype</groupId>
|
|
||||||
<artifactId>jackson-datatype-jsr310</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkiverse.groovy</groupId>
|
|
||||||
<artifactId>quarkus-groovy-junit5</artifactId>
|
|
||||||
<version>3.12.1</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-smallrye-openapi</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-resteasy-reactive-jackson</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-hibernate-orm-panache</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-jdbc-oracle</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-arc</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-hibernate-orm</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-junit5</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>io.rest-assured</groupId>
|
|
||||||
<artifactId>rest-assured</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
<!-- Jakarta Bean Validation -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.hibernate.validator</groupId>
|
|
||||||
<artifactId>hibernate-validator</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.projectlombok</groupId>
|
<groupId>${quarkus.platform.group-id}</groupId>
|
||||||
<artifactId>lombok</artifactId>
|
<artifactId>${quarkus.platform.artifact-id}</artifactId>
|
||||||
<version>1.18.30</version>
|
<version>${quarkus.platform.version}</version>
|
||||||
<scope>provided</scope>
|
<type>pom</type>
|
||||||
|
<scope>import</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
<build>
|
<dependencies>
|
||||||
<plugins>
|
<dependency>
|
||||||
<plugin>
|
<groupId>io.quarkus</groupId>
|
||||||
<groupId>${quarkus.platform.group-id}</groupId>
|
<artifactId>quarkus-smallrye-jwt</artifactId>
|
||||||
<artifactId>quarkus-maven-plugin</artifactId>
|
</dependency>
|
||||||
<version>${quarkus.platform.version}</version>
|
<dependency>
|
||||||
<extensions>true</extensions>
|
<groupId>org.springframework.security</groupId>
|
||||||
<executions>
|
<artifactId>spring-security-core</artifactId>
|
||||||
<execution>
|
<version>6.3.3</version>
|
||||||
<goals>
|
</dependency>
|
||||||
<goal>build</goal>
|
<dependency>
|
||||||
<goal>generate-code</goal>
|
<groupId>com.fasterxml.jackson.datatype</groupId>
|
||||||
<goal>generate-code-tests</goal>
|
<artifactId>jackson-datatype-jsr310</artifactId>
|
||||||
<goal>native-image-agent</goal>
|
</dependency>
|
||||||
</goals>
|
<dependency>
|
||||||
</execution>
|
<groupId>io.quarkiverse.groovy</groupId>
|
||||||
</executions>
|
<artifactId>quarkus-groovy-junit5</artifactId>
|
||||||
</plugin>
|
<version>3.12.1</version>
|
||||||
<plugin>
|
</dependency>
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
<dependency>
|
||||||
<version>${compiler-plugin.version}</version>
|
<groupId>io.quarkus</groupId>
|
||||||
<configuration>
|
<artifactId>quarkus-smallrye-openapi</artifactId>
|
||||||
<compilerArgs>
|
</dependency>
|
||||||
<arg>-parameters</arg>
|
<dependency>
|
||||||
</compilerArgs>
|
<groupId>io.quarkus</groupId>
|
||||||
</configuration>
|
<artifactId>quarkus-rest-jackson</artifactId>
|
||||||
</plugin>
|
</dependency>
|
||||||
<plugin>
|
<dependency>
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<groupId>io.quarkus</groupId>
|
||||||
<version>${surefire-plugin.version}</version>
|
<artifactId>quarkus-hibernate-orm-panache</artifactId>
|
||||||
<configuration>
|
</dependency>
|
||||||
<systemPropertyVariables>
|
<dependency>
|
||||||
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
|
<groupId>io.quarkus</groupId>
|
||||||
<maven.home>${maven.home}</maven.home>
|
<artifactId>quarkus-jdbc-oracle</artifactId>
|
||||||
</systemPropertyVariables>
|
</dependency>
|
||||||
</configuration>
|
<dependency>
|
||||||
</plugin>
|
<groupId>io.quarkus</groupId>
|
||||||
<plugin>
|
<artifactId>quarkus-arc</artifactId>
|
||||||
<artifactId>maven-failsafe-plugin</artifactId>
|
</dependency>
|
||||||
<version>${surefire-plugin.version}</version>
|
<dependency>
|
||||||
<executions>
|
<groupId>io.quarkus</groupId>
|
||||||
<execution>
|
<artifactId>quarkus-hibernate-orm</artifactId>
|
||||||
<goals>
|
</dependency>
|
||||||
<goal>integration-test</goal>
|
<dependency>
|
||||||
<goal>verify</goal>
|
<groupId>io.quarkus</groupId>
|
||||||
</goals>
|
<artifactId>quarkus-junit5</artifactId>
|
||||||
</execution>
|
<scope>test</scope>
|
||||||
</executions>
|
</dependency>
|
||||||
<configuration>
|
<dependency>
|
||||||
<systemPropertyVariables>
|
<groupId>io.rest-assured</groupId>
|
||||||
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
|
<artifactId>rest-assured</artifactId>
|
||||||
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
|
<scope>test</scope>
|
||||||
<maven.home>${maven.home}</maven.home>
|
</dependency>
|
||||||
</systemPropertyVariables>
|
<!-- Jakarta Bean Validation -->
|
||||||
</configuration>
|
<dependency>
|
||||||
</plugin>
|
<groupId>org.hibernate.validator</groupId>
|
||||||
</plugins>
|
<artifactId>hibernate-validator</artifactId>
|
||||||
</build>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>1.18.30</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
<profiles>
|
<build>
|
||||||
<profile>
|
<plugins>
|
||||||
<id>native</id>
|
<plugin>
|
||||||
<activation>
|
<groupId>${quarkus.platform.group-id}</groupId>
|
||||||
<property>
|
<artifactId>quarkus-maven-plugin</artifactId>
|
||||||
<name>native</name>
|
<version>${quarkus.platform.version}</version>
|
||||||
</property>
|
<extensions>true</extensions>
|
||||||
</activation>
|
<executions>
|
||||||
<properties>
|
<execution>
|
||||||
<skipITs>false</skipITs>
|
<goals>
|
||||||
<quarkus.native.enabled>true</quarkus.native.enabled>
|
<goal>build</goal>
|
||||||
</properties>
|
<goal>generate-code</goal>
|
||||||
</profile>
|
<goal>generate-code-tests</goal>
|
||||||
</profiles>
|
<goal>native-image-agent</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>${compiler-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<compilerArgs>
|
||||||
|
<arg>-parameters</arg>
|
||||||
|
</compilerArgs>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<version>${surefire-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<systemPropertyVariables>
|
||||||
|
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
|
||||||
|
<maven.home>${maven.home}</maven.home>
|
||||||
|
</systemPropertyVariables>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-failsafe-plugin</artifactId>
|
||||||
|
<version>${surefire-plugin.version}</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>integration-test</goal>
|
||||||
|
<goal>verify</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<systemPropertyVariables>
|
||||||
|
<native.image.path>${project.build.directory}/${project.build.finalName}-runner
|
||||||
|
</native.image.path>
|
||||||
|
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
|
||||||
|
<maven.home>${maven.home}</maven.home>
|
||||||
|
</systemPropertyVariables>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>native</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>native</name>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<skipITs>false</skipITs>
|
||||||
|
<quarkus.native.enabled>true</quarkus.native.enabled>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ public class Events extends BaseEntity {
|
|||||||
@Column(name = "status", nullable = false)
|
@Column(name = "status", nullable = false)
|
||||||
private String status = "en cours"; // Le statut de l'événement (en cours, terminé, annulé, etc.)
|
private String status = "en cours"; // Le statut de l'événement (en cours, terminé, annulé, etc.)
|
||||||
|
|
||||||
|
@Column(name = "profile_image_url")
|
||||||
|
private String profileImageUrl; // URL de la photo de profil
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.LAZY)
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
@JoinColumn(name = "creator_id", nullable = false)
|
@JoinColumn(name = "creator_id", nullable = false)
|
||||||
private Users creator; // L'utilisateur créateur de l'événement
|
private Users creator; // L'utilisateur créateur de l'événement
|
||||||
|
|||||||
@@ -38,6 +38,9 @@ public class Users extends BaseEntity {
|
|||||||
@Column(name = "role", nullable = false)
|
@Column(name = "role", nullable = false)
|
||||||
private String role; // Le rôle de l'utilisateur (ADMIN, MODERATOR, USER, etc.)
|
private String role; // Le rôle de l'utilisateur (ADMIN, MODERATOR, USER, etc.)
|
||||||
|
|
||||||
|
@Column(name = "profile_image_url")
|
||||||
|
private String profileImageUrl; // L'URL de l'image de profil de l'utilisateur
|
||||||
|
|
||||||
// Utilisation de BCrypt pour hacher les mots de passe de manière sécurisée
|
// Utilisation de BCrypt pour hacher les mots de passe de manière sécurisée
|
||||||
private static final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
|
private static final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,19 @@
|
|||||||
package com.lions.dev.resource;
|
package com.lions.dev.resource;
|
||||||
|
|
||||||
import com.lions.dev.dto.response.events.EventUpdateResponseDTO;
|
import com.lions.dev.service.EventService;
|
||||||
import com.lions.dev.dto.request.events.EventUpdateRequestDTO;
|
|
||||||
import com.lions.dev.entity.users.Users;
|
|
||||||
import com.lions.dev.dto.request.events.EventCreateRequestDTO;
|
|
||||||
import com.lions.dev.dto.response.events.EventCreateResponseDTO;
|
|
||||||
import com.lions.dev.entity.events.Events;
|
|
||||||
import com.lions.dev.repository.EventsRepository;
|
import com.lions.dev.repository.EventsRepository;
|
||||||
import com.lions.dev.repository.UsersRepository; // Ajout du UsersRepository pour gérer les participants
|
import com.lions.dev.dto.request.events.EventCreateRequestDTO;
|
||||||
|
import com.lions.dev.dto.request.events.EventUpdateRequestDTO;
|
||||||
|
import com.lions.dev.dto.response.events.EventCreateResponseDTO;
|
||||||
|
import com.lions.dev.dto.response.events.EventUpdateResponseDTO;
|
||||||
|
import com.lions.dev.entity.events.Events;
|
||||||
|
import com.lions.dev.entity.users.Users;
|
||||||
|
import com.lions.dev.repository.UsersRepository; // Ajout du UsersRepository pour gérer les
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.transaction.Transactional;
|
import jakarta.transaction.Transactional;
|
||||||
import jakarta.ws.rs.*;
|
import jakarta.ws.rs.*;
|
||||||
import jakarta.ws.rs.core.Response;
|
import jakarta.ws.rs.core.Response;
|
||||||
|
import java.io.File; // participants
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@@ -20,10 +22,10 @@ import org.eclipse.microprofile.openapi.annotations.tags.Tag;
|
|||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ressource REST pour la gestion des événements dans le système AfterWork.
|
* Ressource REST pour la gestion des événements dans le système AfterWork. Cette classe expose des
|
||||||
* Cette classe expose des endpoints pour créer, récupérer, et supprimer des événements.
|
* endpoints pour créer, récupérer, et supprimer des événements.
|
||||||
*
|
*
|
||||||
* Tous les logs nécessaires pour la traçabilité sont intégrés.
|
* <p>Tous les logs nécessaires pour la traçabilité sont intégrés.
|
||||||
*/
|
*/
|
||||||
@Path("/events")
|
@Path("/events")
|
||||||
@Produces("application/json")
|
@Produces("application/json")
|
||||||
@@ -35,7 +37,10 @@ public class EventsResource {
|
|||||||
EventsRepository eventsRepository;
|
EventsRepository eventsRepository;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
UsersRepository usersRepository; // Ajout pour la gestion des participants
|
UsersRepository usersRepository; // Ajout pour la gestion des participants
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
EventService eventService;
|
||||||
|
|
||||||
private static final Logger LOG = Logger.getLogger(EventsResource.class);
|
private static final Logger LOG = Logger.getLogger(EventsResource.class);
|
||||||
|
|
||||||
@@ -47,9 +52,12 @@ public class EventsResource {
|
|||||||
*/
|
*/
|
||||||
@POST
|
@POST
|
||||||
@Transactional
|
@Transactional
|
||||||
@Operation(summary = "Créer un nouvel événement", description = "Crée un nouvel événement et retourne ses détails")
|
@Operation(
|
||||||
|
summary = "Créer un nouvel événement",
|
||||||
|
description = "Crée un nouvel événement et retourne ses détails")
|
||||||
public Response createEvent(EventCreateRequestDTO eventCreateRequestDTO) {
|
public Response createEvent(EventCreateRequestDTO eventCreateRequestDTO) {
|
||||||
LOG.info("[LOG] Tentative de création d'un nouvel événement : " + eventCreateRequestDTO.getTitle());
|
LOG.info(
|
||||||
|
"[LOG] Tentative de création d'un nouvel événement : " + eventCreateRequestDTO.getTitle());
|
||||||
|
|
||||||
Events event = new Events();
|
Events event = new Events();
|
||||||
event.setTitle(eventCreateRequestDTO.getTitle());
|
event.setTitle(eventCreateRequestDTO.getTitle());
|
||||||
@@ -77,7 +85,9 @@ public class EventsResource {
|
|||||||
*/
|
*/
|
||||||
@GET
|
@GET
|
||||||
@Path("/{id}")
|
@Path("/{id}")
|
||||||
@Operation(summary = "Récupérer un événement par ID", description = "Retourne les détails de l'événement demandé")
|
@Operation(
|
||||||
|
summary = "Récupérer un événement par ID",
|
||||||
|
description = "Retourne les détails de l'événement demandé")
|
||||||
public Response getEventById(@PathParam("id") UUID id) {
|
public Response getEventById(@PathParam("id") UUID id) {
|
||||||
LOG.info("[LOG] Récupération de l'événement avec l'ID : " + id);
|
LOG.info("[LOG] Récupération de l'événement avec l'ID : " + id);
|
||||||
|
|
||||||
@@ -100,17 +110,22 @@ public class EventsResource {
|
|||||||
*/
|
*/
|
||||||
@GET
|
@GET
|
||||||
@Path("/after-date")
|
@Path("/after-date")
|
||||||
@Operation(summary = "Récupérer les événements après une date", description = "Retourne les événements après une date donnée")
|
@Operation(
|
||||||
|
summary = "Récupérer les événements après une date",
|
||||||
|
description = "Retourne les événements après une date donnée")
|
||||||
public Response getEventsAfterDate(@QueryParam("startDate") LocalDateTime startDate) {
|
public Response getEventsAfterDate(@QueryParam("startDate") LocalDateTime startDate) {
|
||||||
LOG.info("[LOG] Récupération des événements après la date : " + startDate);
|
LOG.info("[LOG] Récupération des événements après la date : " + startDate);
|
||||||
|
|
||||||
List<Events> events = eventsRepository.findEventsAfterDate(startDate);
|
List<Events> events = eventsRepository.findEventsAfterDate(startDate);
|
||||||
if (events.isEmpty()) {
|
if (events.isEmpty()) {
|
||||||
LOG.warn("[LOG] Aucun événement trouvé après la date : " + startDate);
|
LOG.warn("[LOG] Aucun événement trouvé après la date : " + startDate);
|
||||||
return Response.status(Response.Status.NOT_FOUND).entity("Aucun événement trouvé après cette date.").build();
|
return Response.status(Response.Status.NOT_FOUND)
|
||||||
|
.entity("Aucun événement trouvé après cette date.")
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<EventCreateResponseDTO> responseDTOs = events.stream().map(EventCreateResponseDTO::new).toList();
|
List<EventCreateResponseDTO> responseDTOs =
|
||||||
|
events.stream().map(EventCreateResponseDTO::new).toList();
|
||||||
LOG.info("[LOG] Nombre d'événements trouvés après la date : " + events.size());
|
LOG.info("[LOG] Nombre d'événements trouvés après la date : " + events.size());
|
||||||
return Response.ok(responseDTOs).build();
|
return Response.ok(responseDTOs).build();
|
||||||
}
|
}
|
||||||
@@ -124,7 +139,9 @@ public class EventsResource {
|
|||||||
@DELETE
|
@DELETE
|
||||||
@Path("/{id}")
|
@Path("/{id}")
|
||||||
@Transactional
|
@Transactional
|
||||||
@Operation(summary = "Supprimer un événement", description = "Supprime un événement de la base de données")
|
@Operation(
|
||||||
|
summary = "Supprimer un événement",
|
||||||
|
description = "Supprime un événement de la base de données")
|
||||||
public Response deleteEvent(@PathParam("id") UUID id) {
|
public Response deleteEvent(@PathParam("id") UUID id) {
|
||||||
LOG.info("Tentative de suppression de l'événement avec l'ID : " + id);
|
LOG.info("Tentative de suppression de l'événement avec l'ID : " + id);
|
||||||
|
|
||||||
@@ -134,8 +151,7 @@ public class EventsResource {
|
|||||||
return Response.noContent().build();
|
return Response.noContent().build();
|
||||||
} else {
|
} else {
|
||||||
LOG.warn("Échec de la suppression : événement introuvable avec l'ID : " + id);
|
LOG.warn("Échec de la suppression : événement introuvable avec l'ID : " + id);
|
||||||
return Response.status(Response.Status.NOT_FOUND)
|
return Response.status(Response.Status.NOT_FOUND).entity("Événement non trouvé.").build();
|
||||||
.entity("Événement non trouvé.").build();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,15 +165,16 @@ public class EventsResource {
|
|||||||
@POST
|
@POST
|
||||||
@Path("/{id}/participants")
|
@Path("/{id}/participants")
|
||||||
@Transactional
|
@Transactional
|
||||||
@Operation(summary = "Ajouter un participant à un événement", description = "Ajoute un utilisateur à un événement")
|
@Operation(
|
||||||
|
summary = "Ajouter un participant à un événement",
|
||||||
|
description = "Ajoute un utilisateur à un événement")
|
||||||
public Response addParticipant(@PathParam("id") UUID eventId, Users user) {
|
public Response addParticipant(@PathParam("id") UUID eventId, Users user) {
|
||||||
LOG.info("Ajout d'un participant à l'événement : " + eventId);
|
LOG.info("Ajout d'un participant à l'événement : " + eventId);
|
||||||
Events event = eventsRepository.findById(eventId);
|
Events event = eventsRepository.findById(eventId);
|
||||||
|
|
||||||
if (event == null) {
|
if (event == null) {
|
||||||
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
|
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
|
||||||
return Response.status(Response.Status.NOT_FOUND)
|
return Response.status(Response.Status.NOT_FOUND).entity("Événement non trouvé.").build();
|
||||||
.entity("Événement non trouvé.").build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
event.addParticipant(user);
|
event.addParticipant(user);
|
||||||
@@ -176,22 +193,23 @@ public class EventsResource {
|
|||||||
@DELETE
|
@DELETE
|
||||||
@Path("/{id}/participants/{userId}")
|
@Path("/{id}/participants/{userId}")
|
||||||
@Transactional
|
@Transactional
|
||||||
@Operation(summary = "Retirer un participant d'un événement", description = "Supprime un utilisateur de la liste des participants d'un événement")
|
@Operation(
|
||||||
public Response removeParticipant(@PathParam("id") UUID eventId, @PathParam("userId") UUID userId) {
|
summary = "Retirer un participant d'un événement",
|
||||||
|
description = "Supprime un utilisateur de la liste des participants d'un événement")
|
||||||
|
public Response removeParticipant(
|
||||||
|
@PathParam("id") UUID eventId, @PathParam("userId") UUID userId) {
|
||||||
LOG.info("Retrait d'un participant de l'événement : " + eventId);
|
LOG.info("Retrait d'un participant de l'événement : " + eventId);
|
||||||
Events event = eventsRepository.findById(eventId);
|
Events event = eventsRepository.findById(eventId);
|
||||||
|
|
||||||
if (event == null) {
|
if (event == null) {
|
||||||
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
|
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
|
||||||
return Response.status(Response.Status.NOT_FOUND)
|
return Response.status(Response.Status.NOT_FOUND).entity("Événement non trouvé.").build();
|
||||||
.entity("Événement non trouvé.").build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Users user = usersRepository.findById(userId);
|
Users user = usersRepository.findById(userId);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
LOG.warn("Utilisateur non trouvé avec l'ID : " + userId);
|
LOG.warn("Utilisateur non trouvé avec l'ID : " + userId);
|
||||||
return Response.status(Response.Status.NOT_FOUND)
|
return Response.status(Response.Status.NOT_FOUND).entity("Utilisateur non trouvé.").build();
|
||||||
.entity("Utilisateur non trouvé.").build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
event.removeParticipant(user);
|
event.removeParticipant(user);
|
||||||
@@ -208,15 +226,16 @@ public class EventsResource {
|
|||||||
*/
|
*/
|
||||||
@GET
|
@GET
|
||||||
@Path("/{id}/participants/count")
|
@Path("/{id}/participants/count")
|
||||||
@Operation(summary = "Obtenir le nombre de participants à un événement", description = "Retourne le nombre total de participants à un événement")
|
@Operation(
|
||||||
|
summary = "Obtenir le nombre de participants à un événement",
|
||||||
|
description = "Retourne le nombre total de participants à un événement")
|
||||||
public Response getNumberOfParticipants(@PathParam("id") UUID eventId) {
|
public Response getNumberOfParticipants(@PathParam("id") UUID eventId) {
|
||||||
LOG.info("Récupération du nombre de participants pour l'événement : " + eventId);
|
LOG.info("Récupération du nombre de participants pour l'événement : " + eventId);
|
||||||
Events event = eventsRepository.findById(eventId);
|
Events event = eventsRepository.findById(eventId);
|
||||||
|
|
||||||
if (event == null) {
|
if (event == null) {
|
||||||
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
|
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
|
||||||
return Response.status(Response.Status.NOT_FOUND)
|
return Response.status(Response.Status.NOT_FOUND).entity("Événement non trouvé.").build();
|
||||||
.entity("Événement non trouvé.").build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int participantCount = event.getNumberOfParticipants();
|
int participantCount = event.getNumberOfParticipants();
|
||||||
@@ -233,15 +252,16 @@ public class EventsResource {
|
|||||||
@POST
|
@POST
|
||||||
@Path("/{id}/close")
|
@Path("/{id}/close")
|
||||||
@Transactional
|
@Transactional
|
||||||
@Operation(summary = "Fermer un événement", description = "Ferme un événement et empêche les nouvelles participations")
|
@Operation(
|
||||||
|
summary = "Fermer un événement",
|
||||||
|
description = "Ferme un événement et empêche les nouvelles participations")
|
||||||
public Response closeEvent(@PathParam("id") UUID eventId) {
|
public Response closeEvent(@PathParam("id") UUID eventId) {
|
||||||
LOG.info("Tentative de fermeture de l'événement avec l'ID : " + eventId);
|
LOG.info("Tentative de fermeture de l'événement avec l'ID : " + eventId);
|
||||||
Events event = eventsRepository.findById(eventId);
|
Events event = eventsRepository.findById(eventId);
|
||||||
|
|
||||||
if (event == null) {
|
if (event == null) {
|
||||||
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
|
LOG.warn("Événement non trouvé avec l'ID : " + eventId);
|
||||||
return Response.status(Response.Status.NOT_FOUND)
|
return Response.status(Response.Status.NOT_FOUND).entity("Événement non trouvé.").build();
|
||||||
.entity("Événement non trouvé.").build();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
event.setClosed(true); // Marquer l'événement comme fermé
|
event.setClosed(true); // Marquer l'événement comme fermé
|
||||||
@@ -261,7 +281,8 @@ public class EventsResource {
|
|||||||
@Path("/{id}")
|
@Path("/{id}")
|
||||||
@Transactional
|
@Transactional
|
||||||
@Operation(summary = "Mettre à jour un événement", description = "Modifie un événement existant")
|
@Operation(summary = "Mettre à jour un événement", description = "Modifie un événement existant")
|
||||||
public Response updateEvent(@PathParam("id") UUID id, EventUpdateRequestDTO eventUpdateRequestDTO) {
|
public Response updateEvent(
|
||||||
|
@PathParam("id") UUID id, EventUpdateRequestDTO eventUpdateRequestDTO) {
|
||||||
LOG.info("[LOG] Tentative de mise à jour de l'événement avec l'ID : " + id);
|
LOG.info("[LOG] Tentative de mise à jour de l'événement avec l'ID : " + id);
|
||||||
|
|
||||||
Events event = eventsRepository.findById(id);
|
Events event = eventsRepository.findById(id);
|
||||||
@@ -287,4 +308,51 @@ public class EventsResource {
|
|||||||
return Response.ok(responseDTO).build();
|
return Response.ok(responseDTO).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Endpoint pour mettre à jour l'image d'un événement.
|
||||||
|
*
|
||||||
|
* @param id L'identifiant de l'événement.
|
||||||
|
* @param imageFilePath Le chemin vers l'image de l'événement.
|
||||||
|
* @return Un message indiquant si la mise à jour a réussi ou non.
|
||||||
|
*/
|
||||||
|
@PUT
|
||||||
|
@jakarta.ws.rs.Path("/{id}/image")
|
||||||
|
public String updateEventImage(@PathParam("id") UUID id, String imageFilePath) {
|
||||||
|
try {
|
||||||
|
// Vérification si le chemin d'image est vide ou null
|
||||||
|
if (imageFilePath == null || imageFilePath.isEmpty()) {
|
||||||
|
System.out.println("[ERROR] Le chemin de l'image est vide ou null.");
|
||||||
|
return "Le chemin de l'image est vide ou null.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Utiliser File pour vérifier si le fichier existe
|
||||||
|
File file = new File(imageFilePath);
|
||||||
|
if (!file.exists()) {
|
||||||
|
System.out.println("[ERROR] Le fichier spécifié n'existe pas : " + imageFilePath);
|
||||||
|
return "Le fichier spécifié n'existe pas.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Récupérer l'événement par son ID
|
||||||
|
Events event = eventService.getEventById(id);
|
||||||
|
if (event == null) {
|
||||||
|
System.out.println("[ERROR] Événement non trouvé avec l'ID : " + id);
|
||||||
|
return "Événement non trouvé.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mettre à jour l'URL de l'image de l'événement
|
||||||
|
String imageUrl = file.getAbsolutePath(); // Obtenir le chemin complet du fichier
|
||||||
|
event.setImageUrl(imageUrl);
|
||||||
|
|
||||||
|
// Mise à jour de l'événement
|
||||||
|
eventService.updateEvent(event);
|
||||||
|
System.out.println(
|
||||||
|
"[LOG] Image de l'événement mise à jour avec succès pour : " + event.getTitle());
|
||||||
|
|
||||||
|
return "Image de l'événement mise à jour avec succès.";
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println(
|
||||||
|
"[ERROR] Erreur lors de la mise à jour de l'image de l'événement : " + e.getMessage());
|
||||||
|
return "Erreur lors de la mise à jour de l'image de l'événement.";
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
36
src/main/java/com/lions/dev/resource/FileUploadResource.java
Normal file
36
src/main/java/com/lions/dev/resource/FileUploadResource.java
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package com.lions.dev.resource;
|
||||||
|
|
||||||
|
import com.lions.dev.service.FileService;
|
||||||
|
import jakarta.ws.rs.Consumes;
|
||||||
|
import jakarta.ws.rs.POST;
|
||||||
|
import jakarta.ws.rs.Path;
|
||||||
|
import jakarta.ws.rs.core.MediaType;
|
||||||
|
import jakarta.ws.rs.core.Response;
|
||||||
|
import org.jboss.logging.Logger;
|
||||||
|
import org.jboss.resteasy.reactive.RestForm;
|
||||||
|
import org.jboss.resteasy.reactive.multipart.FileUpload;
|
||||||
|
import jakarta.inject.Inject;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@Path("/upload")
|
||||||
|
public class FileUploadResource {
|
||||||
|
|
||||||
|
private static final Logger LOG = Logger.getLogger(FileUploadResource.class);
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
FileService fileService;
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Consumes(MediaType.MULTIPART_FORM_DATA)
|
||||||
|
public Response uploadFile(@RestForm("file") FileUpload file) {
|
||||||
|
String uploadDir = "/tmp/uploads/";
|
||||||
|
|
||||||
|
try {
|
||||||
|
Path savedFilePath = (jakarta.ws.rs.Path) fileService.saveFile(file.uploadedFile(), uploadDir, file.fileName());
|
||||||
|
return Response.ok("Fichier uploadé avec succès : " + savedFilePath).build();
|
||||||
|
} catch (IOException e) {
|
||||||
|
LOG.error("Erreur lors de l'upload du fichier", e);
|
||||||
|
return Response.serverError().entity("Erreur lors de l'upload du fichier.").build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
package com.lions.dev.resource;
|
package com.lions.dev.resource;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import jakarta.ws.rs.Path;
|
||||||
import com.lions.dev.dto.request.users.UserAuthenticateRequestDTO;
|
import com.lions.dev.dto.request.users.UserAuthenticateRequestDTO;
|
||||||
import com.lions.dev.dto.response.users.UserAuthenticateResponseDTO;
|
import com.lions.dev.dto.response.users.UserAuthenticateResponseDTO;
|
||||||
import com.lions.dev.dto.response.users.UserDeleteResponseDto;
|
import com.lions.dev.dto.response.users.UserDeleteResponseDto;
|
||||||
@@ -14,6 +17,7 @@ import org.eclipse.microprofile.openapi.annotations.Operation;
|
|||||||
import org.eclipse.microprofile.openapi.annotations.tags.Tag;
|
import org.eclipse.microprofile.openapi.annotations.tags.Tag;
|
||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ressource REST pour la gestion des utilisateurs dans le système AfterWork. Cette classe expose
|
* Ressource REST pour la gestion des utilisateurs dans le système AfterWork. Cette classe expose
|
||||||
* des endpoints pour créer, authentifier, récupérer et supprimer des utilisateurs.
|
* des endpoints pour créer, authentifier, récupérer et supprimer des utilisateurs.
|
||||||
@@ -26,7 +30,8 @@ import org.jboss.logging.Logger;
|
|||||||
@Tag(name = "Users", description = "Opérations liées à la gestion des utilisateurs")
|
@Tag(name = "Users", description = "Opérations liées à la gestion des utilisateurs")
|
||||||
public class UsersResource {
|
public class UsersResource {
|
||||||
|
|
||||||
@Inject UserService userService;
|
@Inject
|
||||||
|
UserService userService;
|
||||||
|
|
||||||
private static final Logger LOG = Logger.getLogger(UsersResource.class);
|
private static final Logger LOG = Logger.getLogger(UsersResource.class);
|
||||||
|
|
||||||
@@ -145,4 +150,45 @@ public class UsersResource {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Endpoint pour mettre à jour l'image de profil de l'utilisateur.
|
||||||
|
*
|
||||||
|
* @param id L'identifiant de l'utilisateur.
|
||||||
|
* @param imageFilePath Le chemin vers l'image de profil.
|
||||||
|
* @return Un message indiquant si la mise à jour a réussi.
|
||||||
|
*/
|
||||||
|
@PUT
|
||||||
|
@jakarta.ws.rs.Path("/{id}/profile-image") // Annotation REST avec jakarta.ws.rs.Path
|
||||||
|
public String updateUserProfileImage(@PathParam("id") UUID id, String imageFilePath) {
|
||||||
|
try {
|
||||||
|
// Utiliser File au lieu de Path pour vérifier si le fichier existe
|
||||||
|
File file = new File(imageFilePath);
|
||||||
|
if (!file.exists()) {
|
||||||
|
System.out.println("[ERROR] Le fichier spécifié n'existe pas : " + imageFilePath);
|
||||||
|
return "Le fichier spécifié n'existe pas.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Récupérer l'utilisateur par son ID
|
||||||
|
Users user = userService.getUserById(id);
|
||||||
|
if (user == null) {
|
||||||
|
System.out.println("[ERROR] Utilisateur non trouvé avec l'ID : " + id);
|
||||||
|
return "Utilisateur non trouvé.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mettre à jour l'URL de l'image de profil
|
||||||
|
String profileImageUrl = file.getAbsolutePath(); // Obtenir le chemin complet du fichier
|
||||||
|
user.setProfileImageUrl(profileImageUrl);
|
||||||
|
|
||||||
|
// Mise à jour de l'utilisateur
|
||||||
|
userService.updateUser(user);
|
||||||
|
System.out.println("[LOG] Image de profil mise à jour pour l'utilisateur : " + user.getEmail());
|
||||||
|
|
||||||
|
return "Image de profil mise à jour avec succès.";
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("[ERROR] Erreur lors de la mise à jour de l'image de profil : " + e.getMessage());
|
||||||
|
return "Erreur lors de la mise à jour de l'image de profil.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,4 +98,34 @@ public class EventService {
|
|||||||
}
|
}
|
||||||
return deleted;
|
return deleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Met à jour un événement dans le système.
|
||||||
|
*
|
||||||
|
* @param event L'événement à mettre à jour.
|
||||||
|
* @return L'événement mis à jour.
|
||||||
|
*/
|
||||||
|
@Transactional
|
||||||
|
public Events updateEvent(Events event) {
|
||||||
|
Events existingEvent = eventsRepository.findById(event.getId());
|
||||||
|
if (existingEvent == null) {
|
||||||
|
logger.error("[ERROR] Événement non trouvé avec l'ID : {}", event.getId());
|
||||||
|
throw new EventNotFoundException(event.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mettre à jour les détails de l'événement
|
||||||
|
existingEvent.setTitle(event.getTitle());
|
||||||
|
existingEvent.setDescription(event.getDescription());
|
||||||
|
existingEvent.setStartDate(event.getStartDate());
|
||||||
|
existingEvent.setEndDate(event.getEndDate());
|
||||||
|
existingEvent.setLocation(event.getLocation());
|
||||||
|
existingEvent.setCategory(event.getCategory());
|
||||||
|
existingEvent.setLink(event.getLink());
|
||||||
|
existingEvent.setImageUrl(event.getImageUrl());
|
||||||
|
existingEvent.setStatus(event.getStatus());
|
||||||
|
|
||||||
|
eventsRepository.persist(existingEvent);
|
||||||
|
logger.info("[LOG] Événement mis à jour avec succès : {}", existingEvent.getTitle());
|
||||||
|
return existingEvent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
35
src/main/java/com/lions/dev/service/FileService.java
Normal file
35
src/main/java/com/lions/dev/service/FileService.java
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
package com.lions.dev.service;
|
||||||
|
|
||||||
|
import org.jboss.logging.Logger;
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Service pour la gestion des fichiers uploadés.
|
||||||
|
* Ce service permet de sauvegarder et gérer les fichiers uploadés sur le serveur.
|
||||||
|
*/
|
||||||
|
@ApplicationScoped
|
||||||
|
public class FileService {
|
||||||
|
|
||||||
|
private static final Logger LOG = Logger.getLogger(FileService.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sauvegarde le fichier uploadé sur le serveur.
|
||||||
|
*
|
||||||
|
* @param uploadedFilePath Le chemin temporaire du fichier uploadé.
|
||||||
|
* @param destinationDir Le répertoire de destination où sauvegarder le fichier.
|
||||||
|
* @param fileName Le nom du fichier.
|
||||||
|
* @return Le chemin complet du fichier sauvegardé.
|
||||||
|
* @throws IOException Si une erreur survient lors de la sauvegarde.
|
||||||
|
*/
|
||||||
|
public Path saveFile(Path uploadedFilePath, String destinationDir, String fileName) throws IOException {
|
||||||
|
Path destination = Paths.get(destinationDir, fileName);
|
||||||
|
Files.createDirectories(Paths.get(destinationDir)); // Crée le répertoire s'il n'existe pas
|
||||||
|
Files.copy(uploadedFilePath, destination); // Copie le fichier vers sa destination
|
||||||
|
LOG.info("Fichier sauvegardé avec succès : " + destination);
|
||||||
|
return destination;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -43,6 +43,37 @@ public class UserService {
|
|||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Met à jour un utilisateur existant dans le système.
|
||||||
|
*
|
||||||
|
* @param user L'utilisateur à mettre à jour.
|
||||||
|
* @return L'utilisateur mis à jour.
|
||||||
|
*/
|
||||||
|
public Users updateUser(Users user) {
|
||||||
|
try {
|
||||||
|
Users existingUser = usersRepository.findById(user.getId());
|
||||||
|
if (existingUser == null) {
|
||||||
|
System.out.println("[ERROR] Utilisateur non trouvé pour la mise à jour avec l'ID : " + user.getId());
|
||||||
|
throw new UserNotFoundException("Utilisateur non trouvé avec l'ID : " + user.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Mettre à jour les champs de l'utilisateur existant
|
||||||
|
existingUser.setNom(user.getNom());
|
||||||
|
existingUser.setPrenoms(user.getPrenoms());
|
||||||
|
existingUser.setEmail(user.getEmail());
|
||||||
|
existingUser.setMotDePasse(user.getMotDePasse()); // Hachage automatique si nécessaire
|
||||||
|
existingUser.setRole(user.getRole());
|
||||||
|
|
||||||
|
usersRepository.persist(existingUser);
|
||||||
|
System.out.println("[LOG] Utilisateur mis à jour avec succès : " + existingUser.getEmail());
|
||||||
|
return existingUser;
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("[ERROR] Erreur lors de la mise à jour de l'utilisateur : " + e.getMessage());
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Authentifie un utilisateur avec son email et son mot de passe.
|
* Authentifie un utilisateur avec son email et son mot de passe.
|
||||||
*
|
*
|
||||||
@@ -93,4 +124,6 @@ public class UserService {
|
|||||||
}
|
}
|
||||||
return deleted;
|
return deleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,3 +27,8 @@ quarkus.log.level=INFO
|
|||||||
# smallrye.jwt.sign.key.location=META-INF/resources/privateKey.pem
|
# smallrye.jwt.sign.key.location=META-INF/resources/privateKey.pem
|
||||||
# smallrye.jwt.sign.key.algorithm=RS256
|
# smallrye.jwt.sign.key.algorithm=RS256
|
||||||
# smallrye.jwt.token.lifetime=3600
|
# smallrye.jwt.token.lifetime=3600
|
||||||
|
|
||||||
|
# Activer le support multipart
|
||||||
|
quarkus.http.body.uploads-directory=/tmp/uploads
|
||||||
|
quarkus.http.body.multipart.max-file-size=10M
|
||||||
|
quarkus.http.body.multipart.max-request-size=15M
|
||||||
|
|||||||
Reference in New Issue
Block a user