Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20221220.sql =================================================================== diff -u --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20221220.sql (revision 0) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/dbupdates/patch20221220.sql (revision e9f21c562efc19cd5b5f9025f6d47165de059b39) @@ -0,0 +1,17 @@ +-- Turn off autocommit, so nothing is committed if there is an error +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; +-- Put all sql statements below here + +-- LDEV-5351 Tell whether and which teacher marked the question manually +ALTER TABLE tl_laasse10_question_result + ADD COLUMN marked_by BIGINT, + ADD CONSTRAINT FK_tl_laasse10_question_result_3 FOREIGN KEY (marked_by) REFERENCES tl_laasse10_user(uid) + ON UPDATE CASCADE ON DELETE SET NULL; + +-- Put all sql statements above here + +-- If there were no errors, commit and restore autocommit to on +COMMIT; +SET AUTOCOMMIT = 1; +SET FOREIGN_KEY_CHECKS=1; Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java =================================================================== diff -u -r8b791fe7643a5b70d30a4d395d0d2159bc6a7b29 -re9f21c562efc19cd5b5f9025f6d47165de059b39 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java (.../AssessmentQuestionResult.java) (revision 8b791fe7643a5b70d30a4d395d0d2159bc6a7b29) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/model/AssessmentQuestionResult.java (.../AssessmentQuestionResult.java) (revision e9f21c562efc19cd5b5f9025f6d47165de059b39) @@ -79,6 +79,10 @@ private String justification; @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "marked_by") + private AssessmentUser markedBy; + + @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "result_uid") private AssessmentResult assessmentResult; @@ -203,6 +207,14 @@ return justification == null ? null : StringEscapeUtils.escapeJavaScript(justification.replace("\r\n", "
")); } + public AssessmentUser getMarkedBy() { + return markedBy; + } + + public void setMarkedBy(AssessmentUser markedBy) { + this.markedBy = markedBy; + } + public AssessmentUser getUser() { return user; } Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -r7d908c243f85cbf8d8f9c5205b6591dbadf2f6ce -re9f21c562efc19cd5b5f9025f6d47165de059b39 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 7d908c243f85cbf8d8f9c5205b6591dbadf2f6ce) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision e9f21c562efc19cd5b5f9025f6d47165de059b39) @@ -2304,7 +2304,7 @@ } @Override - public void changeQuestionResultMark(Long questionResultUid, float newMark) { + public void changeQuestionResultMark(Long questionResultUid, float newMark, Integer teacherId) { AssessmentQuestionResult questionResult = assessmentQuestionResultDao .getAssessmentQuestionResultByUid(questionResultUid); float oldMark = questionResult.getMark(); @@ -2315,6 +2315,11 @@ Assessment assessment = assessmentResult.getAssessment(); Long questionUid = questionResult.getQbToolQuestion().getUid(); + AssessmentUser teacher = null; + if (teacherId != null) { + teacher = getUserByIdAndContent(teacherId.longValue(), assessment.getContentId()); + } + // When changing a mark for user and isUseSelectLeaderToolOuput is true, the mark should be propagated to all // students within the group List users = new ArrayList<>(); @@ -2342,6 +2347,9 @@ AssessmentQuestionResult lastAssessmentQuestionResult = (AssessmentQuestionResult) lastAssessmentQuestionResultObj[0]; lastAssessmentQuestionResult.setMark(newMark); + if (teacher != null) { + lastAssessmentQuestionResult.setMarkedBy(teacher); + } assessmentQuestionResultDao.saveObject(lastAssessmentQuestionResult); AssessmentResult result = lastAssessmentQuestionResult.getAssessmentResult(); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java =================================================================== diff -u -r3085af1c7e3e6c3496af23a748d998886d7168fd -re9f21c562efc19cd5b5f9025f6d47165de059b39 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision 3085af1c7e3e6c3496af23a748d998886d7168fd) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/IAssessmentService.java (.../IAssessmentService.java) (revision e9f21c562efc19cd5b5f9025f6d47165de059b39) @@ -447,7 +447,7 @@ */ List getMarksArrayForLeaders(Long contentId); - void changeQuestionResultMark(Long questionResultUid, float newMark); + void changeQuestionResultMark(Long questionResultUid, float newMark, Integer teacherId); void notifyTeachersOnAttemptCompletion(Long sessionId, String userName); Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java =================================================================== diff -u -r5563dc18a8b8d19478fb804c8beef31e63bd249b -re9f21c562efc19cd5b5f9025f6d47165de059b39 --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 5563dc18a8b8d19478fb804c8beef31e63bd249b) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/web/controller/MonitoringController.java (.../MonitoringController.java) (revision e9f21c562efc19cd5b5f9025f6d47165de059b39) @@ -352,7 +352,9 @@ && !StringUtils.isEmpty(request.getParameter(AssessmentConstants.PARAM_QUESTION_RESULT_UID))) { Long questionResultUid = WebUtil.readLongParam(request, AssessmentConstants.PARAM_QUESTION_RESULT_UID); float newGrade = Float.valueOf(request.getParameter(AssessmentConstants.PARAM_GRADE)); - service.changeQuestionResultMark(questionResultUid, newGrade); + HttpSession ss = SessionManager.getSession(); + UserDTO teacher = (UserDTO) ss.getAttribute(AttributeNames.USER); + service.changeQuestionResultMark(questionResultUid, newGrade, teacher.getUserID()); } }