protected virtual void SetVisibleColumns() { try { _blockLookup.Clear(); //// filter out unnecessary appointment columns and blocks DateTime startTime; DateTime endTime; switch (TimeView) { case TimePeriodType.Monthly: startTime = TimePeriodStart.ToBeginningOfMonth(); endTime = TimePeriodStart.ToEndOfMonth(); break; case TimePeriodType.DailyHourly: case TimePeriodType.DailyHalfHourly: case TimePeriodType.DailyQuaterHourly: default: startTime = TimePeriodStart.ToMidnight(); endTime = TimePeriodStart.To1159PM(); break; } switch (ColumnFilter) { case AppointmentBookViewModelFilter.All: _visibleColumns = _allColumns; break; case AppointmentBookViewModelFilter.ExcludeEmptyColumns: _visibleColumns = ( from appointment in _allColumns where appointment.Appointments.Any(block => block.VisibleStartTime <endTime && block.VisibleEndTime> startTime) select appointment ).ToArray(); break; case AppointmentBookViewModelFilter.ShowOnlyEmptyColumns: _visibleColumns = ( from appointment in _allColumns where !appointment.Appointments.Any(block => block.VisibleStartTime <= endTime && block.VisibleEndTime >= startTime) select appointment ).ToArray();; break; } RecreateCellDisplays(); } catch (Exception error) { SystemLog.Exception(error); ExceptionDialog.Show(error); } }