Example #1
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));
        }
Example #2
0
        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);
        }