2023-04-19 12:42:15 +02:00
|
|
|
<?php
|
|
|
|
|
2023-12-07 19:06:32 +01:00
|
|
|
namespace App\Livewire\Project\Shared;
|
2023-04-19 12:42:15 +02:00
|
|
|
|
2024-02-06 15:05:11 +01:00
|
|
|
use App\Models\Server;
|
2023-04-19 12:42:15 +02:00
|
|
|
use Livewire\Component;
|
|
|
|
|
|
|
|
class Destination extends Component
|
|
|
|
{
|
2023-11-21 15:31:46 +01:00
|
|
|
public $resource;
|
|
|
|
public $servers = [];
|
2024-02-06 15:05:11 +01:00
|
|
|
public $networks = [];
|
|
|
|
|
|
|
|
public function mount()
|
|
|
|
{
|
|
|
|
$this->loadData();
|
|
|
|
}
|
|
|
|
public function loadData()
|
|
|
|
{
|
|
|
|
$all_networks = collect([]);
|
|
|
|
$all_networks = $all_networks->push($this->resource->destination);
|
|
|
|
$all_networks = $all_networks->merge($this->resource->additional_networks);
|
|
|
|
|
|
|
|
$this->networks = Server::isUsable()->get()->map(function ($server) {
|
|
|
|
return $server->standaloneDockers;
|
|
|
|
})->flatten();
|
|
|
|
$this->networks = $this->networks->reject(function ($network) use ($all_networks) {
|
|
|
|
return $all_networks->pluck('id')->contains($network->id);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
public function addServer(int $network_id, int $server_id)
|
|
|
|
{
|
|
|
|
$this->resource->additional_networks()->attach($network_id, ['server_id' => $server_id]);
|
|
|
|
$this->resource->load(['additional_networks']);
|
|
|
|
$this->loadData();
|
|
|
|
|
|
|
|
}
|
|
|
|
public function removeServer(int $network_id, int $server_id)
|
|
|
|
{
|
|
|
|
$this->resource->additional_networks()->detach($network_id, ['server_id' => $server_id]);
|
|
|
|
$this->resource->load(['additional_networks']);
|
|
|
|
$this->loadData();
|
|
|
|
}
|
2023-04-19 12:42:15 +02:00
|
|
|
}
|