Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java =================================================================== diff -u -rb26f90eccf164c7058201360d2ca771adcfb597a -r1297f4af1c3a9d878f75d8147944b4d8712dc268 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java (.../EmailNotificationsAction.java) (revision b26f90eccf164c7058201360d2ca771adcfb597a) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java (.../EmailNotificationsAction.java) (revision 1297f4af1c3a9d878f75d8147944b4d8712dc268) @@ -23,12 +23,12 @@ package org.lamsfoundation.lams.monitoring.web; import java.io.IOException; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -51,10 +51,11 @@ import org.lamsfoundation.lams.events.EmailNotificationArchive; import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.gradebook.util.GradebookConstants; +import org.lamsfoundation.lams.index.IndexLessonBean; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.lesson.Lesson; -import org.lamsfoundation.lams.lesson.util.LessonComparator; +import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.logevent.LogEvent; import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.monitoring.MonitoringConstants; @@ -64,6 +65,7 @@ import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.security.ISecurityService; import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; @@ -109,6 +111,7 @@ private static IUserManagementService userManagementService; private static ILogEventService logEventService; private static ISecurityService securityService; + private static ILessonService lessonService; // --------------------------------------------------------------------- // Struts Dispatch Method @@ -159,23 +162,25 @@ ICoreLearnerService learnerService = MonitoringServiceProxy.getLearnerService(getServlet().getServletContext()); - // getting the organisation + // getting the organisation Organisation org = (Organisation) learnerService.getUserManagementService().findById(Organisation.class, orgId); - // sort and filter lesson list - Set lessons = new TreeSet(new LessonComparator()); - for (Lesson lesson : (Set) org.getLessons()) { - if (!Lesson.REMOVED_STATE.equals(lesson.getLessonStateId()) - && !Lesson.FINISHED_STATE.equals(lesson.getLessonStateId())) { - lessons.add(lesson); + boolean isGroupMonitor = getSecurityService().hasOrgRole(orgId, getCurrentUser().getUserID(), + new String[] { Role.GROUP_MANAGER }, "show course email notifications", false); + Integer userRole = isGroupMonitor ? Role.ROLE_GROUP_MANAGER : Role.ROLE_MONITOR; + Map staffMap = getLessonService().getLessonsByOrgAndUserWithCompletedFlag(getCurrentUser().getUserID(), orgId, + userRole); + + // Already sorted, just double check that it does not contain finished or removed lessons + // This call should not be returning REMOVED lessons anyway so test for finished ones. + ArrayList lessons = new ArrayList(staffMap.size()); + for (IndexLessonBean lesson : (Collection) staffMap.values()) { + if (!Lesson.FINISHED_STATE.equals(lesson.getState())) { + lessons.add(lesson); } } - Lesson firstLesson = null; - Iterator lessonIter = lessons.iterator(); - if (lessonIter.hasNext()) { - firstLesson = lessonIter.next(); - } + IndexLessonBean firstLesson = lessons.size() > 0 ? lessons.get(0) : null; request.setAttribute("org", org); request.setAttribute("lessons", lessons); @@ -714,6 +719,15 @@ return logEventService; } + private ILessonService getLessonService() { + if (lessonService == null) { + WebApplicationContext ctx = WebApplicationContextUtils + .getRequiredWebApplicationContext(getServlet().getServletContext()); + lessonService = (ILessonService) ctx.getBean("lessonService"); + } + return lessonService; + } + private ISecurityService getSecurityService() { if (securityService == null) { WebApplicationContext webContext = WebApplicationContextUtils Index: lams_monitoring/web/emailnotifications/courseNotifications.jsp =================================================================== diff -u -rde371a3f787e5446d56ef9a6bbf7440a1ab142b5 -r1297f4af1c3a9d878f75d8147944b4d8712dc268 --- lams_monitoring/web/emailnotifications/courseNotifications.jsp (.../courseNotifications.jsp) (revision de371a3f787e5446d56ef9a6bbf7440a1ab142b5) +++ lams_monitoring/web/emailnotifications/courseNotifications.jsp (.../courseNotifications.jsp) (revision 1297f4af1c3a9d878f75d8147944b4d8712dc268) @@ -108,7 +108,7 @@ jQuery("#lessonsTable").jqGrid('filterToolbar',{stringResult: true, searchOnEnter: true, defaultSearch: 'cn'}); - jQuery("#lessonsTable").jqGrid('addRowData',${lesson.lessonId}, {id2:'${lesson.lessonId}',name:'${fn:escapeXml(lesson.lessonName)}'}); + jQuery("#lessonsTable").jqGrid('addRowData',${lesson.id}, {id2:'${lesson.id}',name:'${fn:escapeXml(lesson.name)}'}); $("#lessonsTable").parents('div.ui-jqgrid-bdiv').css("max-height","10000px"); @@ -268,7 +268,7 @@