2024-04-11 13:42:37 +00:00
< ? php
namespace App\Livewire\Project\Service ;
use App\Models\ServiceApplication ;
use Livewire\Component ;
class EditDomain extends Component
{
public $applicationId ;
2024-06-10 20:43:34 +00:00
2024-04-11 13:42:37 +00:00
public ServiceApplication $application ;
2024-06-10 20:43:34 +00:00
2024-04-11 13:42:37 +00:00
protected $rules = [
'application.fqdn' => 'nullable' ,
'application.required_fqdn' => 'required|boolean' ,
];
2024-06-10 20:43:34 +00:00
public function mount ()
{
2024-04-11 13:42:37 +00:00
$this -> application = ServiceApplication :: find ( $this -> applicationId );
}
2024-06-10 20:43:34 +00:00
2024-04-11 13:42:37 +00:00
public function updatedApplicationFqdn ()
{
$this -> application -> fqdn = str ( $this -> application -> fqdn ) -> replaceEnd ( ',' , '' ) -> trim ();
$this -> application -> fqdn = str ( $this -> application -> fqdn ) -> replaceStart ( ',' , '' ) -> trim ();
$this -> application -> fqdn = str ( $this -> application -> fqdn ) -> trim () -> explode ( ',' ) -> map ( function ( $domain ) {
return str ( $domain ) -> trim () -> lower ();
});
$this -> application -> fqdn = $this -> application -> fqdn -> unique () -> implode ( ',' );
$this -> application -> save ();
}
2024-06-10 20:43:34 +00:00
2024-04-11 13:42:37 +00:00
public function submit ()
{
try {
check_domain_usage ( resource : $this -> application );
$this -> validate ();
$this -> application -> save ();
updateCompose ( $this -> application );
if ( str ( $this -> application -> fqdn ) -> contains ( ',' )) {
$this -> dispatch ( 'warning' , 'Some services do not support multiple domains, which can lead to problems and is NOT RECOMMENDED.<br><br>Only use multiple domains if you know what you are doing.' );
} else {
$this -> dispatch ( 'success' , 'Service saved.' );
}
} catch ( \Throwable $e ) {
return handleError ( $e , $this );
} finally {
2024-04-16 10:41:21 +00:00
$this -> application -> service -> parse ();
2024-04-11 13:42:37 +00:00
$this -> dispatch ( 'refresh' );
2024-04-12 10:44:49 +00:00
$this -> dispatch ( 'configurationChanged' );
2024-04-11 13:42:37 +00:00
}
}
2024-06-10 20:43:34 +00:00
2024-04-11 13:42:37 +00:00
public function render ()
{
return view ( 'livewire.project.service.edit-domain' );
}
}