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 @@