// 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)); } }