Стек: PHP7.3, MySQL, CodeIgniter2, Jquery, Bootstrap
Пример макета: https://clck.ru/KHWba
Задача:
Сделать так, чтобы пользователи CRM-системы предоставляли действительно актуальный календарь.
Общее описание:
Пользователь сам выбирает период, на который он хочет актуализировать календарь. Минимум - 7 дней, максимум - 28 дней (4 недели). На основании этих данных мы можем понимать доступность в ближайшие пару недель.
В разделе "Задачи" всегда есть задача "Актуализация календаря» (см. макет). Если календарь актуален - она зеленая, если неактуален - красная. Календарь (fullcalendar.js) показывает только дни, в выбранном интервале. Кнопки подтвердить, подтверждают событие и вызывают функции на бэре, кнопки отмены, возвращают пользователей на пред. шаг.
Описание логики:после того, как пользователь нажимает «Подтвердить», на «плашке» (экран 3) мы показываем ему еще одну модалку, где он еще раз подтверждает свое действие. После этого, выбранный период мы записываем в базу.
У каждого периода есть id, start_datetime, end_datetime, id_users, created_at. Все даты хранятся в datetime UTC
При открытии раздела задачи (экран 1) вместо X дней мы пишем NOW() - end_datetime в количестве дней для данного юзера.
Если у юзера есть действующие актуальные периоды, в другой таблице ставим ему флаг active == 1. Проверку можно сделать по крону.