From 655971a000436b6f19d2c89de40da9cb5a9c3143 Mon Sep 17 00:00:00 2001 From: Samy Avrillon Date: Tue, 17 Jun 2025 01:12:14 +0200 Subject: [PATCH] Download json --- .../bernard/misael/service/QuizzManager.java | 3 +- .../misael/service/QuizzManagerImpl.java | 43 +++++++++++++++++++ .../misael/web/QuestionsController.java | 14 ++++++ 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/bernard/misael/service/QuizzManager.java b/src/main/java/com/bernard/misael/service/QuizzManager.java index e9cae20..5484658 100644 --- a/src/main/java/com/bernard/misael/service/QuizzManager.java +++ b/src/main/java/com/bernard/misael/service/QuizzManager.java @@ -23,7 +23,7 @@ public interface QuizzManager { public boolean canEditQuizz(User user, long quizzId); public Optional canViewQuizzForm(User user, long quizzFormId); public Optional canViewQuizzFormsOfQuizz(User user, long quizzId); - + public JsonNode getQuizzInfo(User user, long quizzId); public JsonNode setQuizzName(User user, long quizzId, String newName); public JsonNode addQuestion(User user, long quizzId); @@ -33,6 +33,7 @@ public interface QuizzManager { public JsonNode setQuestionType(User user, long quizzId, long questionId, QTypes type); public JsonNode getQuizzFormData(User user, long quizzFormId); + public JsonNode getAllFormsData(User u, long id); public JsonNode getQuizzFormAdvancments(User user, long quizzId); public Quizz duplicateQuizz(User user, long quizzId); diff --git a/src/main/java/com/bernard/misael/service/QuizzManagerImpl.java b/src/main/java/com/bernard/misael/service/QuizzManagerImpl.java index 19aca16..115d888 100644 --- a/src/main/java/com/bernard/misael/service/QuizzManagerImpl.java +++ b/src/main/java/com/bernard/misael/service/QuizzManagerImpl.java @@ -498,6 +498,49 @@ public class QuizzManagerImpl implements QuizzManager { return out; } + @Override + public JsonNode getAllFormsData(User u, long quizzId) { + Optional oq = canViewQuizzFormsOfQuizz(u, quizzId); + if(oq.isEmpty()) + return errorNode("Could not access the quizzform"); //TODO more precise error node + Quizz quizz = oq.get(); + ObjectNode out = JsonNodeFactory.instance.objectNode(); + out.set("id",JsonNodeFactory.instance.numberNode(quizz.getId())); + out.set("name",JsonNodeFactory.instance.textNode(quizz.getName())); + + ArrayNode questionNode = JsonNodeFactory.instance.arrayNode(quizz.getQuestionCount()); + List questions = quizz.getQuestions().stream().sorted((p,q) -> Integer.valueOf(p.getIndex()).compareTo(q.getIndex())).toList(); + for(int i=0;i answers = answerRepository.findByFormAndQuestionIn(qf, questions); + ArrayNode answersNode = JsonNodeFactory.instance.arrayNode(); + for(int i=0;i oq = canViewQuizzFormsOfQuizz(user, quizzId); diff --git a/src/main/java/com/bernard/misael/web/QuestionsController.java b/src/main/java/com/bernard/misael/web/QuestionsController.java index e6b816d..1bdd9d8 100644 --- a/src/main/java/com/bernard/misael/web/QuestionsController.java +++ b/src/main/java/com/bernard/misael/web/QuestionsController.java @@ -135,6 +135,20 @@ public class QuestionsController { return new ResponseEntity<>(out, HttpStatus.OK); } + /* + * API get the forms for a specific quizz + */ + @GetMapping("/getallformsdata/{id}") + public Object getAllFormsData(@PathVariable("id") long id, Principal p) { + User u = null; + if (p!=null) + u = ur.findByName(p.getName()); + if(u==null) + return "redirect:/login?restricted"; + JsonNode out = qm.getAllFormsData(u, id); + return new ResponseEntity<>(out, HttpStatus.OK); + } + /* * API get the form */