diff --git a/README.md b/README.md index ef9410b..8f1cca2 100644 --- a/README.md +++ b/README.md @@ -10,25 +10,29 @@ |---------|---------------------------------------------------|-------------------------------------------------------| | GET | `/utilisateur` | Retourne toute la liste de l'utilisateur | | POST | `/utilisateur/register` | S'incrire nouveaux utilisateur | -| POST | `/utilisateur/login` | Se connecter | +| GET | `/utilisateur/login` | Se connecter | | GET | `/utilisateur/{id}` | Retourne l'utilisateur par id | | GET | `/utilisateur/{user_id}/session` | Retoune la liste de session que l'utilisateur attends | | PUT | `/utilisateur/{user_id}/add_session/{session_id}` | Ajoute un nouveau session à la liste de l'utilisateur | -| DELETE | `{user_id}/delete` | Supprime l'utilisateur | +| DELETE | `/utilisteur/{user_id}/delete` | Supprime l'utilisateur | #### Session Resource -| Methode | URL | Description | -|----------|------------------------------|------------------------------------| -| GET | `/session` | Retourne toute la liste du session | -| GET | `/session/{id}` | Retourne la session par id | -| GET | `/{session_id}/quizzs` | Retourne la liste de quizzs | -| GET | `/{session_id}/utilisateurs` | Retourne la liste de l'utilisateur | -| DELETE | `/{session_id}/delete` | Supprime la session | +| Methode | URL | Description | +|---------|--------------------------------------|------------------------------------| +| GET | `/session` | Retourne toute la liste du session | +| GET | `/session/{id}` | Retourne la session par id | +| GET | `/session/{session_id}/quizzs` | Retourne la liste de quizzs | +| GET | `/session/{session_id}/utilisateurs` | Retourne la liste de l'utilisateur | +| DELETE | `/session/{session_id}/delete` | Supprime la session | #### Quizz Resource -| Methode | URL | Description | -|----------|----------|----------------------------------| -| GET | `/quizz` | Retourne toute la liste du quizz | +| Methode | URL | Description | +|---------|------------------------------------------------|----------------------------------------| +| GET | `/quizz` | Retourne toute la liste du quizz | +| GET | `/quizz/{quizz_id}/add_question/{question_id}` | Ajoute une nouvuelle question au quizz | +| DELETE | `/quizz/{quizz_id}/delete` | Suprrime le quizz | +| PUT | `/quizz/{quizz_id}/deleteQ` | Supprime toute les questions de quizz | + #### Question Resource diff --git a/src/main/java/fr/istic/taa/jaxrs/DAO/QuizzDAO.java b/src/main/java/fr/istic/taa/jaxrs/DAO/QuizzDAO.java index ca09dd6..fcd6c42 100644 --- a/src/main/java/fr/istic/taa/jaxrs/DAO/QuizzDAO.java +++ b/src/main/java/fr/istic/taa/jaxrs/DAO/QuizzDAO.java @@ -1,5 +1,6 @@ package fr.istic.taa.jaxrs.DAO; +import fr.istic.taa.jaxrs.metier.Question; import jakarta.persistence.EntityTransaction; import fr.istic.taa.jaxrs.metier.Quizz; @@ -9,8 +10,23 @@ public class QuizzDAO extends AbstractJpaDao { this.setClass(Quizz.class); } - public void deleteAllQuiz(){ + public void deleteAllQustion(int quizz_id){ EntityTransaction et= em.getTransaction(); - em.createQuery("delete from Quizz").executeUpdate(); + et.begin(); + Quizz quizz = em.find(Quizz.class, quizz_id); + quizz.getQuestions().clear(); + em.merge(quizz); + et.commit(); + } + + public void addQuestion(int quizz_id, int question_id){ + EntityTransaction et= em.getTransaction(); + et.begin(); + Quizz quizz = em.find(Quizz.class, quizz_id); + Question question =em.find(Question.class, question_id); + + quizz.getQuestions().add(question); + em.merge(quizz); + et.commit(); } } diff --git a/src/main/java/fr/istic/taa/jaxrs/Mapper/QuestionMapper.java b/src/main/java/fr/istic/taa/jaxrs/Mapper/QuestionMapper.java index cc35669..8ed7e57 100644 --- a/src/main/java/fr/istic/taa/jaxrs/Mapper/QuestionMapper.java +++ b/src/main/java/fr/istic/taa/jaxrs/Mapper/QuestionMapper.java @@ -20,6 +20,8 @@ public interface QuestionMapper { Question toEntity(QuestionDTO questionDTO); + List toDTOs(List questionList); + default List question_ReponseString(Reponse reponse){ return reponse.getReponses(); } diff --git a/src/main/java/fr/istic/taa/jaxrs/rest/QuizzResource.java b/src/main/java/fr/istic/taa/jaxrs/rest/QuizzResource.java index ebd7263..eb006ea 100644 --- a/src/main/java/fr/istic/taa/jaxrs/rest/QuizzResource.java +++ b/src/main/java/fr/istic/taa/jaxrs/rest/QuizzResource.java @@ -1,18 +1,25 @@ package fr.istic.taa.jaxrs.rest; +import fr.istic.taa.jaxrs.DAO.QuestionDAO; import fr.istic.taa.jaxrs.DAO.QuizzDAO; +import fr.istic.taa.jaxrs.DTO.QuestionDTO; import fr.istic.taa.jaxrs.DTO.QuizzDTO; +import fr.istic.taa.jaxrs.Mapper.QuestionMapper; import fr.istic.taa.jaxrs.Mapper.QuizzMapper; +import fr.istic.taa.jaxrs.metier.Question; import fr.istic.taa.jaxrs.metier.Quizz; import jakarta.ws.rs.*; import jakarta.ws.rs.core.Response; +import java.util.List; + @Path("quizz") @Consumes({"application/json", "application/xml"}) @Produces({"application/json", "application/xml"}) public class QuizzResource { public final QuizzMapper mapper = QuizzMapper.INSTANCE; public final QuizzDAO quizzDAO= new QuizzDAO(); + public final QuestionDAO questionDAO = new QuestionDAO(); @GET @Path("/{quizz_id}") @@ -25,5 +32,42 @@ public class QuizzResource { return Response.status(Response.Status.OK).entity(dto).build(); } - @ + @GET + @Path("/{quizz_id}/questions") + public Response getQuestions(@PathParam("quizz_id") Integer quizzId) { + Quizz quizz = quizzDAO.findById(quizzId); + if (quizz == null) { + return Response.status(Response.Status.NOT_FOUND).build(); + } + List questionList= quizz.getQuestions(); + List dtos = QuestionMapper.INSTANCE.toDTOs(questionList); + + return Response.status(Response.Status.OK).entity(dtos).build(); + } + + @PUT + @Path("/{quizz_id}/add_question/{question_id}") + public Response addQuestion(@PathParam("quizz_id") Integer quizzId, @PathParam("question_id") Integer questionId) { + Quizz quizz = quizzDAO.findById(quizzId); + Question question = questionDAO.findById(questionId); + if (quizz == null || question == null) { + return Response.status(Response.Status.NOT_FOUND).build(); + } + quizzDAO.addQuestion(quizzId,questionId); + quizzDAO.update(quizz); + QuizzDTO quizzDTO = mapper.toDTO(quizz); + return Response.status(Response.Status.OK).entity(quizzDTO).build(); + } + + @PUT + @Path("/{quizz_id}/deleteQ") + public Response deleteQuestion(@PathParam("quizz_id") Integer quizzId) { + Quizz quizz = quizzDAO.findById(quizzId); + if (quizz == null) { + return Response.status(Response.Status.NOT_FOUND).build(); + } + quizzDAO.deleteAllQustion(quizzId); + quizzDAO.update(quizz); + return Response.status(Response.Status.OK).build(); + } }