Files
abiball/src/Service/EventService.php
Constantin Simonis 5e7a7e8f50
All checks were successful
build / build (pull_request) Successful in 4m47s
adjust event details
2025-02-23 17:33:03 +01:00

50 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Service;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
class EventService
{
private const EVENT_DATA = [
'title' => 'Abiball 2025',
'description' => 'Der Abiball der Freien Waldorfschule Bremen Osterholz und Touler Straße',
'location' => 'Graubündener Str. 4, 28325 Bremen',
'start' => '20250628T173000',
'end' => '20250629T030000',
];
public function generateIcs(): Response
{
$data = [
'BEGIN:VCALENDAR',
'VERSION:2.0',
'BEGIN:VEVENT',
'DTSTART:' . self::EVENT_DATA['start'],
'DTEND:' . self::EVENT_DATA['end'],
'SUMMARY:' . self::EVENT_DATA['title'],
'DESCRIPTION:' . self::EVENT_DATA['description'],
'LOCATION:' . self::EVENT_DATA['location'],
'END:VEVENT',
'END:VCALENDAR'
];
return new Response(implode("\r\n", $data), headers: [
'Content-Type' => 'text/calendar; charset=utf-8',
'Content-Disposition' => 'attachment; filename="event.ics"'
]);
}
public function generateGoogleRedirect(): Response
{
return new RedirectResponse('https://calendar.google.com/calendar/render?' . http_build_query([
'action' => 'TEMPLATE',
'text' => self::EVENT_DATA['title'],
'dates' => self::EVENT_DATA['start'] . '/' . self::EVENT_DATA['end'],
'details' => self::EVENT_DATA['description'],
'location' => self::EVENT_DATA['location'],
]));
}
}