@Override
protected RuleResult executeEnrolmentVerificationWithRules(final ICurricularRule curricularRule,
final IDegreeModuleToEvaluate sourceDegreeModuleToEvaluate, final EnrolmentContext enrolmentContext) {
final RestrictionNotEnroledDegreeModule rule = (RestrictionNotEnroledDegreeModule) curricularRule;
if (!canApplyRule(enrolmentContext, rule)) {
return RuleResult.createNA(sourceDegreeModuleToEvaluate.getDegreeModule());
}
final CurricularCourse curricularCourseNotToBeEnroled = rule.getPrecedenceDegreeModule();
if (!isApproved(enrolmentContext, curricularCourseNotToBeEnroled)
&& !isEnroled(enrolmentContext, curricularCourseNotToBeEnroled)
&& !isEnrolling(enrolmentContext, curricularCourseNotToBeEnroled)) {
return RuleResult.createTrue(sourceDegreeModuleToEvaluate.getDegreeModule());
}
return RuleResult
.createFalse(
sourceDegreeModuleToEvaluate.getDegreeModule(),
"curricularRules.ruleExecutors.RestrictionNotEnroledDegreeModuleExecutor.student.is.enroled.in.precendenceDegreeModule",
rule.getDegreeModuleToApplyRule().getName(), rule.getPrecedenceDegreeModule().getName());
}