Проверьте, находится ли диапазон дат в другом диапазоне дат для отображения fullcalendar.io - PullRequest
0 голосов
/ 24 ноября 2018

Я реализую код на стороне сервера для извлечения событий для fullcalendar.io .

Существует два сценария:

  1. Событие имеет начало идата окончания
  2. Событие имеет дату начала, и оно установлено на весь день

Модель:

public Class CalendarEvent {
  public DateTimeOffset Start { get; set; }
  public DateTimeOffset? End { get; set; }
  public bool AllDay { get; set; }
}

Когда https://fullcalendar.io загружает представлениеон генерирует диапазон дат, который в основном является днями, которые можно увидеть в календаре (то есть с 10/8/18 по 12/8/18), и я отправляю это своему контроллеру для получения соответствующих событий для этого диапазона.

Мне в основном нужно проверить следующее:

  1. Подходит ли какая-либо часть диапазона дат события в пределах видимого диапазона, излучаемого из календаря - если это так, показать его.
  2. Если это событие AllDay, дата начала попадает в представление.

Псевдо-пример:

var rep = context.GetRepository<Event>();
events = rep.Get().Where(e => /* need help here */).AsQueryable();

1 Ответ

0 голосов
/ 24 ноября 2018

Мне нравится этот (перекрывающиеся даты)!В общем случае формула имеет вид:

var dateFrom = ;// start of week
var dateTo = ; // end of week

var events = rep.Get()
    .Where(e => e.Start <= dateTo && e.End >= dateFrom)
    .AsQueryable();

Поскольку вам нужны вещи, содержащиеся в диапазоне, начиная с диапазона и расширяясь, начиная с диапазона и заканчивая внутри, начиная с и заканчивая после диапазона.

Но если вам нужно обработать nullable .End, то, возможно, вам больше подойдет:

var dateFrom = ;// start of week
var dateTo = ; // end of week

var events = rep.Get()
    .Where(e => e.Start <= dateTo && (e.End ?? e.Start) >= dateFrom)
    .AsQueryable();

(очень) элементарный макет для визуализации:

Rudimentary mockup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...