Skip to content

Commit 884eda0

Browse files
authored
Merge pull request #486 from bcgov/feature/GRAD2-2509
GRAD2-2509: matching student course with optional program requirement…
2 parents 0021957 + 2f429f7 commit 884eda0

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

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

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ public RuleData fire() {
3838
List<GradRequirement> requirementsMet = new ArrayList<>();
3939
List<GradRequirement> requirementsNotMet = new ArrayList<>();
4040

41+
List<CourseRequirement> courseRequirements = ruleProcessorData.getCourseRequirements();
42+
if(courseRequirements == null) {
43+
courseRequirements = new ArrayList<>();
44+
}
45+
4146
List<StudentCourse> courseList = RuleProcessorRuleUtils.getUniqueStudentCourses(
4247
obj.getStudentCoursesOptionalProgram(), ruleProcessorData.isProjected());
4348
List<OptionalProgramRequirement> careerProgramRulesMatch = obj.getOptionalProgramRules()
@@ -57,8 +62,16 @@ public RuleData fire() {
5762
while (studentCourseIterator.hasNext()) {
5863

5964
StudentCourse sc = studentCourseIterator.next();
60-
for(OptionalProgramRequirement pR:careerProgramRulesMatch) {
61-
if(pR.getOptionalProgramRequirementCode().getRequiredLevel() == null || pR.getOptionalProgramRequirementCode().getRequiredLevel().trim().compareTo("") == 0) {
65+
List<CourseRequirement> matchedCourseRequirements = courseRequirements.stream()
66+
.filter(cr -> sc.getCourseCode().compareTo(cr.getCourseCode()) == 0
67+
&& sc.getCourseLevel().compareTo(cr.getCourseLevel()) == 0)
68+
.toList();
69+
70+
for(OptionalProgramRequirement pR:careerProgramRulesMatch) {
71+
long matchedCount = matchedCourseRequirements.stream()
72+
.filter(cr -> cr.getRuleCode().getCourseRequirementCode().compareTo(pR.getOptionalProgramRequirementCode().getOptProReqCode()) == 0)
73+
.count();
74+
if(matchedCount > 0 && (pR.getOptionalProgramRequirementCode().getRequiredLevel() == null || pR.getOptionalProgramRequirementCode().getRequiredLevel().trim().compareTo("") == 0)) {
6275
requiredCredits = Integer.parseInt(pR.getOptionalProgramRequirementCode().getRequiredCredits());
6376
if (totalCredits + sc.getCredits() <= requiredCredits) {
6477
totalCredits += sc.getCredits();

0 commit comments

Comments
 (0)