public static void CheckPrerequisitesCorrect(List <StudyUnit> studyunits) { if (studyunits == null) { throw new ArgumentException("CheckPrerequisitesCorrect cannot be run with a null argument"); } List <string> tempString = new List <string>(); List <Trimesters> tempTrimesters = new List <Trimesters>(); List <Campuses> tempCampuses = new List <Campuses>(); string exceptionMessage = ""; for (int i = 0; i < studyunits.Count; i++) { foreach (string prequnit in studyunits[i].prerequisites) { StudyUnit tempstudyunit = new StudyUnit(prequnit, "dummy", tempString, 0, UnitClassification.elective, tempTrimesters, tempCampuses, tempString, 0); if (studyunits.IndexOf(tempstudyunit) == i) { exceptionMessage += "Unit " + studyunits[i].unitCode + " has the same prerequisite\n"; } else if (studyunits.IndexOf(tempstudyunit) < 0) { exceptionMessage += "Prerequisite " + prequnit + " for unit " + studyunits[i].unitCode + " does not exist\n"; } } } if (exceptionMessage.Length > 1) { throw new ArgumentException(exceptionMessage); } }
public override bool Equals(object obj) { if ((obj == null)) { return(false); } if ((obj.GetType() != typeof(StudyUnit)) && (obj.GetType() != typeof(UndergradUnit)) && (obj.GetType() != typeof(PostgradUnit))) { return(false); } StudyUnit compUnit = (StudyUnit)obj; if (compUnit.unitCode == unitCode) { return(true); } else { return(false); } }
public void CheckPrerequisites(List <StudyUnit> studyUnits) { if (studyUnits == null) { throw new ArgumentException("CheckPrerequisites cannot be run with a null argument"); } List <string> tempString = new List <string>(); List <Trimesters> tempTrimesters = new List <Trimesters>(); List <Campuses> tempCampuses = new List <Campuses>(); List <UnitGrade> unitGrades, previousGrades; StudyUnit tempUnit, locatedUnit; UnitGrade tempUnitGrade, locatedUnitGrade; int indexLocation, tempLocation; List <string> prerequisites; bool foundPrerequisite; string exceptionMessage = ""; if (trimesterPerformanceList == null) { return; } for (int i = 0; i < trimesterPerformanceList.Count; i++) { unitGrades = trimesterPerformanceList[i].unitGrades; for (int j = 0; j < unitGrades.Count; j++) { tempUnit = new StudyUnit(unitGrades[j].unitCode, unitGrades[j].unitName, tempString, 0, UnitClassification.elective, tempTrimesters, tempCampuses, tempString, 40); tempLocation = studyUnits.IndexOf(tempUnit); if (tempLocation >= 0) { locatedUnit = studyUnits[studyUnits.IndexOf(tempUnit)]; } else { continue; } prerequisites = locatedUnit.prerequisites; for (int k = 0; k < locatedUnit.prerequisites.Count; k++) { foundPrerequisite = false; for (int m = i - 1; m >= 0; m--) { previousGrades = trimesterPerformanceList[m].unitGrades; tempUnitGrade = new UnitGrade(prerequisites[k], " ", 0); indexLocation = previousGrades.IndexOf(tempUnitGrade); if (indexLocation >= 0) { locatedUnitGrade = previousGrades[indexLocation]; if (locatedUnitGrade.mark > locatedUnitGrade.gradingScheme.gradeRanges[0]) { foundPrerequisite = true; break; } } } if (!foundPrerequisite) { exceptionMessage += "Unit : " + unitGrades[j].unitCode + " has prerequisite " + locatedUnit.prerequisites[k] + " which has not been fulfilled yet\n"; } } } } if (exceptionMessage.Length > 1) { throw new ArgumentException(exceptionMessage); } }