From f9b0e253f8c934fb28a59b0ad3609bd5275a2787 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Tue, 18 Jun 2019 13:23:26 +0200
Subject: [PATCH] OO-4045: close manual mode started too early with follow-up
 time

---
 .../manager/AssessmentModeCoordinationServiceImpl.java     | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentModeCoordinationServiceImpl.java b/src/main/java/org/olat/course/assessment/manager/AssessmentModeCoordinationServiceImpl.java
index 98b7357b861..643ad5575db 100644
--- a/src/main/java/org/olat/course/assessment/manager/AssessmentModeCoordinationServiceImpl.java
+++ b/src/main/java/org/olat/course/assessment/manager/AssessmentModeCoordinationServiceImpl.java
@@ -249,6 +249,13 @@ public class AssessmentModeCoordinationServiceImpl implements AssessmentModeCoor
 				mode = ensureStatusOfMode(mode, Status.none);
 				sendEvent(AssessmentModeNotificationEvent.BEFORE, mode,
 						assessmentModeManager.getAssessedIdentityKeys(mode));
+			} else if(mode.getStatus() == Status.followup && mode.isManualBeginEnd() && !forceStatus) {
+				// close manual assessment mode in the follow-up time but started before the begin date
+				if(mode.getEndWithFollowupTime().compareTo(now) < 0) {
+					mode = ensureStatusOfMode(mode, Status.end);
+					sendEvent(AssessmentModeNotificationEvent.END, mode,
+							assessmentModeManager.getAssessedIdentityKeys(mode));
+				}
 			}
 		} else if(mode.getBeginWithLeadTime().compareTo(now) <= 0 && mode.getBegin().compareTo(now) > 0
 				&& mode.getBeginWithLeadTime().compareTo(mode.getBegin()) != 0) {
-- 
GitLab