From b0d7dcc0a7a33d6cdcc14dab3f8510ed4be2b8b3 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 8 Mar 2017 16:56:24 +0100
Subject: [PATCH] OO-2522: only save the assessment id if available to not
 loose it, fallback in QTI 2.1 to see the last session if the assessment id is
 not available

---
 .../assessment/manager/CourseAssessmentManagerImpl.java    | 4 +++-
 .../org/olat/course/assessment/ui/tool/AssessmentForm.java | 2 +-
 .../olat/course/nodes/iq/QTI21AssessmentRunController.java | 7 ++++++-
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java
index 36000ae346d..a59ec52b898 100644
--- a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java
+++ b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java
@@ -267,7 +267,9 @@ public class CourseAssessmentManagerImpl implements AssessmentManager {
 		}
 		assessmentEntry.setPassed(passed);
 		assessmentEntry.setFullyAssessed(scoreEvaluation.getFullyAssessed());
-		assessmentEntry.setAssessmentId(assessmentId);
+		if(assessmentId != null) {
+			assessmentEntry.setAssessmentId(assessmentId);
+		}
 		if(scoreEvaluation.getAssessmentStatus() != null) {
 			assessmentEntry.setAssessmentStatus(scoreEvaluation.getAssessmentStatus());
 		}
diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentForm.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentForm.java
index 90afaf3c374..87c5db72387 100644
--- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentForm.java
+++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentForm.java
@@ -276,7 +276,7 @@ public class AssessmentForm extends FormBasicController {
 	protected void doUpdateAssessmentData(boolean setAsDone) {
 		Float updatedScore = null;
 		Boolean updatedPassed = null;
-		
+
 		if (isHasAttempts() && isAttemptsDirty()) {
 			assessableCourseNode.updateUserAttempts(new Integer(getAttempts()), assessedUserCourseEnv, getIdentity());
 		}
diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
index 8908186e220..29e89cdd300 100644
--- a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
+++ b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
@@ -442,7 +442,12 @@ public class QTI21AssessmentRunController extends BasicController implements Gen
 		} else {
 			AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
 			AssessmentEntry assessmentEntry = am.getAssessmentEntry(courseNode, getIdentity());
-			session = qtiService.getAssessmentTestSession(assessmentEntry.getAssessmentId());
+			if(assessmentEntry.getAssessmentId() != null) {
+				session = qtiService.getAssessmentTestSession(assessmentEntry.getAssessmentId());
+			} else {
+				RepositoryEntry courseEntry = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
+				session = qtiService.getLastAssessmentTestSessions(courseEntry, courseNode.getIdent(), testEntry, getIdentity());
+			}
 		}
 		
 		if(session == null) {
-- 
GitLab