private List <DateTime> GetFreeTimesForPerson(List <DateTime> freeTimes, IWeekScheduler person) { List <DateTime> ret = new List <DateTime>(); if (freeTimes == null) { //Zjistit volné časy pro objekt DateTime dateNow = DateFrom; while (dateNow <= DateTo.AddDays(1).AddHours(-1)) { if (dateNow.Hour < 7 || dateNow.Hour > 18) { dateNow = dateNow.AddHours(1); continue; } var ev = person.EventInTime(dateNow); if (ev == null) { ret.Add(dateNow); } dateNow = dateNow.AddHours(1); } } else if (freeTimes.Count == 0) { ret = null; } else { //Porovnat volné časy s časy objektu foreach (var dateNow in freeTimes) { var ev = person.EventInTime(dateNow); if (ev == null) { ret.Add(dateNow); } } } return(ret); }
/// <summary> /// Doplňující přetížená verze metody IWeekScheduler.EventInTime (pro zjednodušení volání). /// Namísto instance třídy WeekHour očekává běžnější representaci času – instanci třídy DateTime /// </summary> public static Event EventInTime(this IWeekScheduler scheduler, DateTime time) { return(scheduler.EventInTime(new WeekHour(time))); }