protected static bool IsWeekend(CalendarFillingMode mode, DateTime date, int relativeIdx)
 {
     if (mode == CalendarFillingMode.Weekend)
     {
         return(true);
     }
     if (mode == CalendarFillingMode.OnlySelectedDay)
     {
         return(false);
     }
     if (mode == CalendarFillingMode.FiveByTwo)
     {
         return(date.DayOfWeek == DayOfWeek.Sunday || date.DayOfWeek == DayOfWeek.Saturday);
     }
     if (mode == CalendarFillingMode.TwoByTwo)
     {
         return(relativeIdx / 2 % 2 != 0);
     }
     return(true);
 }
 protected void CheckWholeMonth(WorkerListPage page, DateTime month, CalendarFillingMode mode)
 => CheckCalendarRange(page, DateHelper.GetFirstDayOfMonth(month), DateHelper.GetLastDayOfMonth(month), mode);
        protected void CheckCalendarRange(WorkerListPage page, DateTime from, DateTime to, CalendarFillingMode mode)
        {
            from = from.Date;
            to   = to.Date;
            if (from.Month != to.Month || from.Year != to.Year)
            {
                throw new Exception("Dates should have same Month and Year");
            }

            if (mode == CalendarFillingMode.OnlySelectedDay && from != to)
            {
                throw new Exception($"Can't check one day in provided range: {from:dd.MM.yyyy} - {to:dd.MM.yyyy}");
            }

            Console.Write($"CheckCalendarRange [{from:dd.MM.yyyy} - {to:dd.MM.yyyy}] with mode: {mode}. WorkDaysMask: ");

            var firstDay     = DateHelper.GetFirstDayOfMonth(from);
            var startOfRange = from.Day - 1;

            for (var i = from.Day - 1; i < to.Day; i++)
            {
                var relativeDate = firstDay.AddDays(i);
                var isWeekend    = IsWeekend(mode, relativeDate, i - startOfRange);
                Console.Write(isWeekend ? "-" : "+");
                page.GetCell(0, i).WaitFilled(!isWeekend, $"в индексе {i}");
            }
        }
 public static void SetCalendarMode(this DayEditingBlock block, CalendarFillingMode mode)
 {
     block.CalendarMode.SelectByIndex((int)mode);
 }