Added duplicate quizz url

This commit is contained in:
Samy Avrillon 2025-06-15 14:41:04 +02:00
parent d411d41cff
commit bbe43cef95
Signed by: Mysaa
GPG Key ID: 0220AC4A3D6A328B
3 changed files with 47 additions and 0 deletions

View File

@ -35,4 +35,5 @@ public interface QuizzManager {
public JsonNode getQuizzFormData(User user, long quizzFormId); public JsonNode getQuizzFormData(User user, long quizzFormId);
public JsonNode getQuizzFormAdvancments(User user, long quizzId); public JsonNode getQuizzFormAdvancments(User user, long quizzId);
public Quizz duplicateQuizz(User user, long quizzId);
} }

View File

@ -521,6 +521,36 @@ public class QuizzManagerImpl implements QuizzManager {
return out; return out;
} }
@Override
public Quizz duplicateQuizz(User u, long quizzId) {
if (!canEditQuizz(u, quizzId))
return null;
Optional<Quizz> oq = qRepository.findById(quizzId);
// CHECKED BEFORE if (oq.isEmpty()) return null;
Quizz q = oq.get();
Quizz nq = new Quizz();
nq.setName(q.getName() + "("+ Integer.toHexString((int)(Math.random()*0xFFFFFFF)) +")");
nq.setOwner(q.getOwner());
nq.setQuestionCount(q.getQuestionCount());
nq.setPublic(q.isPublic());
nq.setComplete(q.isComplete());
nq = qRepository.save(nq);
// We duplicate questions
for (Question qu : q.getQuestions()) {
Question nqu = new Question();
nqu.setIndex(qu.getIndex());
nqu.setType(qu.getType());
nqu.setValue(qu.getValue());
nqu.setQuizz(nq);
questionRepository.save(nqu);
}
return nq;
}
} }

View File

@ -150,6 +150,22 @@ public class QuestionsController {
return new ResponseEntity<>(out, HttpStatus.OK); return new ResponseEntity<>(out, HttpStatus.OK);
} }
/*
* API get the form
*/
@GetMapping("/duplicate-quizz/{id}")
public Object duplicateQuizz(@PathVariable("id") long id, Principal p) {
User u = null;
if (p!=null)
u = ur.findByName(p.getName());
if(u==null)
return "redirect:/login?restricted";
Quizz q = qm.duplicateQuizz(u, id);
if(q == null)
return new ResponseEntity<>(HttpStatus.UNAUTHORIZED);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/form/{q}") @GetMapping("/form/{q}")
public String formpage(@PathVariable("q") long quizzId, Principal p, Model m) { public String formpage(@PathVariable("q") long quizzId, Principal p, Model m) {
if (p==null) if (p==null)