// IDEA: reference to the algorithm instance with the data to operate on (and chain it in the constructor) public ClassScheduleSetupAlgorithm(IClassActivityCollection classActivitiesCollection) { ClassSchedules = new List <ClassSchedule>(); CurrentScheduleBuilder = new ClassScheduleBuilder(classActivitiesCollection); PermutationIndex = 0; }
public ClassScheduleBuilder(IClassActivityCollection classActivitiesCollection) { if (classActivitiesCollection is null) { throw new ArgumentNullException(nameof(classActivitiesCollection)); } CurrentPlacements = new List <CourseSchedulePlacement>(); CurrentCourseActivities = classActivitiesCollection; InvalidScope = 0; }
// TODO: fix to work with all parameters private static IEnumerable <ClassSchedule> BuildSchedule ( Semester semester, PracticeClassSource practiceClassSource, OverlappingPolicy overlappingPolicy, PermutationInfo permutationInfo ) { IClassActivityCollection classActivitiesCollection = CreateClassActivityCollectionForPolicy(overlappingPolicy); ClassScheduleSetupAlgorithm algorithm = CreateAlgorithm(classActivitiesCollection, practiceClassSource); return(algorithm.CalculateSetup(semester)); }
private static ClassScheduleSetupAlgorithm CreateAlgorithm(IClassActivityCollection classActivitiesCollection, PracticeClassSource practiceClassSource) { switch (practiceClassSource) { case PracticeClassSource.GroupOnly: return(new PracticeClassFromGroupOnlySetupAlgorithm(classActivitiesCollection)); case PracticeClassSource.AllGroups: return(new PracticeClassFromAllGroupsSetupAlgorithm(classActivitiesCollection)); default: throw new InvalidEnumArgumentException(nameof(practiceClassSource), (int)practiceClassSource, typeof(PracticeClassSource)); } }
public PracticeClassFromAllGroupsSetupAlgorithm(IClassActivityCollection classActivitiesCollection) : base(classActivitiesCollection) { PraticeClasses = new Dictionary <Course, ClassActivitiesInfo>(); }
public PracticeClassFromGroupOnlySetupAlgorithm(IClassActivityCollection classActivitiesCollection) : base(classActivitiesCollection) { }