['except' => ''], 'filterZona' => ['except' => ''], 'filterTipologia' => ['except' => ''], 'filterStato' => ['except' => ''], ]; public function updatingSearch() { $this->resetPage(); } public function sortBy(string $field) { if ($this->sortField === $field) { $this->sortDirection = $this->sortDirection === 'asc' ? 'desc' : 'asc'; } else { $this->sortField = $field; $this->sortDirection = 'asc'; } } public function toggleActive(Territorio $territorio) { $territorio->update(['attivo' => !$territorio->attivo]); activity()->causedBy(auth()->user()) ->performedOn($territorio) ->withProperties(['attivo' => $territorio->attivo]) ->log($territorio->attivo ? 'activated' : 'deactivated'); } public function togglePriority(Territorio $territorio) { $territorio->update(['prioritario' => !$territorio->prioritario]); activity()->causedBy(auth()->user()) ->performedOn($territorio) ->withProperties(['prioritario' => $territorio->prioritario]) ->log($territorio->prioritario ? 'set_priority' : 'unset_priority'); } public function deleteTerritorio(Territorio $territorio) { activity()->causedBy(auth()->user()) ->performedOn($territorio) ->log('soft_deleted'); $territorio->delete(); session()->flash('success', "Territorio {$territorio->numero} spostato nel cestino."); } public function render() { $query = Territorio::with(['zona', 'tipologia', 'assegnazioneCorrente.proclamatore']); if ($this->search) { $query->where('numero', 'like', "%{$this->search}%"); } if ($this->filterZona) { $query->where('zona_id', $this->filterZona); } if ($this->filterTipologia) { $query->where('tipologia_id', $this->filterTipologia); } if ($this->filterStato) { match ($this->filterStato) { 'in_reparto' => $query->inReparto(), 'assegnato' => $query->assegnato(), 'da_rientrare' => $query->daRientrare(), 'inattivo' => $query->where('attivo', false), default => null, }; } $query->orderBy($this->sortField, $this->sortDirection); return view('livewire.territori.territorio-index', [ 'territori' => $query->paginate(20), 'zone' => Zona::attive()->get(), 'tipologie' => Tipologia::attive()->get(), ]); } }