Skip to content

Commit fb5e934

Browse files
authored
fix/GRAD2-3792 (#554)
* First minor fix for reqt 19 * Added precedence for non-projected courses via sorting. This prioritizes actual passed courses before projected ones during tvr processing. Fix applied to min credits and elective (19 and 17)
1 parent 559137b commit fb5e934

7 files changed

Lines changed: 20 additions & 0 deletions

‎api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12OtherRule.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.springframework.stereotype.Component;
1212

1313
import java.util.ArrayList;
14+
import java.util.Comparator;
1415
import java.util.List;
1516
import java.util.stream.Collectors;
1617

@@ -49,6 +50,8 @@ public RuleData fire() {
4950
return ruleProcessorData;
5051
}
5152

53+
studentCourses.sort(Comparator.comparing(StudentCourse::isProjected));
54+
5255
List<String> socialStudiesCourseCodeList = ruleProcessorData.getCourseRequirements().stream().filter(cr -> "502".equals(cr.getRuleCode().getCourseRequirementCode())).map(CourseRequirement::getCourseCode).collect(Collectors.toList());
5356
if (socialStudiesCourseCodeList.isEmpty()) {
5457
socialStudiesCourseCodeList = List.of(COURSE_CODE_SOCIAL_STUDIES);

‎api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsElective12Rule.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.springframework.stereotype.Component;
1212

1313
import java.util.ArrayList;
14+
import java.util.Comparator;
1415
import java.util.List;
1516
import java.util.stream.Collectors;
1617

@@ -42,6 +43,8 @@ public RuleData fire() {
4243
return ruleProcessorData;
4344
}
4445

46+
studentCourses.sort(Comparator.comparing(StudentCourse::isProjected));
47+
4548
for (ProgramRequirement gradProgramRule : gradProgramRules) {
4649
requiredCredits = Integer.parseInt(gradProgramRule.getProgramRequirementCode().getRequiredCredits().trim()); // list
4750

‎api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinCreditsRule.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.springframework.stereotype.Component;
1313

1414
import java.util.ArrayList;
15+
import java.util.Comparator;
1516
import java.util.List;
1617
import java.util.stream.Collectors;
1718

@@ -47,6 +48,9 @@ public RuleData fire() {
4748

4849
RuleProcessorRuleUtils.updateCourseLevelForCLC(studentCourses, "12");
4950

51+
// sorting gives preference to non-projected courses GRAD2-3792
52+
studentCourses.sort(Comparator.comparing(StudentCourse::isProjected));
53+
5054
for (ProgramRequirement gradProgramRule : gradProgramRules) {
5155
requiredCredits = Integer.parseInt(gradProgramRule.getProgramRequirementCode().getRequiredCredits().trim());
5256
totalCredits = studentCourses

‎api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits1996Rule.java‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public RuleData fire() {
3737
int ldCourseCounter = 0;
3838
List<StudentCourse> tempStudentCourseList = RuleProcessorRuleUtils
3939
.getUniqueStudentCourses(ruleProcessorData.getStudentCourses(), ruleProcessorData.isProjected());
40+
4041
List<StudentCourse> minCreditGrade12Courses = tempStudentCourseList.stream().filter(StudentCourse::isUsedInMinCreditRule).collect(Collectors.toList());
4142
List<StudentCourse> minCreditGrade12CoursesWithLeftOverCredits = minCreditGrade12Courses.stream()
4243
.filter(sc -> sc.isUsedInMinCreditRule() && (sc.getLeftOverCredits() != null && sc.getLeftOverCredits() > 0)).toList();

‎api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCredits2023Rule.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import java.util.ArrayList;
1515
import java.util.Arrays;
16+
import java.util.Comparator;
1617
import java.util.List;
1718
import java.util.stream.Collectors;
1819

@@ -46,6 +47,8 @@ public RuleData fire() {
4647
return ruleProcessorData;
4748
}
4849

50+
studentCourses.sort(Comparator.comparing(StudentCourse::isProjected));
51+
4952
for (ProgramRequirement gradProgramRule : gradProgramRules) {
5053
requiredCredits = Integer.parseInt(gradProgramRule.getProgramRequirementCode().getRequiredCredits().trim()); // list
5154
for (StudentCourse sc : studentCourses) {

‎api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsFrench1996Rule.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.springframework.stereotype.Component;
1212

1313
import java.util.ArrayList;
14+
import java.util.Comparator;
1415
import java.util.List;
1516
import java.util.stream.Collectors;
1617

@@ -39,6 +40,8 @@ public RuleProcessorData fire() {
3940
List<StudentCourse> studentCourses = RuleProcessorRuleUtils
4041
.getUniqueStudentCourses(ruleProcessorData.getStudentCourses(), ruleProcessorData.isProjected());
4142

43+
studentCourses.sort(Comparator.comparing(StudentCourse::isProjected));
44+
4245
logger.debug("Unique Courses: {}",studentCourses.size());
4346

4447
List<ProgramRequirement> gradProgramRules = ruleProcessorData

‎api/src/main/java/ca/bc/gov/educ/api/ruleengine/rule/MinElectiveCreditsRule.java‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.springframework.stereotype.Component;
1212

1313
import java.util.ArrayList;
14+
import java.util.Comparator;
1415
import java.util.List;
1516
import java.util.stream.Collectors;
1617

@@ -44,6 +45,8 @@ public RuleData fire() {
4445
return ruleProcessorData;
4546
}
4647

48+
studentCourses.sort(Comparator.comparing(StudentCourse::isProjected));
49+
4750
for (ProgramRequirement gradProgramRule : gradProgramRules) {
4851
requiredCredits = Integer.parseInt(gradProgramRule.getProgramRequirementCode().getRequiredCredits().trim()); // list
4952
for (StudentCourse sc : studentCourses) {

0 commit comments

Comments
 (0)