From c0260ae39f4f71bc20f34aa0f9dfa0dc67016d91 Mon Sep 17 00:00:00 2001
From: aboeckle <alexander.boeckle@frentix.com>
Date: Mon, 25 May 2020 08:48:23 +0200
Subject: [PATCH] OO-4550 Expose results fix

---
 .../iq/QTI21AssessmentRunController.java      | 149 +++++++++---------
 1 file changed, 75 insertions(+), 74 deletions(-)

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 c013ebe1f70..bbd2c04ad4a 100644
--- a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
+++ b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java
@@ -447,62 +447,87 @@ public class QTI21AssessmentRunController extends BasicController implements Gen
 	private void exposeVisiblityPeriod(boolean passed) {
 		String showResultsActive = config.getStringValue(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS);
 		
-		Date startDate;
-		Date endDate;
-		Date currentDate = new Date();
-		
-		switch (showResultsActive) {
-		
-		case IQEditController.CONFIG_VALUE_DATE_DEPENDENT_RESULT_ALWAYS:
-			mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
-			break;
-		case IQEditController.CONFIG_VALUE_DATE_DEPENDENT_RESULT_DIFFERENT:
-			if (passed) {
-				startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_PASSED_START_DATE);
-				endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_PASSED_END_DATE);
-				
-				if(startDate != null && currentDate.before(startDate)) {
-					Formatter formatter = Formatter.getInstance(getLocale());
-					String visibilityStartDate = formatter.formatDate(startDate);
-					String visibilityEndDate = "-";
-					if(endDate != null && currentDate.before(endDate)) {
-						visibilityEndDate = formatter.formatDate(endDate);
-					} else if(endDate != null && currentDate.after(endDate)) {
-						String visibilityPeriod = translate("showResults.visibility.past");
+		if (showResultsActive != null) {
+			Date startDate;
+			Date endDate;
+			Date currentDate = new Date();
+
+			switch (showResultsActive) {
+			case IQEditController.CONFIG_VALUE_DATE_DEPENDENT_RESULT_ALWAYS:
+				mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
+				break;
+			case IQEditController.CONFIG_VALUE_DATE_DEPENDENT_RESULT_DIFFERENT:
+				if (passed) {
+					startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_PASSED_START_DATE);
+					endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_PASSED_END_DATE);
+
+					if(startDate != null && currentDate.before(startDate)) {
+						Formatter formatter = Formatter.getInstance(getLocale());
+						String visibilityStartDate = formatter.formatDate(startDate);
+						String visibilityEndDate = "-";
+						if(endDate != null && currentDate.before(endDate)) {
+							visibilityEndDate = formatter.formatDate(endDate);
+						} else if(endDate != null && currentDate.after(endDate)) {
+							String visibilityPeriod = translate("showResults.visibility.past");
+							mainVC.contextPut("visibilityPeriod", visibilityPeriod);
+							break;
+						}
+						String visibilityPeriod = translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate });
+						mainVC.contextPut("visibilityPeriod", visibilityPeriod);
+						break;
+					}
+				} else {
+					startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_FAILED_START_DATE);
+					endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_FAILED_END_DATE);
+
+					if(startDate != null && currentDate.before(startDate)) {
+						Formatter formatter = Formatter.getInstance(getLocale());
+						String visibilityStartDate = formatter.formatDate(startDate);
+						String visibilityEndDate = "-";
+						if(endDate != null && currentDate.before(endDate)) {
+							visibilityEndDate = formatter.formatDate(endDate);
+						} else if(endDate != null && currentDate.after(endDate)) {
+							String visibilityPeriod = translate("showResults.visibility.past");
+							mainVC.contextPut("visibilityPeriod", visibilityPeriod);
+							break;
+						}
+						String visibilityPeriod = translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate });
 						mainVC.contextPut("visibilityPeriod", visibilityPeriod);
 						break;
 					}
-					String visibilityPeriod = translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate });
-					mainVC.contextPut("visibilityPeriod", visibilityPeriod);
-					break;
 				}
