user(); if ($user === null || Gate::forUser($user)->denies('create', MeetupEvent::class)) { return Response::error('Nicht berechtigt, einen Meetup-Termin anzulegen.'); } $storeRequest = new StoreMeetupEventRequest; $validated = $request->validate( $storeRequest->rules(), $storeRequest->messages(), ); $meetupEvent = MeetupEvent::create($validated); return Response::json(MeetupEventResource::make($meetupEvent->fresh())->resolve()); } /** * @return array */ public function schema(JsonSchema $schema): array { return [ 'meetup_id' => $schema->integer()->description('ID des zugehörigen Meetups (vorher per search-meetups auflösen).')->required(), 'start' => $schema->string()->description('Startzeitpunkt als Datum/Uhrzeit (z. B. 2026-08-01 18:00:00).')->required(), 'location' => $schema->string()->description('Veranstaltungsort.'), 'description' => $schema->string()->description('Beschreibung des Termins.'), 'link' => $schema->string()->description('Link zum Termin (URL).'), 'recurrence_type' => $schema->string()->description('Wiederholungstyp.'), 'recurrence_day_of_week' => $schema->string()->description('Wochentag der Wiederholung.'), 'recurrence_day_position' => $schema->string()->description('Position des Wochentags im Monat.'), 'recurrence_interval' => $schema->integer()->description('Wiederholungsintervall.'), 'recurrence_end_date' => $schema->string()->description('Enddatum der Wiederholung.'), ]; } }