Tested methods Utilisateur

/register
/login
/
/{id}
This commit is contained in:
Vu Tuan Minh
2025-09-30 23:19:48 +02:00
parent d18bb21b74
commit 72ecb82a46
16 changed files with 210 additions and 15 deletions

View File

@@ -0,0 +1,4 @@
package fr.istic.taa.jaxrs.rest;
public class QuestionResource {
}

View File

@@ -0,0 +1,4 @@
package fr.istic.taa.jaxrs.rest;
public class QuizzResource {
}

View File

@@ -0,0 +1,4 @@
package fr.istic.taa.jaxrs.rest;
public class ReponseResource {
}

View File

@@ -0,0 +1,4 @@
package fr.istic.taa.jaxrs.rest;
public class SessionResource {
}

View File

@@ -0,0 +1,121 @@
package fr.istic.taa.jaxrs.rest;
import fr.istic.taa.jaxrs.DAO.SessionDAO;
import fr.istic.taa.jaxrs.DAO.UtilisateurDAO;
import fr.istic.taa.jaxrs.DTO.SessionDTO;
import fr.istic.taa.jaxrs.DTO.UtilisateurDTO;
import fr.istic.taa.jaxrs.Mapper.UtilisateurMapper;
import fr.istic.taa.jaxrs.metier.Quizz;
import fr.istic.taa.jaxrs.metier.Reponse;
import fr.istic.taa.jaxrs.metier.Session;
import fr.istic.taa.jaxrs.metier.Utilisateur;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import org.mapstruct.factory.Mappers;
import java.util.Collections;
import java.util.List;
@Path("utilisateur")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class UtilisateurResource {
private final UtilisateurDAO utilisateurDAO = new UtilisateurDAO();
private final UtilisateurMapper mapper = Mappers.getMapper(UtilisateurMapper.class);
@POST
public Response createUtilisateur(UtilisateurDTO dto) {
Utilisateur utilisateur = mapper.toEntity(dto);
utilisateurDAO.create(utilisateur);
UtilisateurDTO result = mapper.toDTO(utilisateur);
return Response.status(Response.Status.CREATED).entity(result).build();
}
@POST
@Path("/register")
public Response registerUtilisateur(UtilisateurDTO dto) {
String email_verification = dto.getEmail();
Utilisateur existing = utilisateurDAO.findByEmail(email_verification);
//VERIFACTION S'IL EXISTE DANS BDD
if (existing != null) {
return Response.status(Response.Status.CONFLICT).entity("Email est déjà registré").build();
}
Utilisateur utilisateur = mapper.toEntity(dto);
utilisateurDAO.create(utilisateur);
return Response.status(Response.Status.CREATED).entity("Registration succès").build();
}
@POST
@Path("/login")
public Response loginUtilisateur(UtilisateurDTO dto) {
Utilisateur utilisateur = utilisateurDAO.findByEmail(dto.getEmail());
if (utilisateur == null) {
return Response.status(Response.Status.NOT_FOUND).entity("Email n'existe pas").build();
} else if (!utilisateur.getPassword().equals(dto.getPassword())) {
return Response.status(Response.Status.UNAUTHORIZED).entity("Mauvais mdp").build();
}
UtilisateurDTO result = mapper.toDTO(utilisateur);
return Response.status(Response.Status.OK).entity(result).build();
}
@GET
@Path("/{id}")
public Response getUtilisateur(@PathParam("id") Integer id) {
Utilisateur utilisateur = utilisateurDAO.findById(id);
if (utilisateur == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
UtilisateurDTO result = mapper.toDTO(utilisateur);
return Response.ok(result).build();
}
@GET
public List<Utilisateur> listUtilisateur() {
List<Utilisateur> utilisateurs = utilisateurDAO.findAll();
return utilisateurs;
}
@PUT
@Path("/{user_id}/session/{session_id}")
public Response addSession(@PathParam("user_id") Integer user_id, @PathParam("session_id") Integer session_id) {
SessionDAO sessionDAO = new SessionDAO();
Session existingSession = sessionDAO.findById(session_id);
Utilisateur utilisateur = utilisateurDAO.findById(user_id);
if (existingSession == null || utilisateur == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
//If user already joined
if (utilisateur.getSession().contains(existingSession)) {
return Response.status(Response.Status.CONFLICT).build();
}
utilisateur.getSession().add(existingSession);
utilisateurDAO.update(utilisateur);
// We update it so have to return new DTO
UtilisateurMapper mapper = Mappers.getMapper(UtilisateurMapper.class);
UtilisateurDTO dto = mapper.toDTO(utilisateur);
return Response.status(Response.Status.OK).entity(dto).build();
}
@GET
@Path("{user_id}/session")
public List<Session> listSession(@PathParam("user_id") Integer user_id) {
Utilisateur utilisateur = utilisateurDAO.findById(user_id);
if (utilisateur == null) {
return Collections.emptyList();
}
return utilisateur.getSession();
}
}