user(); if ($user === null || Gate::forUser($user)->denies('create', City::class)) { return Response::error('Nicht berechtigt, eine Stadt anzulegen.'); } if ($error = $this->mergeForeignKey($request, 'country', 'country_id', Country::query(), 'Land')) { return $error; } $storeRequest = new StoreCityRequest; $validated = $request->validate( $storeRequest->rules(), $storeRequest->messages(), ); $city = City::create($validated); return Response::json(CityResource::make($city->fresh())->resolve()); } /** * @return array */ public function schema(JsonSchema $schema): array { return [ 'country' => $schema->string()->description('Name des zugehörigen Landes (z. B. "Deutschland"). Wird automatisch aufgelöst – bei Bedarf per list-countries den genauen Namen ermitteln.'), 'country_id' => $schema->integer()->description('Optional: ID des Landes, falls bereits bekannt (Alternative zu "country").'), 'name' => $schema->string()->description('Name der Stadt.')->required(), 'longitude' => $schema->number()->description('Längengrad der Stadt.')->required(), 'latitude' => $schema->number()->description('Breitengrad der Stadt.')->required(), 'population' => $schema->integer()->description('Einwohnerzahl der Stadt.'), ]; } }