diff --git a/app/Models/Server.php b/app/Models/Server.php index 7f9860f..8092c49 100755 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -4,6 +4,7 @@ use App\Contracts\ServerType; use App\Enums\ServerStatus; +use App\Enums\ServiceStatus; use App\Facades\Notifier; use App\Facades\SSH; use App\Jobs\Installation\Upgrade; @@ -227,6 +228,18 @@ public function defaultService($type): ?Service ->where('is_default', 1) ->first(); + // If no default service found, get the first service with status ready or stopped + if (! $service) { + $service = $this->services() + ->where('type', $type) + ->whereIn('status', [ServiceStatus::READY, ServiceStatus::STOPPED]) + ->first(); + if ($service) { + $service->is_default = 1; + $service->save(); + } + } + return $service; } diff --git a/tests/Feature/Models/ServerModelTest.php b/tests/Feature/Models/ServerModelTest.php new file mode 100644 index 0000000..179fce6 --- /dev/null +++ b/tests/Feature/Models/ServerModelTest.php @@ -0,0 +1,20 @@ +server->defaultService('php'); + $php->update(['is_default' => false]); + $this->assertNotNull($this->server->defaultService('php')); + $php->refresh(); + $this->assertTrue($php->is_default); + } +}