// 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 IClassActivityCollection CreateClassActivityCollectionForPolicy(OverlappingPolicy overlappingPolicy) { if ((int)overlappingPolicy < 0 || (int)overlappingPolicy > 3) { throw new InvalidEnumArgumentException(nameof(overlappingPolicy), (int)overlappingPolicy, typeof(OverlappingPolicy)); } IClassActivityCollection classActivityCollection; if (overlappingPolicy.HasAllOfFlags(OverlappingPolicy.AllowOverlapping)) { if (overlappingPolicy.HasAllOfFlags(OverlappingPolicy.SaveTimeForLaunch)) { throw new NotImplementedException(); } classActivityCollection = new ClassActivityCollection(); } else { // Disallow overlapping if (overlappingPolicy.HasAllOfFlags(OverlappingPolicy.SaveTimeForLaunch)) { classActivityCollection = new NoOverlapsAndLaunchTimeClassActivityCollection(); } else { classActivityCollection = new NoOverlapsClassActivityCollection(); } } return(classActivityCollection); }