<?php

namespace App\Http\Livewire\Firewall;

use App\Actions\FirewallRule\CreateRule;
use App\Models\Server;
use App\Traits\RefreshComponentOnBroadcast;
use Illuminate\Contracts\View\View;
use Livewire\Component;

class CreateFirewallRule extends Component
{
    use RefreshComponentOnBroadcast;

    public Server $server;

    public string $type = 'allow';

    public string $protocol = 'tcp';

    public string $port;

    public string $source = '0.0.0.0';

    public string $mask = '';

    public function create(): void
    {
        app(CreateRule::class)->create($this->server, $this->all());

        $this->emitTo(FirewallRulesList::class, '$refresh');

        $this->dispatchBrowserEvent('created', true);
    }

    public function render(): View
    {
        return view('livewire.firewall.create-firewall-rule');
    }
}