From 9198891e13985ef97bef05c9b8fc104a68ece5cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20G=C3=A4rtner?= <andreas.gaertner@mni.thm.de>
Date: Wed, 5 Oct 2016 04:41:37 +0200
Subject: [PATCH] Add flashcard count to websocket session data report

---
 .../java/de/thm/arsnova/services/IQuestionService.java   | 2 ++
 .../java/de/thm/arsnova/services/QuestionService.java    | 9 +++++++++
 .../de/thm/arsnova/socket/ARSnovaSocketIOServer.java     | 1 +
 3 files changed, 12 insertions(+)

diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java
index 35ccb047..f0864314 100644
--- a/src/main/java/de/thm/arsnova/services/IQuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java
@@ -125,6 +125,8 @@ public interface IQuestionService {
 
 	int countPreparationQuestionAnswersInternal(String sessionkey);
 
+	int countFlashcardsForUserInternal(String sessionkey);
+
 	void deleteLectureQuestions(String sessionkey);
 
 	void deleteFlashcards(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 c0f73137..b00252ea 100644
--- a/src/main/java/de/thm/arsnova/services/QuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/QuestionService.java
@@ -918,6 +918,15 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
 		return databaseDao.countPreparationQuestionAnswers(getSession(sessionkey));
 	}
 
+	/*
+	 * The "internal" suffix means it is called by internal services that have no authentication!
+	 * TODO: Find a better way of doing this...
+	 */
+	@Override
+	public int countFlashcardsForUserInternal(final String sessionkey) {
+		return databaseDao.getFlashcardsForUsers(getSession(sessionkey)).size();
+	}
+
 	@Override
 	@PreAuthorize("isAuthenticated()")
 	public void deleteLectureQuestions(final String sessionkey) {
diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
index e7b9143c..7c6da912 100644
--- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
+++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
@@ -359,6 +359,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 		client.sendEvent("unansweredPreparationQuestions", questionService.getUnAnsweredPreparationQuestionIds(sessionKey, user));
 		client.sendEvent("countLectureQuestionAnswers", questionService.countLectureQuestionAnswersInternal(sessionKey));
 		client.sendEvent("countPreparationQuestionAnswers", questionService.countPreparationQuestionAnswersInternal(sessionKey));
+		client.sendEvent("countFlashcards", questionService.countFlashcardsForUserInternal(sessionKey));
 		client.sendEvent("activeUserCountData", sessionService.activeUsers(sessionKey));
 		client.sendEvent("learningProgressOptions", session.getLearningProgressOptions());
 		final de.thm.arsnova.entities.Feedback fb = feedbackService.getFeedback(sessionKey);
-- 
GitLab