Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_central/web/css/ui.jqgrid-4.1.2.css'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_central/web/includes/javascript/grid.locale-en.js'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_central/web/includes/javascript/jquery.jqGrid.min.js'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java,v
diff -u -r1.1.2.1 -r1.1.2.2
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java 31 Aug 2011 20:36:36 -0000 1.1.2.1
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java 3 Sep 2011 23:01:17 -0000 1.1.2.2
@@ -26,10 +26,17 @@
import java.io.IOException;
import java.util.Calendar;
import java.util.Collection;
+import java.util.Comparator;
import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -40,6 +47,13 @@
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+import org.json.JSONTokener;
+import org.json.JSONWriter;
+import org.lamsfoundation.lams.events.DeliveryMethodMail;
+import org.lamsfoundation.lams.events.IEventNotificationService;
import org.lamsfoundation.lams.learning.service.ICoreLearnerService;
import org.lamsfoundation.lams.learningdesign.Activity;
import org.lamsfoundation.lams.learningdesign.dao.IGroupUserDAO;
@@ -51,7 +65,9 @@
import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy;
import org.lamsfoundation.lams.usermanagement.Organisation;
import org.lamsfoundation.lams.usermanagement.User;
+import org.lamsfoundation.lams.usermanagement.UserOrganisation;
import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
+import org.lamsfoundation.lams.usermanagement.service.IUserManagementService;
import org.lamsfoundation.lams.util.WebUtil;
import org.lamsfoundation.lams.web.action.LamsDispatchAction;
import org.lamsfoundation.lams.web.session.SessionManager;
@@ -89,14 +105,16 @@
private static final int LESSON_TYPE_HAVENT_REACHED_PARTICULAR_ACTIVITY = 5;
private static final int LESSON_TYPE_LESS_THAN_X_DAYS_TO_DEADLINE = 6;
- private static final int COURSE_TYPE_HAVE_STARTED_X_LESSONS = 7;
- private static final int COURSE_TYPE_HAVE_FINISHED_X_LESSONS = 8;
- private static final int COURSE_TYPE_HAVE_FINISHED_PARTICULAR_LESSON = 9;
+ private static final int COURSE_TYPE_HAVE_FINISHED_PARTICULAR_LESSON = 7;
+ private static final int COURSE_TYPE_HAVENT_STARTED_PARTICULAR_LESSON = 8;
+ private static final int COURSE_TYPE_HAVENT_STARTED_ANY_LESSONS = 9;
private static final int COURSE_TYPE_HAVE_FINISHED_THESE_LESSONS = 10;
+
private static ILessonService lessonService;
private static IGroupUserDAO groupUserDAO;
private static ILearnerProgressDAO learnerProgressDAO;
+ private static IEventNotificationService eventNotificationService;
private Integer getUserId() {
HttpSession ss = SessionManager.getSession();
@@ -140,12 +158,9 @@
long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID);
Lesson lesson = learnerService.getLesson(lessonId);
Set activities = lesson.getLearningDesign().getActivities();
- Set users = lesson.getAllLearners();
- // activityDAO getActivitiesByLearningDesignId(Long learningDesignId);
request.setAttribute("lesson", lesson);
request.setAttribute("activities", activities);
- request.setAttribute("users", users);
return mapping.findForward("lessonView");
}
@@ -164,12 +179,16 @@
// getting the organisation
Organisation org = (Organisation) learnerService.getUserManagementService().findById(Organisation.class, orgId);
Set lessons = org.getLessons();
-// Set users = lesson.getAllLearners();
- // activityDAO getActivitiesByLearningDesignId(Long learningDesignId);
+ Lesson firstLesson = null;
+ Iterator lessonIter = lessons.iterator();
+ if (lessonIter.hasNext()) {
+ firstLesson = lessonIter.next();
+ }
+
request.setAttribute("org", org);
request.setAttribute("lessons", lessons);
-// request.setAttribute("users", users);
+ request.setAttribute("firstLesson", firstLesson);
return mapping.findForward("courseView");
}
@@ -194,32 +213,50 @@
* next.
* @throws IOException
* @throws ServletException
+ * @throws JSONException
*/
public ActionForward emailUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse response) throws IOException, ServletException {
+ HttpServletResponse response) throws IOException, ServletException, JSONException {
+
+ JSONObject JSONObject = new JSONObject();
IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet()
.getServletContext());
+ getEventNotificationService();
+ String[] userIdStrs = request.getParameterValues("userId");
+ String emailBody = WebUtil.readStrParam(request, "emailBody");
- long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID);
- String[] userIds = request.getParameterValues("userId");
-
+ boolean isSuccessfullySent = true;
+ for (String userIdStr : userIdStrs) {
+ long userId = Long.parseLong(userIdStr);
+ isSuccessfullySent &= eventNotificationService.sendMessage(
+ userId,
+ DeliveryMethodMail.getInstance(),
+ monitoringService.getMessageService().getMessage("event.emailnotifications.email.subject", new Object[] {}),
+ emailBody);
+ }
+
+ JSONObject.put("isSuccessfullySent", isSuccessfullySent);
+ response.setContentType("application/x-json");
+ response.getWriter().print(JSONObject);
return null;
}
public ActionForward getUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse response) throws IOException, ServletException {
+ HttpServletResponse response) throws IOException, ServletException, JSONException {
IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet()
.getServletContext());
ICoreLearnerService learnerService = MonitoringServiceProxy.getLearnerService(getServlet()
.getServletContext());
+ JSONObject responcedata = new JSONObject();
int searchType = WebUtil.readIntParam(request, "searchType");
Lesson lesson = null;
- Long orgId;
+ Integer orgId;
Long activityId = null;
int xDaystoFinish = 0;
int numberLessons = 0;
String[] lessonIds = null;
+ Organisation org = null;
//TODO check checkOwnerOrStaffMember
@@ -236,12 +273,12 @@
lesson = learnerService.getLesson(lessonId);
break;
- case COURSE_TYPE_HAVE_STARTED_X_LESSONS:
- case COURSE_TYPE_HAVE_FINISHED_X_LESSONS:
- case COURSE_TYPE_HAVE_FINISHED_PARTICULAR_LESSON:
+ case COURSE_TYPE_HAVENT_STARTED_ANY_LESSONS:
case COURSE_TYPE_HAVE_FINISHED_THESE_LESSONS:
- orgId = WebUtil.readLongParam(request, "orgId");
- Organisation org = (Organisation) learnerService.getUserManagementService().findById(Organisation.class, orgId);
+ case COURSE_TYPE_HAVE_FINISHED_PARTICULAR_LESSON:
+ case COURSE_TYPE_HAVENT_STARTED_PARTICULAR_LESSON:
+ orgId = WebUtil.readIntParam(request, "orgId");
+ org = (Organisation) learnerService.getUserManagementService().findById(Organisation.class, orgId);
break;
}
@@ -253,11 +290,8 @@
xDaystoFinish = WebUtil.readIntParam(request, "daysToDeadline");
break;
- case COURSE_TYPE_HAVE_STARTED_X_LESSONS:
- case COURSE_TYPE_HAVE_FINISHED_X_LESSONS:
- numberLessons = WebUtil.readIntParam(request, "numberLessons");
- break;
case COURSE_TYPE_HAVE_FINISHED_PARTICULAR_LESSON:
+ case COURSE_TYPE_HAVENT_STARTED_PARTICULAR_LESSON:
Long lessonId = WebUtil.readLongParam(request, "lessonId");
lesson = learnerService.getLesson(lessonId);
break;
@@ -266,21 +300,43 @@
break;
}
- Collection users = getUsers(searchType, lesson, lessonIds, activityId, xDaystoFinish);
- request.setAttribute("users", users);
+ Collection users = getUsers(searchType, lesson, lessonIds, activityId, xDaystoFinish, org);
+
+
+ JSONArray cellarray = new JSONArray();
- return mapping.findForward("userList");
- }
+ responcedata.put("total", "" + users.size());
+ responcedata.put("page", "" + 1);
+ responcedata.put("records", "" + users.size());
+
+
+ for (User user : users) {
+ JSONArray cell=new JSONArray();
+ cell.put(user.getFirstName() + " " + user.getLastName() + " [" + user.getLogin() + "]");
+
+ JSONObject cellobj = new JSONObject();
+ cellobj.put("id", "" + user.getUserId());
+ cellobj.put("cell", cell);
+ cellarray.put(cellobj);
+ }
+ responcedata.put("rows", cellarray);
+ response.setContentType("application/x-json");
+ response.getWriter().print(responcedata);
+ return null;
+ }
- public Collection getUsers(int searchType, Lesson lesson, String[] lessonIds, Long activityId, int xDaystoFinish) throws IOException, ServletException {
+ public Collection getUsers(int searchType, Lesson lesson, String[] lessonIds, Long activityId, int xDaystoFinish, Organisation org) throws IOException, ServletException {
getLessonService();
IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet()
.getServletContext());
ICoreLearnerService learnerService = MonitoringServiceProxy.getLearnerService(getServlet()
.getServletContext());
- Long lessonId = lesson.getLessonId();
+ Long lessonId = null;
+ if (lesson != null) {
+ lessonId = lesson.getLessonId();
+ }
Collection users = new LinkedList();
switch (searchType) {
@@ -293,12 +349,14 @@
List usersCompletedLesson = getUsersCompletedLesson(lessonId);
users = CollectionUtils.subtract(allUsers, usersCompletedLesson);
break;
-
+
case LESSON_TYPE_HAVE_FINISHED_LESSON:
+ case COURSE_TYPE_HAVE_FINISHED_PARTICULAR_LESSON:
users = getUsersCompletedLesson(lessonId);
break;
case LESSON_TYPE_HAVENT_STARTED_LESSON:
+ case COURSE_TYPE_HAVENT_STARTED_PARTICULAR_LESSON:
allUsers = lesson.getAllLearners();
List usersStartedLesson = lessonService.getActiveLessonLearners(lessonId);
users = CollectionUtils.subtract(allUsers, usersStartedLesson);
@@ -328,18 +386,25 @@
}
} else if (lesson.isScheduledToCloseForIndividuals()) {
- getGroupUserDAO().getUsersWithLessonEndingSoonerThan(lesson, currentTimePlusXDays.getTime());
+ users = getGroupUserDAO().getUsersWithLessonEndingSoonerThan(lesson, currentTimePlusXDays.getTime());
}
break;
- case COURSE_TYPE_HAVE_STARTED_X_LESSONS:
- break;
+ case COURSE_TYPE_HAVENT_STARTED_ANY_LESSONS:
+ getLearnerProgressDAO();
- case COURSE_TYPE_HAVE_FINISHED_X_LESSONS:
- break;
+ List allUSers = learnerService.getUserManagementService().getUsersFromOrganisation(org.getOrganisationId());
+ Set usersStartedAtLest1Lesson = new TreeSet();
- case COURSE_TYPE_HAVE_FINISHED_PARTICULAR_LESSON:
- users = getUsersCompletedLesson(lessonId);
+ Set lessons = org.getLessons();
+ for (Lesson les : lessons) {
+ Activity firstActivity = les.getLearningDesign().getFirstActivity();
+ List usersStartedFirstActivity = learnerProgressDAO.getLearnersHaveAttemptedActivity(firstActivity);
+ usersStartedAtLest1Lesson.addAll(usersStartedFirstActivity);
+ }
+
+ users = CollectionUtils.subtract(allUSers, usersStartedAtLest1Lesson);
+
break;
case COURSE_TYPE_HAVE_FINISHED_THESE_LESSONS:
@@ -354,9 +419,16 @@
}
}
break;
- }
+ }
- return users;
+ Set sortedUsers = new TreeSet(new Comparator() {
+ public int compare(User usr0, User usr1) {
+ return ((usr0.getFirstName() + usr0.getLastName() + usr0.getLogin()).compareTo(usr1.getFirstName() + usr1.getLastName() + usr1.getLogin()));
+ }
+ });
+ sortedUsers.addAll(users);
+
+ return sortedUsers;
}
private List getUsersCompletedLesson(Long lessonId) {
@@ -396,40 +468,30 @@
return learnerProgressDAO;
}
+ private IEventNotificationService getEventNotificationService() {
+ if (eventNotificationService == null) {
+ WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(getServlet()
+ .getServletContext());
+ eventNotificationService = (IEventNotificationService) ctx.getBean("eventNotificationService");
+ }
+ return eventNotificationService;
+ }
+
// private Collection getUsersFinishedXLessons() {
// final String LOAD_COMPLETED_PROGRESS_BY_LESSON =
// "from LearnerProgress p where p.lessonComplete > 0 and p.lesson.id = :lessonId";
// ICoreLearnerService learnerService = MonitoringServiceProxy.getLearnerService(getServlet()
// .getServletContext());
// IUserManagementService userManagementService = learnerService.getUserManagementService();
//
-// userManagementService.fi
//
+// HashMap properties = new HashMap();
+// properties.put("organisationType.organisationTypeId", typeId);
+// properties.put("organisationState.organisationStateId", orgManageForm.getStateId());
+// List organisations = userManagementService.findByProperties(Organisation.class, properties);
+//
// return getHibernateTemplate().find(EventDAOHibernate.GET_EVENTS_TO_RESEND_QUERY);
// }
-
-
- public ActionForward getLessonLearners(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse response) throws IOException {
- String wddxPacket;
- IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet()
- .getServletContext());
- Long lessonID = new Long(WebUtil.readLongParam(request, "lessonID"));
- wddxPacket = monitoringService.getLessonLearners(lessonID, getUserId());
-
- return null;
- }
-
- /** Get the learner progress data for all learners in a lesson. This is called by the sequence tab in monitoring */
- public ActionForward getAllLearnersProgress(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse response) throws IOException {
- String wddxPacket;
- IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet()
- .getServletContext());
- Long lessonID = WebUtil.readLongParam(request, "lessonID", false);
- wddxPacket = monitoringService.getAllLearnersProgress(lessonID, getUserId(), false);
- return null;
- }
}
Index: lams_monitoring/web/emailnotifications/courseNotifications.jsp
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/web/emailnotifications/courseNotifications.jsp,v
diff -u -r1.1.2.1 -r1.1.2.2
--- lams_monitoring/web/emailnotifications/courseNotifications.jsp 31 Aug 2011 20:36:35 -0000 1.1.2.1
+++ lams_monitoring/web/emailnotifications/courseNotifications.jsp 3 Sep 2011 23:01:16 -0000 1.1.2.2
@@ -3,89 +3,150 @@
<%@ taglib uri="tags-fmt" prefix="fmt" %>
<%@ taglib uri="tags-core" prefix="c" %>
<%@ taglib uri="tags-lams" prefix="lams" %>
+<%@ taglib uri="tags-function" prefix="fn"%>
+<% pageContext.setAttribute("newLineChar", "\n"); %>
+
-
-
-
-
+
+
+
+
+
+
+
+
@@ -97,64 +158,56 @@
?method=emailUsers" method="post" id="emailNotificationsForm" >
-
-
-
+
+
+ ${lesson.lessonName}
+ home.do?method=learner&lessonID=${lesson.lessonId}
+
+
+
+
+ " />
-
- " onclick=javascript:document.location='user.do?method=edit' />
-
-
-
- :
-
-
-
-
-
-
+
?method=emailUsers" method="post" id="emailNotificationsForm" >
-
-
-
+
+
@@ -186,7 +176,7 @@
-
- <%@ include file="userList.jsp"%>
-
+
+
-
-
-
-
-
-
-
-