<?php

namespace App\Livewire\Territori;

use Livewire\Component;
use Livewire\WithPagination;
use App\Models\Territorio;

class TerritorioCestino extends Component
{
    use WithPagination;

    public function restore(int $id)
    {
        $territorio = Territorio::onlyTrashed()->findOrFail($id);
        $territorio->restore();
        activity()->causedBy(auth()->user())
            ->performedOn($territorio)
            ->log('restored');
        session()->flash('success', "Territorio {$territorio->numero} ripristinato.");
    }

    public function forceDelete(int $id)
    {
        $territorio = Territorio::onlyTrashed()->findOrFail($id);

        if ($territorio->assegnazioni()->exists()) {
            session()->flash('error', 'Impossibile eliminare definitivamente: il territorio ha assegnazioni nello storico.');
            return;
        }

        activity()->causedBy(auth()->user())
            ->withProperties(['numero' => $territorio->numero])
            ->log('force_deleted_territorio');
        $territorio->forceDelete();
        session()->flash('success', 'Territorio eliminato definitivamente.');
    }

    public function render()
    {
        return view('livewire.territori.territorio-cestino', [
            'territori' => Territorio::onlyTrashed()->orderByDesc('deleted_at')->paginate(20),
        ]);
    }
}
