vito/app/Actions/Server/EditServer.php
Saeed Vaziry 5c72f12490 init
2023-07-02 12:47:50 +02:00

56 lines
1.3 KiB
PHP
Executable File

<?php
namespace App\Actions\Server;
use App\Models\Server;
use App\ValidationRules\RestrictedIPAddressesRule;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
class EditServer
{
/**
* @throws ValidationException
*/
public function edit(Server $server, array $input): Server
{
$this->validate($input);
$checkConnection = false;
if (isset($input['name'])) {
$server->name = $input['name'];
}
if (isset($input['ip'])) {
if ($server->ip !== $input['ip']) {
$checkConnection = true;
}
$server->ip = $input['ip'];
}
if (isset($input['port'])) {
if ($server->port !== $input['port']) {
$checkConnection = true;
}
$server->port = $input['port'];
}
$server->save();
if ($checkConnection) {
$server->checkConnection();
}
return $server;
}
/**
* @throws ValidationException
*/
protected function validate(array $input): void
{
Validator::make($input, [
'ip' => [
new RestrictedIPAddressesRule(),
],
])->validateWithBag('editServer');
}
}