Как отобразить календарь в логике MVC?

Здравствуйте!
Пытаюсь написать простое приожение на php.
Замахнулся на то, что мне пока не позубам, но ведь учиться на сложных задачах интерестней чем на простых.
Почитал про MVC, посмотрел несколько примеров в сети. Идея понравилась и нравилась до тех пор пока не начал пытаться воспроизвести.
У меня простое приложение с календариком в котром отображаются разные KPI наших менджеров по продажам.
Пока всё просто. контроллер смотрит на $_GET и говорит виду какой вид показать (день,неделя, месяц, год).
Сложности начинаются когда начинаешь работать с моделью.
Если $_GET например ?month=11-2021
Нужно спросить у модели спиок пользователей работавших в ноябре 2011, Посчитать их показатели за каждый день вместе и по отдельности и понедельно так же посчитать и за весь месяц. А ещё сравнить кто лучше по какому показателю.
Потом всё это дать виду для вмеру симпатичного показа пользователю.

теперь я не представляю как всю эту кучу данных передавать в вид.
Вариант сделать в модели супер сложный массив с массивами в которых массивы с массивами... мне показался сложным и печальным
Вариант типа
public function report()
{
    $month = date('m-Y');
    if (isset($_GET['month']) {
        $month = $_GET['month'];
    }
    $users = $this->model->getListUsers();
    $kpi = $this->model->getKpiMonth($month);
    // И так далее... 
    $this->view->getReportsTemplate($users, $kpi  );
}

Такой вариант тоже не упростит работу с видом.

Временно пошёл по простому и как сам понимаю неправильному пути.
нарисовал вид (кстати то ещё приключение календарь нарисовать с учётом выходных и праздников)
Вид берёт напрямую из модели данные на каждый день и показывает пользователю.

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

А если вдруг мы решим добавить/убрать какой-то показатель KPI, то меня ждёт кромешный ад.

Подскажите как правильно организовываются такие штуки?
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
1. отображение с помощью готовой js библиотеки, например, https://github.com/nhn/tui.calendar
2. тебе потребуется модель для хранения записи за день и коллекция их хранения. в упрощенном варианте можно запихнуть в класс коллекции загрузку данных из базы и создание моделей дней
3. в шаблоне/виде генерируем код для отображения календаря, конвертируем коллекцию в json объект который загру...
это очень упрощенный вариант, по хорошему формирование календаря и передача ему данных это два разных действия контроллера.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы