Skip to content
Snippets Groups Projects
Commit 18dd58a5 authored by Daniel Vogel's avatar Daniel Vogel
Browse files

Merge branch 'master' of scm.thm.de:arsnova/arsnova-war

parents 7abc9e12 cf9f8464
No related merge requests found
...@@ -191,6 +191,24 @@ public class SessionController extends AbstractController { ...@@ -191,6 +191,24 @@ public class SessionController extends AbstractController {
return null; return null;
} }
@RequestMapping(value = "/{sessionkey}/learningprogress", method = RequestMethod.GET)
@ResponseBody
public final int learningProgress(
@PathVariable final String sessionkey,
final HttpServletResponse response
) {
return sessionService.getLearningProgress(sessionkey);
}
@RequestMapping(value = "/{sessionkey}/mylearningprogress", method = RequestMethod.GET)
@ResponseBody
public final int myLearningProgress(
@PathVariable final String sessionkey,
final HttpServletResponse response
) {
return sessionService.getMyLearningProgress(sessionkey);
}
/* internal redirections */ /* internal redirections */
@RequestMapping(value = "/{sessionKey}/lecturerquestion") @RequestMapping(value = "/{sessionKey}/lecturerquestion")
......
...@@ -926,6 +926,7 @@ public class CouchDBDao implements IDatabaseDao { ...@@ -926,6 +926,7 @@ public class CouchDBDao implements IDatabaseDao {
a.put("questionId", answer.getQuestionId()); a.put("questionId", answer.getQuestionId());
a.put("answerSubject", answer.getAnswerSubject()); a.put("answerSubject", answer.getAnswerSubject());
a.put("questionVariant", answer.getQuestionVariant()); a.put("questionVariant", answer.getQuestionVariant());
a.put("questionValue", answer.getQuestionValue());
a.put("answerText", answer.getAnswerText()); a.put("answerText", answer.getAnswerText());
a.put("timestamp", answer.getTimestamp()); a.put("timestamp", answer.getTimestamp());
a.put("user", user.getUsername()); a.put("user", user.getUsername());
...@@ -949,6 +950,7 @@ public class CouchDBDao implements IDatabaseDao { ...@@ -949,6 +950,7 @@ public class CouchDBDao implements IDatabaseDao {
a.put("answerText", answer.getAnswerText()); a.put("answerText", answer.getAnswerText());
a.put("timestamp", answer.getTimestamp()); a.put("timestamp", answer.getTimestamp());
a.put("abstention", answer.isAbstention()); a.put("abstention", answer.isAbstention());
a.put("questionValue", answer.getQuestionValue());
this.database.saveDocument(a); this.database.saveDocument(a);
answer.set_rev(a.getRev()); answer.set_rev(a.getRev());
return answer; return answer;
...@@ -1351,4 +1353,39 @@ public class CouchDBDao implements IDatabaseDao { ...@@ -1351,4 +1353,39 @@ public class CouchDBDao implements IDatabaseDao {
this.deleteAnswers(q); this.deleteAnswers(q);
} }
} }
@Override
public int getLearningProgress(Session session) {
NovaView courseView = new NovaView("learning_progress/course_value");
NovaView maximumView = new NovaView("learning_progress/maximum_value");
courseView.setKey(session.get_id());
maximumView.setKey(session.get_id());
return getProgressPercentage(courseView, maximumView);
}
@Override
public int getMyLearningProgress(Session session, User user) {
NovaView userView = new NovaView("learning_progress/user_value");
NovaView maximumView = new NovaView("learning_progress/maximum_value");
userView.setKey(session.get_id(), user.getUsername());
maximumView.setKey(session.get_id());
return getProgressPercentage(userView, maximumView);
}
private int getProgressPercentage(NovaView progressView, NovaView maximumView) {
List<Document> progressValue = this.getDatabase().view(progressView).getResults();
List<Document> maximumValue = this.getDatabase().view(maximumView).getResults();
if (maximumValue.isEmpty()) {
return 0;
}
int maximum = maximumValue.get(0).getInt("value");
int progress = 0;
if (!progressValue.isEmpty()) {
progress = progressValue.get(0).getInt("value");
}
int percentage = (int)((progress * 100.0f) / maximum);
return percentage < 0 ? 0 : percentage;
}
} }
...@@ -161,4 +161,8 @@ public interface IDatabaseDao { ...@@ -161,4 +161,8 @@ public interface IDatabaseDao {
void publishAllQuestions(Session session, boolean publish); void publishAllQuestions(Session session, boolean publish);
void deleteAllQuestionsAnswers(Session session); void deleteAllQuestionsAnswers(Session session);
int getLearningProgress(Session session);
int getMyLearningProgress(Session session, User user);
} }
...@@ -10,6 +10,7 @@ public class Answer { ...@@ -10,6 +10,7 @@ public class Answer {
private String answerText; private String answerText;
private String answerSubject; private String answerSubject;
private String questionVariant; private String questionVariant;
private int questionValue;
private int piRound; private int piRound;
private String user; private String user;
private long timestamp; private long timestamp;
...@@ -133,6 +134,14 @@ public class Answer { ...@@ -133,6 +134,14 @@ public class Answer {
this.questionVariant = questionVariant; this.questionVariant = questionVariant;
} }
public int getQuestionValue() {
return questionValue;
}
public void setQuestionValue(int questionValue) {
this.questionValue = questionValue;
}
@Override @Override
public final String toString() { public final String toString() {
return "Answer type:'" + type + "'" return "Answer type:'" + type + "'"
......
...@@ -23,6 +23,7 @@ public class PossibleAnswer { ...@@ -23,6 +23,7 @@ public class PossibleAnswer {
private String id; private String id;
private String text; private String text;
private boolean correct; private boolean correct;
private int value;
public String getId() { public String getId() {
return this.id; return this.id;
...@@ -48,6 +49,14 @@ public class PossibleAnswer { ...@@ -48,6 +49,14 @@ public class PossibleAnswer {
this.correct = correct; this.correct = correct;
} }
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
@Override @Override
public String toString() { public String toString() {
return "PossibleAnswer [id=" + id + ", text=" + text + ", correct=" + correct + "]"; return "PossibleAnswer [id=" + id + ", text=" + text + ", correct=" + correct + "]";
......
...@@ -51,4 +51,8 @@ public interface ISessionService { ...@@ -51,4 +51,8 @@ public interface ISessionService {
Session updateSession(String sessionkey, Session session); Session updateSession(String sessionkey, Session session);
void deleteSession(String sessionkey, User user); void deleteSession(String sessionkey, User user);
int getLearningProgress(String sessionkey);
int getMyLearningProgress(String sessionkey);
} }
...@@ -256,4 +256,19 @@ public class SessionService implements ISessionService { ...@@ -256,4 +256,19 @@ public class SessionService implements ISessionService {
} }
databaseDao.deleteSession(session); databaseDao.deleteSession(session);
} }
@Override
@Authenticated
public int getLearningProgress(String sessionkey) {
Session session = databaseDao.getSession(sessionkey);
return databaseDao.getLearningProgress(session);
}
@Override
@Authenticated
public int getMyLearningProgress(String sessionkey) {
Session session = databaseDao.getSession(sessionkey);
User user = userService.getCurrentUser();
return databaseDao.getMyLearningProgress(session, user);
}
} }
...@@ -497,4 +497,16 @@ public class StubDatabaseDao implements IDatabaseDao { ...@@ -497,4 +497,16 @@ public class StubDatabaseDao implements IDatabaseDao {
// TODO Auto-generated method stub // TODO Auto-generated method stub
} }
@Override
public int getLearningProgress(Session session) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getMyLearningProgress(Session session, User user) {
// TODO Auto-generated method stub
return 0;
}
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment