Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java =================================================================== diff -u -rc266dd394246bd6178c2e0bb971f3d0eb74095c5 -rada87c0ea51639a2e0741532ee4a508a2c821327 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision c266dd394246bd6178c2e0bb971f3d0eb74095c5) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dao/hibernate/AssessmentUserDAOHibernate.java (.../AssessmentUserDAOHibernate.java) (revision ada87c0ea51639a2e0741532ee4a508a2c821327) @@ -100,7 +100,7 @@ Long userId = ((Number) element[0]).longValue(); String firstName = (String) element[1]; String lastName = (String) element[2]; - float grade = ((Number) element[3]).floatValue(); + float grade = element[3] == null ? 0 : ((Number) element[3]).floatValue(); AssessmentUserDTO userDto = new AssessmentUserDTO(); userDto.setUserId(userId); @@ -180,7 +180,7 @@ Long questionResultUid = ((Number) element[0]).longValue(); String firstName = (String) element[1]; String lastName = (String) element[2]; - float grade = ((Number) element[3]).floatValue(); + float grade = element[3] == null ? 0 : ((Number) element[3]).floatValue(); AssessmentUserDTO userDto = new AssessmentUserDTO(); userDto.setQuestionResultUid(questionResultUid);; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java =================================================================== diff -u -r45466cdcb65a2b45fa8e24d23a40b986d902cede -rada87c0ea51639a2e0741532ee4a508a2c821327 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision 45466cdcb65a2b45fa8e24d23a40b986d902cede) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/action/MonitoringAction.java (.../MonitoringAction.java) (revision ada87c0ea51639a2e0741532ee4a508a2c821327) @@ -332,7 +332,6 @@ for (AssessmentUserDTO userDto : userDtos) { JSONArray userData = new JSONArray(); - userData.put(i); userData.put(userDto.getUserId()); userData.put(sessionId); String fullName = StringEscapeUtils.escapeHtml(userDto.getFirstName() + " " @@ -492,16 +491,22 @@ fileName = WebUtil.readStrParam(request, "fileName"); showUserNames = false; } + List sessionDtos = (List) sessionMap.get("sessionDtos"); Assessment assessment = service.getAssessmentByContentId(contentId); if (assessment != null) { LinkedHashMap dataToExport = new LinkedHashMap(); + + if (showUserNames) { + ExcelCell[][] summaryData = getSummaryData(assessment, sessionDtos); + dataToExport.put(service.getMessage("label.export.summary"), summaryData); + } ExcelCell[][] questionSummaryData = getQuestionSummaryData(assessment, showUserNames); dataToExport.put(service.getMessage("lable.export.summary.by.question"), questionSummaryData); - ExcelCell[][] userSummaryData = getUserSummaryData(assessment, showUserNames); + ExcelCell[][] userSummaryData = getUserSummaryData(assessment, sessionDtos, showUserNames); dataToExport.put(service.getMessage("label.export.summary.by.user"), userSummaryData); // Setting the filename if it wasn't passed in the request @@ -519,9 +524,77 @@ return null; } + + @SuppressWarnings("unchecked") + private ExcelCell[][] getSummaryData(Assessment assessment, List sessionDtos) { + initAssessmentService(); + ArrayList data = new ArrayList(); + if (assessment == null) { + return new ExcelCell[0][0]; + } + + // Adding the user results/marks summary --------------------------- + if (sessionDtos != null) { + for (SessionDTO sessionDTO : sessionDtos) { + Long sessionId = sessionDTO.getSessionId(); + + data.add(EMPTY_ROW); + + ExcelCell[] sessionTitle = new ExcelCell[1]; + sessionTitle[0] = new ExcelCell(sessionDTO.getSessionName(), true); + data.add(sessionTitle); + + // Adding the question summary ------------------------------------- + ExcelCell[] summaryRowTitle = new ExcelCell[2]; + summaryRowTitle[0] = new ExcelCell(service.getMessage("label.monitoring.summary.user.name"), true); + summaryRowTitle[1] = new ExcelCell(service.getMessage("label.monitoring.summary.total"), true); + data.add(summaryRowTitle); + + List userDtos = new ArrayList(); + //in case of UseSelectLeaderToolOuput - display only one user + if (assessment.isUseSelectLeaderToolOuput()) { + + AssessmentSession session = service.getAssessmentSessionBySessionId(sessionId); + AssessmentUser groupLeader = session.getGroupLeader(); + + if (groupLeader != null) { + + float assessmentResult = service.getLastFinishedAssessmentResultGrade(assessment.getUid(), + groupLeader.getUserId()); + + AssessmentUserDTO userDto = new AssessmentUserDTO(); + userDto.setFirstName(groupLeader.getFirstName()); + userDto.setLastName(groupLeader.getLastName()); + userDto.setGrade(assessmentResult); + userDtos.add(userDto); + } + + } else { + int countSessionUsers = sessionDTO.getNumberLearners(); + + // Get the user list from the db + userDtos = service.getPagedUsersBySession(sessionId, 0, countSessionUsers, "userName", "ASC", ""); + } + + for (AssessmentUserDTO userDto : userDtos) { + ExcelCell[] userResultRow = new ExcelCell[2]; + userResultRow[0] = new ExcelCell(userDto.getFirstName() + " " + userDto.getLastName(), false); + userResultRow[1] = new ExcelCell(userDto.getGrade(), false); + data.add(userResultRow); + } + + data.add(EMPTY_ROW); + } + } + + // ------------------------------------------------------------------ + + return data.toArray(new ExcelCell[][] {}); + } + @SuppressWarnings("unchecked") - private ExcelCell[][] getUserSummaryData(Assessment assessment, boolean showUserNames) { + private ExcelCell[][] getUserSummaryData(Assessment assessment, List sessionDtos, boolean showUserNames) { initAssessmentService(); ArrayList data = new ArrayList(); @@ -602,11 +675,9 @@ //------------------------------------------------------------------ // Adding the user results/marks summary --------------------------- + if (sessionDtos != null) { + for (SessionDTO sessionDTO : sessionDtos) { - List summaryList = service.getSessionDataForExport(assessment.getContentId()); - if (summaryList != null) { - for (SessionDTO sessionDTO : summaryList) { - data.add(EMPTY_ROW); ExcelCell[] sessionTitle = new ExcelCell[1]; Index: lams_tool_assessment/web/pages/monitoring/summary.jsp =================================================================== diff -u -r45466cdcb65a2b45fa8e24d23a40b986d902cede -rada87c0ea51639a2e0741532ee4a508a2c821327 --- lams_tool_assessment/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 45466cdcb65a2b45fa8e24d23a40b986d902cede) +++ lams_tool_assessment/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision ada87c0ea51639a2e0741532ee4a508a2c821327) @@ -20,14 +20,12 @@ rowList:[10,20,30,40,50,100], rowNum:10, viewrecords:true, - colNames:['#', - 'userId', + colNames:['userId', 'sessionId', "", ""], colModel:[ - {name:'id', index:'id', width:20, sorttype:"int", search:false}, {name:'userId', index:'userId', width:0, hidden: true}, {name:'sessionId', index:'sessionId', width:0, hidden: true}, {name:'userName', index:'userName', width:570, searchoptions: { clearSearch: false }},