Ejemplo n.º 1
0
        public SupportDay GenerateNewDay()
        {
            var day = _supportSlotRepository.GetSupportDay(_curentDate);

            if (day != null)
            {
                _curentDate = _curentDate.AddDays(1);
                return(day);
            }

            var    supportDay = new SupportDay(_slotsInADay, _curentDate);
            Random rand       = new Random();

            var engeneersToSelectFrom = GetEngeneersToSelectFrom();

            while (!supportDay.IsFilled)
            {
                if (engeneersToSelectFrom.Count == 0)
                {
                    engeneersToSelectFrom = GetEngeneersToSelectFrom();
                }

                var nextEngeneerIndex = rand.Next(0, engeneersToSelectFrom.Count);

                supportDay.AddSlot(engeneersToSelectFrom[nextEngeneerIndex]);
                engeneersToSelectFrom.Remove(engeneersToSelectFrom[nextEngeneerIndex]);
            }

            // persist support day
            _supportSlotRepository.AddSupportDay(supportDay);

            _curentDate = _curentDate.AddDays(1);

            return(supportDay);
        }
        public static SupportDay GetLastSupportDay(this ISupportSlotRepository supportSlotRepository)
        {
            if (!supportSlotRepository.GetSupportSlots().Any())
            {
                return(null);
            }

            var lastSlotDateTime = supportSlotRepository.GetSupportSlots().Max(x => x.Date);
            var lastDaySlots     = supportSlotRepository.GetSupportSlots().Where(x => x.Date.Date.Equals(lastSlotDateTime.Date));

            if (!lastDaySlots.Any())
            {
                return(null);
            }

            var lastSupportDay = new SupportDay(lastDaySlots);

            return(lastSupportDay);
        }
 public static void AddSupportDay(this ISupportSlotRepository supportSlotRepository, SupportDay supportDay)
 {
     foreach (var slot in supportDay.Slots)
     {
         supportSlotRepository.AddSupportSlot(slot);
     }
 }