From f907ce0d45dc8da2c920e81a25245ad8426bdad2 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de> Date: Thu, 6 Sep 2012 12:26:29 +0200 Subject: [PATCH] Task #3788: Add POST Request handler to give feedback --- .../de/thm/arsnova/SessionController.java | 9 ++++- .../thm/arsnova/services/ISessionService.java | 2 +- .../thm/arsnova/services/SessionService.java | 38 ++++++++++++++++++- 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/thm/arsnova/SessionController.java b/src/main/java/de/thm/arsnova/SessionController.java index 5b7cdb27..497fbfc8 100644 --- a/src/main/java/de/thm/arsnova/SessionController.java +++ b/src/main/java/de/thm/arsnova/SessionController.java @@ -57,7 +57,12 @@ public class SessionController { } @RequestMapping(value="/session/{sessionkey}/feedback", method=RequestMethod.POST) - public boolean postFeedback(@PathVariable String sessionkey, @RequestBody int value, HttpServletResponse response) { - return false; + public String postFeedback(@PathVariable String sessionkey, @RequestBody int value, HttpServletResponse response) { + if (sessionService.postFeedback(sessionkey, value)) { + response.setStatus(HttpStatus.CREATED.value()); + return null; + } + response.setStatus(HttpStatus.SERVICE_UNAVAILABLE.value()); + return null; } } diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java index b14242b5..9f3bb394 100644 --- a/src/main/java/de/thm/arsnova/services/ISessionService.java +++ b/src/main/java/de/thm/arsnova/services/ISessionService.java @@ -26,6 +26,6 @@ public interface ISessionService { public Session getSession(String keyword); public Feedback getFeedback(String keyword); - public void postFeedback(String keyword, int value); + public boolean postFeedback(String keyword, int value); } \ No newline at end of file diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index d8b8f37f..23969d71 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -18,6 +18,7 @@ */ package de.thm.arsnova.services; +import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; @@ -32,6 +33,7 @@ import org.springframework.security.core.userdetails.User; import org.springframework.stereotype.Service; import com.fourspaces.couchdb.Database; +import com.fourspaces.couchdb.Document; import com.fourspaces.couchdb.View; import com.fourspaces.couchdb.ViewResults; @@ -122,8 +124,40 @@ public class SessionService implements ISessionService { } @Override - public void postFeedback(String keyword, int value) { - + public boolean postFeedback(String keyword, int value) { + String sessionId = this.getSessionId(keyword); + if (sessionId == null) return false; + + Document feedback = new Document(); + feedback.put("type", "understanding"); + feedback.put("user", this.actualUserName()); + feedback.put("sessionId", sessionId); + feedback.put("timestamp", System.currentTimeMillis()); + + switch (value) { + case 0: + feedback.put("value", "Bitte schneller"); + break; + case 1: + feedback.put("value", "Kann folgen"); + break; + case 2: + feedback.put("value", "Zu schnell"); + break; + case 3: + feedback.put("value", "Nicht mehr dabei"); + break; + default: + return false; + } + + try { + database.saveDocument(feedback); + } catch (IOException e) { + return false; + } + + return true; } private String getSessionId(String keyword) { -- GitLab