package fr.istic.taa.jaxrs.rest; import fr.istic.taa.jaxrs.DAO.SessionDAO; import fr.istic.taa.jaxrs.DTO.QuizzDTO; import fr.istic.taa.jaxrs.DTO.SessionDTO; import fr.istic.taa.jaxrs.DTO.UtilisateurDTO; import fr.istic.taa.jaxrs.Mapper.QuizzMapper; import fr.istic.taa.jaxrs.Mapper.SessionMapper; import fr.istic.taa.jaxrs.Mapper.UtilisateurMapper; import fr.istic.taa.jaxrs.metier.Session; import fr.istic.taa.jaxrs.metier.Utilisateur; import jakarta.ws.rs.*; import jakarta.ws.rs.core.Response; import java.util.List; @Path("session") @Consumes({"application/json", "application/xml"}) @Produces({"application/json", "application/xml"}) public class SessionResource { private final SessionDAO sessionDAO = new SessionDAO(); private final SessionMapper mapper = SessionMapper.INSTANCE; @GET public List listSession() { List sessions = sessionDAO.findAll(); return sessions; } @GET @Path("/{id}") public Response getSession(@PathParam("id") Integer id) { Session session = sessionDAO.findById(id); if (session == null) { return Response.status(Response.Status.NOT_FOUND).build(); } SessionDTO result = mapper.toDTO(session); return Response.status(Response.Status.OK).entity(result).build(); } @GET @Path("/{session_id}/quizzs") public Response getQuizzs(@PathParam("session_id") Integer sessionId) { Session session = sessionDAO.findById(sessionId); if (session == null) { return Response.status(Response.Status.NOT_FOUND).build(); } List results= QuizzMapper.INSTANCE.toDTOs(session.getQuizzs()); return Response.status(Response.Status.OK).entity(results).build(); } @GET @Path("/{session_id}/utilisateurs") public Response getUtilisateurs(@PathParam("session_id") Integer sessionId) { Session session = sessionDAO.findById(sessionId); if (session == null) { return Response.status(Response.Status.NOT_FOUND).build(); } List utilisateurList= session.getUtilisateurs(); List dtos= UtilisateurMapper.INSTANCE.toDTOs(utilisateurList); return Response.status(Response.Status.OK).entity(dtos).build(); } @DELETE @Path("/{session_id}/delete") public Response deleteSession(@PathParam("session_id") Integer sessionId) { Session session = sessionDAO.findById(sessionId); if (session == null) { return Response.status(Response.Status.NOT_FOUND).build(); } sessionDAO.delete(session); return Response.status(Response.Status.OK).entity("Réussi de supprimer").build(); } }