route('server')); return inertia('services/Create', [ 'server' => $server, 'services' => config('keystone.services'), ]); } public function store(Request $request) { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'category' => ['required', Rule::enum(ServiceCategory::class)], 'type' => ['required', Rule::enum(ServiceType::class)], 'version' => ['required', 'string', function ($key, $value, $fail) use ($request) { if (!isset(config('keystone.services')[$request->category][$request->type]['versions'][$value])) { $fail('The selected version is invalid.'); } }], ]); $server = Server::findOrFail($request->route('server')); $service = app(CreateService::class)->execute( server: $server, name: $request->name, category: $request->enum('category', ServiceCategory::class), type: $request->enum('type', ServiceType::class), version: $request->version, ); return redirect()->route('servers.show', [ 'organisation' => $server->organisation->id, 'server' => $server->id, ])->with([ 'success' => 'Service created successfully', 'service' => $service, ]); } }