QuizRestController.java
package sk.iway.iwcm.components.quiz.rest;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import sk.iway.iwcm.components.quiz.jpa.QuizEntity;
import sk.iway.iwcm.components.quiz.jpa.QuizQuestionRepository;
import sk.iway.iwcm.components.quiz.jpa.QuizRepository;
import sk.iway.iwcm.components.quiz.jpa.QuizResultRepository;
import sk.iway.iwcm.system.datatable.Datatable;
import sk.iway.iwcm.system.datatable.DatatableRestControllerV2;
@RestController
@RequestMapping("/admin/rest/quiz")
@PreAuthorize("@WebjetSecurityService.hasPermission('cmp_quiz')")
@Datatable
public class QuizRestController extends DatatableRestControllerV2<QuizEntity, Long> {
private final QuizRepository quizRepository;
private final QuizQuestionRepository quizQuestionRepository;
private final QuizResultRepository quizResultRepository;
@Autowired
public QuizRestController(QuizRepository quizRepository, QuizQuestionRepository quizQuestionRepository, QuizResultRepository quizResultRepository) {
super(quizRepository);
this.quizRepository = quizRepository;
this.quizQuestionRepository = quizQuestionRepository;
this.quizResultRepository = quizResultRepository;
}
@Override
public QuizEntity getOneItem(long id) {
if (id < 1) {
QuizEntity quiz = new QuizEntity();
return quiz;
}
return super.getOneItem(id);
}
@Override
public void afterSave(QuizEntity entity, QuizEntity saved) {
Integer oldQuizId = -getUser().getUserId();
Integer newQuizId = saved.getId().intValue();
//Update all quizResults where quizId is -userId
quizResultRepository.updateQuizId(newQuizId, oldQuizId);
//Update all quizQuestion where quizId is -userId
quizQuestionRepository.updateQuizId(newQuizId, oldQuizId);
}
@RequestMapping(value="/quizInfo", params={"quizId"})
public QuizEntity getQuizType(@RequestParam("quizId") int quizId) {
//Default type
if(quizId > 0) {
Optional<QuizEntity> quizOptional = quizRepository.findById(quizId);
if(quizOptional.isPresent()) return quizOptional.get();
}
QuizEntity tmp = new QuizEntity();
tmp.setName("");
tmp.setQuizType("0");
return tmp;
}
}