diff options
Diffstat (limited to 'src/com/p4square/grow/frontend')
-rw-r--r-- | src/com/p4square/grow/frontend/TrainingPageResource.java | 54 |
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; + } + } } |