<?php namespace App\Http\Livewire\Servers; use App\Enums\Database; use App\Enums\OperatingSystem; use App\Enums\ServerType; use App\Enums\Webserver; use App\Models\ServerProvider; use Illuminate\Contracts\View\View; use Livewire\Component; use Throwable; class CreateServer extends Component { public string $provider = 'custom'; public string $server_provider = ''; public string $type = ServerType::REGULAR; public string $name; public string $ip; public string $port; public string $os = OperatingSystem::UBUNTU22; public string $webserver = Webserver::NGINX; public string $database = Database::MYSQL80; public string $php = '8.2'; public string $plan = ''; public string $region = ''; /** * @throws Throwable */ public function submit(): void { $server = app(\App\Actions\Server\CreateServer::class)->create( auth()->user(), $this->all() ); $this->redirect(route('servers.show', ['server' => $server])); } public function render(): View { $serverProviders = ServerProvider::query()->where('provider', $this->provider)->get(); return view( 'livewire.servers.create-server', compact([ 'serverProviders', ]) ); } }