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