query->has('key') || $request->query->get('key') !== $this->requiredApiKey) { return new Response('Kein Zugriff', Response::HTTP_FORBIDDEN); } $startDate = (new DateTime())->format('Y-m-d'); $endDate = (new DateTime('+90 days'))->format('Y-m-d'); $absences = $this->absenceManager->getAbsencesForUser('tim.lappe@check24.de', new DateTime('-1 day')); $days = $this->calendarService->getAllDays($startDate, $endDate); $days = $this->calendarService->processAbsences($days, $absences); return $this->render('calendar/index.html.twig', [ 'startDate' => new DateTime($startDate), 'endDate' => new DateTime($endDate), 'days' => $days, ]); } #[Route('/cal', name: 'calendar_ics')] public function exportCalendarIcs(Request $request): Response { if (!$request->query->has('key') || $request->query->get('key') !== $this->requiredApiKey) { return new Response('Kein Zugriff', Response::HTTP_FORBIDDEN); } $startDate = (new DateTime())->format('Y-m-d'); $endDate = (new DateTime('+180 days'))->format('Y-m-d'); $absences = $this->absenceManager->getAbsencesForUser('tim.lappe@check24.de', new DateTime('-1 day')); $days = $this->calendarService->getAllDays($startDate, $endDate); $days = $this->calendarService->processAbsences($days, $absences); $icsContent = $this->calendarExportService->generateIcsContent($days, $absences); $response = new Response($icsContent); $response->headers->set('Content-Type', 'text/calendar; charset=utf-8'); $response->headers->set('Content-Disposition', 'attachment; filename="work_calendar.ics"'); return $response; } }