summaryrefslogtreecommitdiff
path: root/src/com/p4square/grow/frontend/TrainingPageResource.java
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2013-09-09 22:39:44 -0700
committerJesse Morgan <jesse@jesterpm.net>2013-09-09 22:39:44 -0700
commitbb103fe21dc18ff4999ce750c83f50bd6499f225 (patch)
treeb56171fbfe2b5107b1ad9a77015964472408ff06 /src/com/p4square/grow/frontend/TrainingPageResource.java
parentaf6f25a8b2d6544e375e01135ac29f55dbae2012 (diff)
Adding Playlist Support.
The TrainingRecordResource now builds a playlist of videos for each user. The playlist is a map of video id to meta-data (completion date, completed, required). Some videos are required, others are not. TrainingPageResource now redirects to the earliest uncompleted chapter, based on information in the playlist. SurveyResultsResource now caches computed scores.
Diffstat (limited to 'src/com/p4square/grow/frontend/TrainingPageResource.java')
-rw-r--r--src/com/p4square/grow/frontend/TrainingPageResource.java54
1 files changed, 40 insertions, 14 deletions
diff --git a/src/com/p4square/grow/frontend/TrainingPageResource.java b/src/com/p4square/grow/frontend/TrainingPageResource.java
index ad7ea8d..f5265f6 100644
--- a/src/com/p4square/grow/frontend/TrainingPageResource.java
+++ b/src/com/p4square/grow/frontend/TrainingPageResource.java
@@ -16,6 +16,7 @@ import org.restlet.data.MediaType;
import org.restlet.data.Status;
import org.restlet.ext.freemarker.TemplateRepresentation;
import org.restlet.representation.Representation;
+import org.restlet.representation.StringRepresentation;
import org.restlet.resource.ServerResource;
import org.apache.log4j.Logger;
@@ -70,10 +71,34 @@ public class TrainingPageResource extends FreeMarkerPageResource {
@Override
protected Representation get() {
try {
- // Get the current chapter.
+ // Get the training summary
+ Map<String, Object> trainingRecord = null;
+ Map<String, Object> completedVideos = new HashMap<String, Object>();
+ Map<String, Boolean> chapters = null;
+ {
+ JsonResponse response = backendGet("/accounts/" + mUserId + "/training");
+ if (response.getStatus().isSuccess()) {
+ trainingRecord = response.getMap();
+ completedVideos = (Map<String, Object>) trainingRecord.get("videos");
+ chapters = (Map<String, Boolean>) trainingRecord.get("chapters");
+ }
+ }
+
+ // Get the current chapter (the lowest, incomplete chapter)
if (mChapter == null) {
- // TODO: Get user's current question
- mChapter = "seeker";
+ int min = Integer.MAX_VALUE;
+ for (Map.Entry<String, Boolean> chapter : chapters.entrySet()) {
+ int index = chapterIndex(chapter.getKey());
+ if (!chapter.getValue() && index < min) {
+ min = index;
+ mChapter = chapter.getKey();
+ }
+ }
+
+ String nextPage = mConfig.getString("dynamicRoot", "");
+ nextPage += "/account/training/" + mChapter;
+ getResponse().redirectSeeOther(nextPage);
+ return new StringRepresentation("Redirecting to " + nextPage);
}
// Get videos for the chapter.
@@ -87,17 +112,6 @@ public class TrainingPageResource extends FreeMarkerPageResource {
videos = (List<Map<String, Object>>) response.getMap().get("videos");
}
- // Get list of completed videos
- Map<String, Object> trainingRecord = null;
- Map<String, Object> completedVideos = new HashMap<String, Object>();
- {
- JsonResponse response = backendGet("/accounts/" + mUserId + "/training");
- if (response.getStatus().isSuccess()) {
- trainingRecord = response.getMap();
- completedVideos = (Map<String, Object>) trainingRecord.get("videos");
- }
- }
-
// Mark the completed videos as completed
int chapterProgress = 0;
for (Map<String, Object> video : videos) {
@@ -158,4 +172,16 @@ public class TrainingPageResource extends FreeMarkerPageResource {
return response;
}
+
+ int chapterIndex(String chapter) {
+ if ("teacher".equals(chapter)) {
+ return 4;
+ } else if ("disciple".equals(chapter)) {
+ return 3;
+ } else if ("believer".equals(chapter)) {
+ return 2;
+ } else {
+ return 1;
+ }
+ }
}