From c9c56c915cda5c6b31eae56ed92c2e81f5e02a98 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Thu, 15 Jun 2023 15:15:27 +0200 Subject: [PATCH] fix --- app/Http/Livewire/Server/Form.php | 4 ++++ app/Models/Server.php | 16 ++++++++++++++++ .../views/livewire/destination/form.blade.php | 2 +- resources/views/livewire/server/form.blade.php | 2 +- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/Http/Livewire/Server/Form.php b/app/Http/Livewire/Server/Form.php index 521e089f6..65882abce 100644 --- a/app/Http/Livewire/Server/Form.php +++ b/app/Http/Livewire/Server/Form.php @@ -51,6 +51,10 @@ class Form extends Component } public function delete() { + if (!$this->server->isEmpty()) { + $this->emit('error', 'Server has defined resources. Please delete them first.'); + return; + } $this->server->delete(); redirect()->route('dashboard'); } diff --git a/app/Models/Server.php b/app/Models/Server.php index 385541634..d6d4b8e76 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -14,6 +14,9 @@ class Server extends BaseModel 'server_id' => $server->id, ]); }); + static::deleting(function ($server) { + $server->settings()->delete(); + }); } protected $fillable = [ 'name', @@ -33,6 +36,19 @@ class Server extends BaseModel { return $this->extra_attributes->modelScope(); } + public function isEmpty() + { + if ($this->applications()->count() === 0) { + return true; + } + return false; + } + public function applications() + { + return $this->destinations()->map(function ($standaloneDocker) { + return $standaloneDocker->applications; + })->flatten(); + } public function destinations() { $standalone_docker = $this->hasMany(StandaloneDocker::class)->get(); diff --git a/resources/views/livewire/destination/form.blade.php b/resources/views/livewire/destination/form.blade.php index fb4bd2470..d48acafed 100644 --- a/resources/views/livewire/destination/form.blade.php +++ b/resources/views/livewire/destination/form.blade.php @@ -6,7 +6,7 @@ Save - @if ($destination->network !== 'coolify') + @if ($destination->server->id === 0 && $destination->network !== 'coolify') Delete diff --git a/resources/views/livewire/server/form.blade.php b/resources/views/livewire/server/form.blade.php index d837328f2..497dc568e 100644 --- a/resources/views/livewire/server/form.blade.php +++ b/resources/views/livewire/server/form.blade.php @@ -4,7 +4,7 @@

General

Save - @if ($server->id !== 0) + @if ($server->id !== 0 || config('app.env') === 'local') Delete