diff --git a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java index 97ebdd9effc5f7ca2191cd6c65d425961d098299..5042f201c39731c97f1d21551311ff24f58fc196 100644 --- a/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java +++ b/src/main/java/de/thm/arsnova/controller/LecturerQuestionController.java @@ -366,11 +366,19 @@ public class LecturerQuestionController extends AbstractController { @ResponseBody public final int getTotalAnswerCount( @RequestParam final String sessionkey, + @RequestParam(value = "lecturequestionsonly", defaultValue = "false") final boolean lectureQuestionsOnly, + @RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationQuestionsOnly, final HttpServletResponse response ) { response.addHeader("X-Deprecated-API", "1"); - return questionService.getTotalAnswerCount(sessionkey); + if (lectureQuestionsOnly) { + return questionService.countLectureQuestionAnswers(sessionkey); + } else if (preparationQuestionsOnly) { + return questionService.countPreparationQuestionAnswers(sessionkey); + } else { + return questionService.getTotalAnswerCount(sessionkey); + } } } diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java index 2a7df949a57cd6be857ac8b6374f098849f24d21..e612893e72429ae1a3a2c10e6b77ffe0edf6dc43 100644 --- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java +++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java @@ -1197,4 +1197,24 @@ public class CouchDBDao implements IDatabaseDao { } return results.getJSONArray("rows").optJSONObject(0).optInt("value"); } + + @Override + public int countLectureQuestionAnswers(Session session) { + return countQuestionVariantAnswers(session, "lecture"); + } + + @Override + public int countPreparationQuestionAnswers(Session session) { + return countQuestionVariantAnswers(session, "preparation"); + } + + private int countQuestionVariantAnswers(Session session, String variant) { + NovaView view = new NovaView("skill_question/count_answers_by_session_and_question_variant"); + view.setKey(session.get_id(), variant); + ViewResults results = this.getDatabase().view(view); + if (results.getResults().size() == 0) { + return 0; + } + return results.getJSONArray("rows").optJSONObject(0).optInt("value"); + } } diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java index 91260a0a13b3f346aafcf0586f2f46e75e11f6af..897e09ee6e8e27d7487a44a604d88e56e1248a55 100644 --- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java +++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java @@ -141,4 +141,8 @@ public interface IDatabaseDao { int getFlashcardCount(Session session); int getPreparationQuestionCount(Session session); + + int countLectureQuestionAnswers(Session session); + + int countPreparationQuestionAnswers(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 dddd5031260f6ef3b987f9315006cd999a82f7bb..33239d8e0c44bf2f8377d008895414aee0c0d17c 100644 --- a/src/main/java/de/thm/arsnova/services/IQuestionService.java +++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java @@ -91,4 +91,8 @@ public interface IQuestionService { int getPreparationQuestionCount(String sessionkey); + int countLectureQuestionAnswers(String sessionkey); + + int countPreparationQuestionAnswers(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 8f15e86092f683ed6a93b8e80fe50cc9db8881e4..2162802b49c1f270762d4495d8f1457855b97a67 100644 --- a/src/main/java/de/thm/arsnova/services/QuestionService.java +++ b/src/main/java/de/thm/arsnova/services/QuestionService.java @@ -35,7 +35,6 @@ import de.thm.arsnova.entities.InterposedReadingCount; import de.thm.arsnova.entities.Question; import de.thm.arsnova.entities.Session; import de.thm.arsnova.entities.User; -import de.thm.arsnova.exceptions.NoContentException; import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.exceptions.UnauthorizedException; import de.thm.arsnova.socket.ARSnovaSocketIOServer; @@ -434,4 +433,16 @@ public class QuestionService implements IQuestionService { public int getPreparationQuestionCount(String sessionkey) { return databaseDao.getPreparationQuestionCount(getSession(sessionkey)); } + + @Override + @Authenticated + public int countLectureQuestionAnswers(String sessionkey) { + return databaseDao.countLectureQuestionAnswers(getSession(sessionkey)); + } + + @Override + @Authenticated + public int countPreparationQuestionAnswers(String sessionkey) { + return databaseDao.countPreparationQuestionAnswers(getSession(sessionkey)); + } } diff --git a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java index 94ac7ec32b59d15362f3c121cd1f4c966b809ffb..c5c5cdc620487f62c8dd4cc6aab743f47f456b04 100644 --- a/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java +++ b/src/test/java/de/thm/arsnova/dao/StubDatabaseDao.java @@ -439,4 +439,16 @@ public class StubDatabaseDao implements IDatabaseDao { // TODO Auto-generated method stub return 0; } + + @Override + public int countLectureQuestionAnswers(Session session) { + // TODO Auto-generated method stub + return 0; + } + + @Override + public int countPreparationQuestionAnswers(Session session) { + // TODO Auto-generated method stub + return 0; + } }