Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Алгоритм для реализации событий календаря.  [new]
NetZee
Member

Откуда:
Сообщений: 4
Нужно реализовать календарь с событиями (по типу outlook).

Расписания для событий будут задаваться по типу windows task scheduler.

Храниться расписание будет в БД в виде JSON.

Пользователь должен иметь возможность вручную поменять дату конкретного события.

Вопрос - как лучше это реализовать?

У меня идея следующая, например:

Есть расписание на месяц (Август 2021), события каждую среду - в бд сохраняем 1 тригер (JSON с этим описанием).
[тригер - просто некое описание расписания в json, по триггерам программно генерим евенты]

Потом пользователь решает перенести событие среды 18 числа на 17ое (вторник) - алгоритм вместо одного триггера создаст три,
Первый триггер - от начала месяца (от 1 числа) до 11 числа (предыдущая среда).
Второй триггер от 25 (след. среда после измененной) до конца месяца (до 31ого)
Третий триггер - одиночный на сторник 17.08.2021

Т.е. алгоритм дробит исходное расписание, на новые.

И именно это мне не нравится, думаю что пользователи внесут много изменений и у меня получится миллион отрезков...
10 авг 21, 19:09    [22357775]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм для реализации событий календаря.  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6257
NetZee
в бд сохраняем 1 тригер

Зачем изобретать велосипед? Для дотнета же дофига уже написанных шедулеров. Навскидку - Quartz.NET.
10 авг 21, 20:24    [22357817]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм для реализации событий календаря.  [new]
NetZee
Member

Откуда:
Сообщений: 4
Сон Веры Павловны,

1 Мне же карточки для календаря нужно нагенерировать.
2 У quartz нет же UI для пользователей.
2 Нет необходимости запускать таску прям в нужное время, в этой задаче можно и ночью проверить кто успел в дедлайн а кто нет
Так что кварц тут не особо нужен
11 авг 21, 08:39    [22357918]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм для реализации событий календаря.  [new]
vb_sub
Member

Откуда:
Сообщений: 983
NetZee,
почему просто не хранить событие в виде
объекта со свойствами

eventID,
eventDateTime,
eventDescription


При изменении даты события просто редактируется свойство eventDateTime.
11 авг 21, 09:09    [22357927]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм для реализации событий календаря.  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22584
NetZee
Нет необходимости запускать таску прям в нужное время
Тогда зачем вообще какие-то триггеры? Ночью запускается задача, которая проверяет все карточки и всё
11 авг 21, 09:40    [22357946]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм для реализации событий календаря.  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 22584
NetZee
Т.е. алгоритм дробит исходное расписание, на новые.

И именно это мне не нравится, думаю что пользователи внесут много изменений и у меня получится миллион отрезков...
ты переживаешь, что в таблице БД будет миллион строк? Ничего страшного
11 авг 21, 09:41    [22357947]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм для реализации событий календаря.  [new]
NetZee
Member

Откуда:
Сообщений: 4
Shocker.Pro,

Триггеры - это описание расписания. По этому расписанию генеринуются карточки. Например: Еженедельно каждую среду на 2021 год.
Алгоритм нагенерит карточки и потом, для каждой карточки пойдет в БД проверять, все ли сделали пользователи что должны были...
11 авг 21, 10:06    [22357962]     Ответить | Цитировать Сообщить модератору
 Re: Алгоритм для реализации событий календаря.  [new]
NetZee
Member

Откуда:
Сообщений: 4
vb_sub,

Уже примерно так и хочу сделать, вообще события генерируются автоматом на основе расписания, но те события которые пользователь
изменил вручную будут сохраняться в БД, плюс у события будет свойство SourceDate (связка кастомного события с генеренным)- дата конкретного события из периодической цепочки... Это что бы автогенереное событие убрать а вместо него добавить кастомное
11 авг 21, 10:10    [22357963]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить