/** * @param Carbon $date The date is cloned internally so it is avoided side-effects * @return array */ public function getCalendar(Carbon $date) { $date = clone $date; $calendar = $this->calendarGenerator->generate($date); $schedules = $this->schedulesRepository->findOfMonth($date)->groupBy(function (Type\Schedule $schedule) { return $schedule->getEntry()->day; })->all(); /** @var \Filmoteca\Exhibition\Type\Calendar\Day $day */ foreach ($calendar->getDays() as $day) { $dayNumber = $day->getNumber(); if (array_key_exists($dayNumber, $schedules)) { $day->setExhibitionsNumber(count($schedules[$dayNumber])); } } return $calendar; }