diff --git a/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java b/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java index 203dcf6b012175042a006b5fb7cd68ba7a9f23a0..00c983ba9f93bacd2542da0b94882fda01028267 100644 --- a/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java +++ b/src/main/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProvider.java @@ -97,7 +97,8 @@ public class LearningPathNodeAccessProvider implements NodeAccessProvider { FullyAssessedResult result = getConfigs(courseNode).isFullyAssessedOnNodeVisited(); boolean participant = userCourseEnv.isParticipant(); if (participant && result.isEnabled()) { - AssessmentEntryStatus status = getStatus(courseNode, userCourseEnv, result.isDone()); + AssessmentEntryStatus status = getStatus(courseNode, userCourseEnv, result.isDone(), + result.isFullyAssessed()); courseAssessmentService.updateFullyAssessed(courseNode, userCourseEnv, Boolean.valueOf(result.isFullyAssessed()), status, Role.user); return true; @@ -137,16 +138,17 @@ public class LearningPathNodeAccessProvider implements NodeAccessProvider { FullyAssessedResult result) { boolean participant = userCourseEnv.isParticipant(); if (participant && result.isEnabled()) { - AssessmentEntryStatus newStatus = getStatus(courseNode, userCourseEnv, result.isDone()); + AssessmentEntryStatus status = getStatus(courseNode, userCourseEnv, result.isDone(), + result.isFullyAssessed()); courseAssessmentService.updateFullyAssessed(courseNode, userCourseEnv, - Boolean.valueOf(result.isFullyAssessed()), newStatus, by); + Boolean.valueOf(result.isFullyAssessed()), status, by); } } private AssessmentEntryStatus getStatus(CourseNode courseNode, UserCourseEnvironment userCourseEnvironment, - boolean isDone) { - return isDone - ? AssessmentEntryStatus.done + boolean setDone, boolean fullyAssessed) { + return setDone + ? fullyAssessed? AssessmentEntryStatus.done: AssessmentEntryStatus.notStarted : courseAssessmentService.getAssessmentEntry(courseNode, userCourseEnvironment).getAssessmentStatus(); } diff --git a/src/main/java/org/olat/course/run/scoring/StatusCompletionEvaluator.java b/src/main/java/org/olat/course/run/scoring/StatusCompletionEvaluator.java index 0024d799ead13696f5b2c2d7214764e792e65bd3..c70e6deae81cc550210e38559da293d89a763fcb 100644 --- a/src/main/java/org/olat/course/run/scoring/StatusCompletionEvaluator.java +++ b/src/main/java/org/olat/course/run/scoring/StatusCompletionEvaluator.java @@ -47,7 +47,7 @@ public class StatusCompletionEvaluator implements CompletionEvaluator { case notStarted: return 0.0; case inProgress: return 0.5; case inReview: return 0.75; - case done: return 1.0; + case done: return 0.9; // 1.0 is reached when fully assessed default: return 0.0; } } diff --git a/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java b/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java index 96cd45b2b516e8cd5b0955355fc5005593450494..04d5c4b474ab5ea3c6eb1d6506940e3656eee01f 100644 --- a/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java +++ b/src/test/java/org/olat/course/learningpath/manager/LearningPathNodeAccessProviderTest.java @@ -198,7 +198,7 @@ public class LearningPathNodeAccessProviderTest { sut.updateFullyAssessed(courseNodeMock, participantCourseEnv, Role.auto, result); verify(courseAssessmentService).updateFullyAssessed(courseNodeMock, participantCourseEnv, Boolean.FALSE, - AssessmentEntryStatus.done, Role.auto); + AssessmentEntryStatus.notStarted, Role.auto); } @Test