diff --git a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12OtherRule.java b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12OtherRule.java index e6a4439..4057c57 100644 --- a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12OtherRule.java +++ b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12OtherRule.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -49,6 +50,8 @@ public RuleData fire() { return ruleProcessorData; } + studentCourses.sort(Comparator.comparing(StudentCourse::isProjected)); + List socialStudiesCourseCodeList = ruleProcessorData.getCourseRequirements().stream().filter(cr -> "502".equals(cr.getRuleCode().getCourseRequirementCode())).map(CourseRequirement::getCourseCode).collect(Collectors.toList()); if (socialStudiesCourseCodeList.isEmpty()) { socialStudiesCourseCodeList = List.of(COURSE_CODE_SOCIAL_STUDIES); diff --git a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12Rule.java b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12Rule.java index 678a11e..6f38d04 100644 --- a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12Rule.java +++ b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12Rule.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -42,6 +43,8 @@ public RuleData fire() { return ruleProcessorData; } + studentCourses.sort(Comparator.comparing(StudentCourse::isProjected)); + for (ProgramRequirement gradProgramRule : gradProgramRules) { requiredCredits = Integer.parseInt(gradProgramRule.getProgramRequirementCode().getRequiredCredits().trim()); // list diff --git a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsRule.java b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsRule.java index 533fc1e..4fc27e6 100644 --- a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsRule.java +++ b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsRule.java @@ -12,6 +12,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -47,6 +48,9 @@ public RuleData fire() { RuleProcessorRuleUtils.updateCourseLevelForCLC(studentCourses, "12"); + // sorting gives preference to non-projected courses GRAD2-3792 + studentCourses.sort(Comparator.comparing(StudentCourse::isProjected)); + for (ProgramRequirement gradProgramRule : gradProgramRules) { requiredCredits = Integer.parseInt(gradProgramRule.getProgramRequirementCode().getRequiredCredits().trim()); totalCredits = studentCourses diff --git a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits1996Rule.java b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits1996Rule.java index 36d7d51..6278376 100644 --- a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits1996Rule.java +++ b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits1996Rule.java @@ -37,6 +37,7 @@ public RuleData fire() { int ldCourseCounter = 0; List tempStudentCourseList = RuleProcessorRuleUtils .getUniqueStudentCourses(ruleProcessorData.getStudentCourses(), ruleProcessorData.isProjected()); + List minCreditGrade12Courses = tempStudentCourseList.stream().filter(StudentCourse::isUsedInMinCreditRule).collect(Collectors.toList()); List minCreditGrade12CoursesWithLeftOverCredits = minCreditGrade12Courses.stream() .filter(sc -> sc.isUsedInMinCreditRule() && (sc.getLeftOverCredits() != null && sc.getLeftOverCredits() > 0)).toList(); diff --git a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits2023Rule.java b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits2023Rule.java index b6639f9..7aa38bc 100644 --- a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits2023Rule.java +++ b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits2023Rule.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -46,6 +47,8 @@ public RuleData fire() { return ruleProcessorData; } + studentCourses.sort(Comparator.comparing(StudentCourse::isProjected)); + for (ProgramRequirement gradProgramRule : gradProgramRules) { requiredCredits = Integer.parseInt(gradProgramRule.getProgramRequirementCode().getRequiredCredits().trim()); // list for (StudentCourse sc : studentCourses) { diff --git a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsFrench1996Rule.java b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsFrench1996Rule.java index 0e1a049..9d9ad14 100644 --- a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsFrench1996Rule.java +++ b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsFrench1996Rule.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -39,6 +40,8 @@ public RuleProcessorData fire() { List studentCourses = RuleProcessorRuleUtils .getUniqueStudentCourses(ruleProcessorData.getStudentCourses(), ruleProcessorData.isProjected()); + studentCourses.sort(Comparator.comparing(StudentCourse::isProjected)); + logger.debug("Unique Courses: {}",studentCourses.size()); List gradProgramRules = ruleProcessorData diff --git a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsRule.java b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsRule.java index cd8a14e..a4a2370 100644 --- a/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsRule.java +++ b/api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsRule.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -44,6 +45,8 @@ public RuleData fire() { return ruleProcessorData; } + studentCourses.sort(Comparator.comparing(StudentCourse::isProjected)); + for (ProgramRequirement gradProgramRule : gradProgramRules) { requiredCredits = Integer.parseInt(gradProgramRule.getProgramRequirementCode().getRequiredCredits().trim()); // list for (StudentCourse sc : studentCourses) {