resolveOwnedByName($request, Venue::class, 'Veranstaltungsorte', 'venue'); if ($venue instanceof Response) { return $venue; } $user = $request->user(); if ($user === null || Gate::forUser($user)->denies('update', $venue)) { return Response::error('Nur der Ersteller oder ein Super-Admin darf diesen Veranstaltungsort ändern.'); } if ($error = $this->mergeForeignKey($request, 'city', 'city_id', City::query(), 'Stadt', false)) { return $error; } $validated = $request->validate((new UpdateVenueRequest)->rules()); $venue->update($validated); return Response::json(VenueResource::make($venue->fresh())->resolve()); } /** * @return array */ public function schema(JsonSchema $schema): array { return [ 'venue' => $schema->string()->description('Name des zu ändernden Veranstaltungsorts (aus deinen Orten, siehe list-my-venues).'), 'id' => $schema->integer()->description('Optional: ID des Veranstaltungsorts, falls bereits bekannt (Alternative zu "venue").'), 'city' => $schema->string()->description('Name der zugehörigen Stadt (wird automatisch aufgelöst).'), 'city_id' => $schema->integer()->description('Optional: ID der Stadt (Alternative zu "city").'), 'name' => $schema->string()->description('Neuer Name des Veranstaltungsorts.'), 'street' => $schema->string()->description('Straße und Hausnummer des Veranstaltungsorts.'), ]; } }