<?php

Prado::using('Application.dto.EventDTO');
Prado::using('Application.dto.GridEventDTO');

class CalendarGridDayDTO {

    public $Date;
    public $Events;

    public function __construct(DateTimeImmutable $date, array $events) {
        $this->Date = $date->format('Y-m-d');
        $this->Events = array_filter($events, [$this, '_checkEventDate']);
        // initial sort (date and calendar name)
        // events are going to be re-sorted after assigning grid priorities
        usort($this->Events, ['EventDTO', '__compare']);
    }

    private function _checkEventDate(GridEventDTO $event) {
        if (!$this->Date) {
            return FALSE;
        }
        return ($this->Date >= $event->DateFrom) && ($this->Date <= $event->DateTo);
    }

}

?>