Index: lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java =================================================================== diff -u -rf295ad79de8fe9d221c166fa90587d0be2fdda5b -rb990b22c3840245a061147d6008a304a3eb550cf --- lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision f295ad79de8fe9d221c166fa90587d0be2fdda5b) +++ lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision b990b22c3840245a061147d6008a304a3eb550cf) @@ -91,6 +91,8 @@ public static final String METHOD_VERIFY_EXT_SERVER = "verify"; + public static final String METHOD_LIST_MONITOR = "listMonitor"; + public static final String ATTR_COURSE_ID = "courseId"; public static final String ELEM_LEARNINGDESIGN = "Lesson"; Index: lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java =================================================================== diff -u -r90845b9a3eb85240233e6f57923dd0e3fa40e93c -rb990b22c3840245a061147d6008a304a3eb550cf --- lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision 90845b9a3eb85240233e6f57923dd0e3fa40e93c) +++ lams_central/src/java/org/lamsfoundation/lams/webservice/xml/LessonManagerServlet.java (.../LessonManagerServlet.java) (revision b990b22c3840245a061147d6008a304a3eb550cf) @@ -32,6 +32,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.gradebook.GradebookUserLesson; import org.lamsfoundation.lams.gradebook.service.IGradebookService; +import org.lamsfoundation.lams.index.IndexLessonBean; import org.lamsfoundation.lams.integration.ExtCourseClassMap; import org.lamsfoundation.lams.integration.ExtServerOrgMap; import org.lamsfoundation.lams.integration.ExtUserUseridMap; @@ -256,6 +257,9 @@ out.close(); return; + } else if (method.equals(CentralConstants.METHOD_LIST_MONITOR)) { + element = getLessonMonitorList(document, serverId, datetime, hashValue, username, courseId, country, + lang); } else { String msg = "Method :" + method + " is not recognised"; LessonManagerServlet.log.error(msg); @@ -1239,4 +1243,35 @@ } return null; } -} + + /** + * Lists lessons for which the given user is a Monitor in the given organisation. + */ + private Element getLessonMonitorList(Document document, String serverId, String datetime, String hashValue, + String username, String courseID, String countryIsoCode, String langIsoCode) throws Exception { + ExtServerOrgMap serverMap = LessonManagerServlet.integrationService.getExtServerOrgMap(serverId); + Authenticator.authenticate(serverMap, datetime, username, hashValue); + + ExtUserUseridMap userMap = LessonManagerServlet.integrationService.getExistingExtUserUseridMap(serverMap, + username); + ExtCourseClassMap orgMap = LessonManagerServlet.integrationService.getExtCourseClassMap(serverMap, userMap, + courseID, countryIsoCode, langIsoCode, null, LoginRequestDispatcher.METHOD_MONITOR); + Organisation organisation = orgMap.getOrganisation(); + + Map map = LessonManagerServlet.lessonService.getLessonsByOrgAndUserWithCompletedFlag( + userMap.getUser().getUserId(), organisation.getOrganisationId(), Role.ROLE_MONITOR); + + Element lessonsElem = document.createElement("Lessons"); + for (IndexLessonBean bean : map.values()) { + Element lessonElem = document.createElement(CentralConstants.ELEM_LESSON); + lessonElem.setAttribute(CentralConstants.ATTR_LESSON_ID, bean.getId().toString()); + lessonElem.setAttribute(CentralConstants.ATTR_NAME, bean.getName()); + lessonElem.setAttribute("description", bean.getDescription()); + lessonElem.setAttribute("state", bean.getState().toString()); + + lessonsElem.appendChild(lessonElem); + } + + return lessonsElem; + } +} \ No newline at end of file