private void RemoveNonWorkingTime(TimeIntervalCollectionEx freeIntervals, DateTime date)
        {
            DateTime clientDate = TimeZoneHelper.ToClientTime(date).Date;

            TimeInterval clientNonWorkingTime = new TimeInterval(clientDate + NonWorkingTime.Start, clientDate + NonWorkingTime.End);

            freeIntervals.Remove(TimeZoneHelper.FromClientTime(clientNonWorkingTime));
        }
        private void RemoveNonWorkingDay(TimeIntervalCollectionEx freeIntervals, DateTime date)
        {
            DateTime clientDate = TimeZoneHelper.ToClientTime(date).Date;
            bool     isWorkDay  = schedulerControl1.WorkDays.IsWorkDay(clientDate);

            if (!isWorkDay)
            {
                TimeInterval clientInterval = new TimeInterval(clientDate, TimeSpan.FromDays(1));
                freeIntervals.Remove(TimeZoneHelper.FromClientTime(clientInterval));
            }
        }
        private void OnIntervalFound(object sender, IntervalFoundEventArgs args)
        {
            TimeIntervalCollectionEx freeIntervals = args.FreeIntervals;
            DateTime start = freeIntervals.Start.Date.AddDays(-1);
            DateTime end   = freeIntervals.End;

            while (start < end)
            {
                RemoveNonWorkingTime(freeIntervals, start);
                RemoveNonWorkingDay(freeIntervals, start);
                start += TimeSpan.FromDays(1);
            }
        }