Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== diff -u -r7ad79c50d0bc5a1021cae22a121c1123f3943db3 -r7219576f89eaeeb1bd4e47f13fc1dce007934e44 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 7ad79c50d0bc5a1021cae22a121c1123f3943db3) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java (.../GradebookService.java) (revision 7219576f89eaeeb1bd4e47f13fc1dce007934e44) @@ -56,6 +56,7 @@ import org.lamsfoundation.lams.gradebook.util.LessonComparator; import org.lamsfoundation.lams.gradebook.util.UserComparator; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ActivityEvaluation; import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.ToolActivity; @@ -65,7 +66,10 @@ import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO; import org.lamsfoundation.lams.lesson.service.ILessonService; +import org.lamsfoundation.lams.tool.ToolOutput; +import org.lamsfoundation.lams.tool.ToolOutputValue; import org.lamsfoundation.lams.tool.ToolSession; +import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.service.ILamsCoreToolService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.OrganisationType; @@ -431,7 +435,47 @@ auditService.log(monitorUser, GradebookConstants.MODULE_NAME, message); } } + + @Override + public void updateUserActivityGradebookMark(Lesson lesson, Activity activity, User learner) { + ToolSession toolSession = toolService.getToolSessionByLearner(learner, activity); + if ((toolSession == null) || (toolSession == null) || (learner == null) || (lesson == null) + || (activity == null) || !(activity instanceof ToolActivity) + || (((ToolActivity) activity).getActivityEvaluations() == null) + || ((ToolActivity) activity).getActivityEvaluations().isEmpty()) { + return; + } + ToolActivity toolActivity = (ToolActivity) activity; + + // Getting the first activity evaluation + ActivityEvaluation eval = toolActivity.getActivityEvaluations().iterator().next(); + + try { + ToolOutput toolOutput = toolService.getOutputFromTool(eval.getToolOutputDefinition(), toolSession, + learner.getUserId()); + + if (toolOutput != null) { + ToolOutputValue outputVal = toolOutput.getValue(); + if (outputVal != null) { + Double outputDouble = outputVal.getDouble(); + + GradebookUserActivity gradebookUserActivity = getGradebookUserActivity(toolActivity.getActivityId(), + learner.getUserId()); + + // Only set the mark if it hasnt previously been set by a teacher + if ((gradebookUserActivity == null) || !gradebookUserActivity.getMarkedInGradebook()) { + updateUserActivityGradebookMark(lesson, learner, toolActivity, outputDouble, false, false); + } + } + } + + } catch (ToolException e) { + GradebookService.logger.debug( + "Runtime exception when attempted to get outputs for activity: " + toolActivity.getActivityId(), e); + } + } + @Override public void updateUserActivityGradebookMark(Lesson lesson, User learner, Activity activity, Double mark, Boolean markedInGradebook, boolean isAuditLogRequired) { Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java =================================================================== diff -u -ra2bfe0110d8572642cf5f19fc3e2882252fdd43b -r7219576f89eaeeb1bd4e47f13fc1dce007934e44 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision a2bfe0110d8572642cf5f19fc3e2882252fdd43b) +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/IGradebookService.java (.../IGradebookService.java) (revision 7219576f89eaeeb1bd4e47f13fc1dce007934e44) @@ -126,6 +126,14 @@ * @param mark */ void updateUserLessonGradebookMark(Lesson lesson, User learner, Double mark); + + /** + * If specified activity is set to produce ToolOutput, calculates and stores mark to gradebook. + * + * @param toolActivity + * @param progress + */ + void updateUserActivityGradebookMark(Lesson lesson, Activity activity, User learner); /** * Updates a user's activity mark, this will automatically add up all the user's activity marks for a lesson and set