diff --git a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java index 270f0c74a7dd75caff54f84ffa8469cd5fe88fe2..a26dc791ca87297e75f9efee72864026337f4e84 100644 --- a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java +++ b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java @@ -355,6 +355,15 @@ public class LecturerQuestionController extends AbstractController { questionService.deleteAnswers(questionId); } + @RequestMapping(value = "/answers", method = RequestMethod.DELETE) + @ResponseBody + public final void deleteAllQuestionsAnswers( + @RequestParam final String sessionkey, + final HttpServletResponse response + ) { + questionService.deleteAllQuestionsAnswers(sessionkey); + } + /** * * @param sessionKey diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 2ff0351e8b3193a7e86efd8b58b26f0408f994cf..86cd527193578d1c202565f1b667988125a41dd4 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1330,4 +1330,12 @@ public class CouchDBDao implements IDatabaseDao { LOGGER.error("Could not bulk publish all questions: {}", e.getMessage()); } } + + @Override + public void deleteAllQuestionsAnswers(Session session) { + List<Question> questions = this.getQuestions(new NovaView("skill_question/by_session"), session); + for (Question q : questions) { + this.deleteAnswers(q); + } + } } diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 480894184313e175d1d10987d97f84e04a9d8090..2a99de4f68b2811d3fa787b91e6f530c613c51da 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -159,4 +159,6 @@ public interface IDatabaseDao { void deleteAllInterposedQuestions(Session session); void publishAllQuestions(Session session, boolean publish); + + void deleteAllQuestionsAnswers(Session session); } diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java index fc1dd89cce44b07f35372fb1d446c2c2e1a66ca9..b26aecf438ddd145b8c432772a737c4010359d23 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -109,4 +109,6 @@ public interface IQuestionService { void publishAll(String sessionkey, boolean publish); + void deleteAllQuestionsAnswers(String sessionkey); + } diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java index fc78d6fcb7f93a202d0a1f7b85b7f1b614c5e48b..7252f5cf5369aa5512a07df13873f135b445046b 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -512,4 +512,15 @@ public class QuestionService implements IQuestionService { } databaseDao.publishAllQuestions(session, publish); } + + @Override + @Authenticated + public void deleteAllQuestionsAnswers(String sessionkey) { + User user = getCurrentUser(); + Session session = getSession(sessionkey); + if (!session.isCreator(user)) { + throw new ForbiddenException(); + } + databaseDao.deleteAllQuestionsAnswers(session); + } } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index dc593e897a178c4b5ee24c9e9cb34b8e644db375..f8a9d63d1b59ccaeeaee74d6fe03677f67a864c2 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -491,4 +491,10 @@ public class StubDatabaseDao implements IDatabaseDao { // TODO Auto-generated method stub } + + @Override + public void deleteAllQuestionsAnswers(Session session) { + // TODO Auto-generated method stub + + } }