@Override
protected RuleResult executeEnrolmentVerificationWithRules(final ICurricularRule curricularRule,
final IDegreeModuleToEvaluate sourceDegreeModuleToEvaluate, final EnrolmentContext enrolmentContext) {
final RestrictionEnroledDegreeModule rule = (RestrictionEnroledDegreeModule) curricularRule;
if (!canApplyRule(enrolmentContext, rule)) {
return RuleResult.createNA(sourceDegreeModuleToEvaluate.getDegreeModule());
}
final CurricularCourse curricularCourseToBeEnroled = rule.getPrecedenceDegreeModule();
if (isApproved(enrolmentContext, curricularCourseToBeEnroled) || isEnroled(enrolmentContext, curricularCourseToBeEnroled)
|| isEnrolling(enrolmentContext, curricularCourseToBeEnroled)) {
return RuleResult.createTrue(sourceDegreeModuleToEvaluate.getDegreeModule());
}
return RuleResult
.createFalse(
sourceDegreeModuleToEvaluate.getDegreeModule(),
"curricularRules.ruleExecutors.RestrictionEnroledDegreeModuleExecutor.student.is.not.enroled.to.precendenceDegreeModule",
rule.getDegreeModuleToApplyRule().getName(), rule.getPrecedenceDegreeModule().getName());
}