-			} else {
-				startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_FAILED_START_DATE);
-				endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_FAILED_END_DATE);
-				
-				if(startDate != null && currentDate.before(startDate)) {
-					Formatter formatter = Formatter.getInstance(getLocale());
-					String visibilityStartDate = formatter.formatDate(startDate);
-					String visibilityEndDate = "-";
-					if(endDate != null && currentDate.before(endDate)) {
-						visibilityEndDate = formatter.formatDate(endDate);
-					} else if(endDate != null && currentDate.after(endDate)) {
-						String visibilityPeriod = translate("showResults.visibility.past");
+				mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
+				break;
+			case IQEditController.CONFIG_VALUE_DATE_DEPENDENT_RESULT_FAILED_ONLY:
+				if (!passed) {
+					startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_FAILED_START_DATE);
+					endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_FAILED_END_DATE);
+
+					if(startDate != null && currentDate.before(startDate)) {
+						Formatter formatter = Formatter.getInstance(getLocale());
+						String visibilityStartDate = formatter.formatDate(startDate);
+						String visibilityEndDate = "-";
+						if(endDate != null && currentDate.before(endDate)) {
+							visibilityEndDate = formatter.formatDate(endDate);
+						} else if(endDate != null && currentDate.after(endDate)) {
+							String visibilityPeriod = translate("showResults.visibility.past");
+							mainVC.contextPut("visibilityPeriod", visibilityPeriod);
+							break;
+						}
+						String visibilityPeriod = translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate });
 						mainVC.contextPut("visibilityPeriod", visibilityPeriod);
 						break;
 					}
-					String visibilityPeriod = translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate });
-					mainVC.contextPut("visibilityPeriod", visibilityPeriod);
+				} else {
+					mainVC.contextPut("showResultsOnHomePage", Boolean.valueOf(false));
 					break;
 				}
-			}
-			mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
-			break;
-		case IQEditController.CONFIG_VALUE_DATE_DEPENDENT_RESULT_FAILED_ONLY:
-			if (!passed) {
-				startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_FAILED_START_DATE);
-				endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_FAILED_END_DATE);
-				
+				mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
+				break;
+			case IQEditController.CONFIG_VALUE_DATE_DEPENDENT_RESULT_SAME:
+				startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_START_DATE);
+				endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_END_DATE);
+
 				if(startDate != null && currentDate.before(startDate)) {
 					Formatter formatter = Formatter.getInstance(getLocale());
 					String visibilityStartDate = formatter.formatDate(startDate);
@@ -518,36 +543,12 @@ public class QTI21AssessmentRunController extends BasicController implements Gen
 					mainVC.contextPut("visibilityPeriod", visibilityPeriod);
 					break;
 				}
-			} else {
-				mainVC.contextPut("showResultsOnHomePage", Boolean.valueOf(false));
+				mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
 				break;
-			}
-			mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
-			break;
-		case IQEditController.CONFIG_VALUE_DATE_DEPENDENT_RESULT_SAME:
-			startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_START_DATE);
-			endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_END_DATE);
-			
-			if(startDate != null && currentDate.before(startDate)) {
-				Formatter formatter = Formatter.getInstance(getLocale());
-				String visibilityStartDate = formatter.formatDate(startDate);
-				String visibilityEndDate = "-";
-				if(endDate != null && currentDate.before(endDate)) {
-					visibilityEndDate = formatter.formatDate(endDate);
-				} else if(endDate != null && currentDate.after(endDate)) {
-					String visibilityPeriod = translate("showResults.visibility.past");
-					mainVC.contextPut("visibilityPeriod", visibilityPeriod);
-					break;
-				}
-				String visibilityPeriod = translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate });
-				mainVC.contextPut("visibilityPeriod", visibilityPeriod);
+			default:
+				mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
 				break;
 			}
-			mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
-			break;
-		default:
-			mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future"));
-			break;
 		}
 	}
 	
-- 
GitLab