hasICalEnabled()) { return new Response('Calendar not found.', 404); } $calendar = Calendar::create() ->name('Upcoming Episodes') ->refreshInterval(10); $monitors = $monitorRepository->whereAirDateNotNull(); $calendar->event(Map::from($monitors)->map(function (Monitor $monitor) { return new Event($monitor->getTitle()) ->startsAt($monitor->getAirDate()) ->attachment($monitor->getPoster()) ->fullDay(); })->toArray()); return new Response($calendar->get(), 200, [ 'Content-Type' => 'text/calendar', 'Content-Disposition' => 'inline; filename="upcoming-episodes.ics"', ]); } }