示例#1
0
        private void AddDiversToDiveSchedule(DiveAlgorithmProduct algorithm)
        {
            string date = "";

            // Order dive schedules by date ascending then descending by number of divers
            diveSchedule = diveSchedule.OrderBy(x => x.date).ThenByDescending(x => x.numOfDivers).ToList();

            // Generate random divers list for each dive
            // and assign each diver to group of 2 or 3 divers
            for (int i = 0; i < diveSchedule.Count(); i++)
            {
                // if dive is on same day as previous one then use same list of divers
                if (diveSchedule[i].date.Equals(date))
                {
                    diveSchedule[i].divers = new List <Diver>(diveSchedule[i - 1].divers);

                    // if there's less divers then on previous dive on same day then remove N divers from list
                    if (diveSchedule[i].divers.Count() > diveSchedule[i].numOfDivers)
                    {
                        diveSchedule[i].divers.RemoveRange(diveSchedule[i].numOfDivers - 1, diveSchedule[i].divers.Count() - diveSchedule[i].numOfDivers);
                    }
                }
                else
                {
                    diveSchedule[i].setDivers(divers, random, diveSchedule[i].numOfDivers);
                }

                List <PairHelper> diveGroup = algorithm.GetDivePairs(diveSchedule[i].divers, diveSchedule[i]);
                diveSchedule[i].setDiveGroups(diveGroup);

                date = diveSchedule[i].date;
            }
        }
示例#2
0
        public void Init()
        {
            string[] diversRaw   = ReadFile(diversFilePath);
            string[] scheduleRaw = ReadFile(diveScheduleFilePath);
            outFilePath = GetOutFilePath(outFilePath);

            if (diversRaw != null && scheduleRaw != null)
            {
                AddDiversToList(diversRaw);
                AddDiveSchedule(scheduleRaw);

                DivingClubSingleton divingClub = DivingClubSingleton.GetInstance();

                DiveAlgorithmFactory diveFactory = new DiveAlgorithmFactory();
                DiveAlgorithmProduct algorithm   = diveFactory.createAlgorithm(algorithmName);

                AddDiversToDiveSchedule(algorithm);

                Writer.CreateFile(outFilePath);
                Writer.WriteDiveSchedule(diveSchedule.AsEnumerable(), outFilePath);
                Writer.WriteDivers(divers.AsEnumerable(), outFilePath);
            }
        }