Пример #1
0
        /// <summary>
        /// Spins the Wheel obtaning the Engineers that are going to work in the current day.
        /// </summary>
        /// <returns> List of Engineers that are going to work in the current day </returns>
        public IList <Shift> SpinTheWheel()
        {
            List <Shift> todaysShifts;

            // Validate if the wheel has been spun today, if so, returns enginers working today
            todaysShifts = shiftService.GetTodaysShifts().ToList();

            if (!todaysShifts.Any())
            {
                var availableEngineers = engineerService.GetAvailableEngineers(shiftService.GetShiftsInCurrentPeriod(GetDaysInCurrentPeriod()), shiftsPerDay);

                for (int i = 1; i <= shiftsPerDay; i++)
                {
                    var randomIndex    = new Random(DateTime.Now.Millisecond).Next(0, availableEngineers.Count());
                    var randomEngineer = availableEngineers[randomIndex];
                    availableEngineers.RemoveAt(randomIndex);

                    todaysShifts.Add(
                        shiftService.InsertShift(new Shift {
                        Date       = DateTimeUtils.Today,
                        Engineer   = randomEngineer,
                        ShiftOrder = i
                    })
                        );
                }

                shiftService.SaveShifts();
            }

            return(todaysShifts);
        }