proclamatore = $proclamatore; } public function render() { $assegnazioni = Assegnazione::where('proclamatore_id', $this->proclamatore->id) ->with(['territorio', 'annoTeocratico', 'campagna']) ->orderByDesc('assigned_at') ->get() ->groupBy(fn($a) => $a->annoTeocratico->label); $stats = [ 'totale_assegnazioni' => Assegnazione::where('proclamatore_id', $this->proclamatore->id)->count(), 'attualmente_assegnati' => Assegnazione::where('proclamatore_id', $this->proclamatore->id)->aperte()->count(), 'media_giorni' => round( Assegnazione::where('proclamatore_id', $this->proclamatore->id) ->chiuse() ->get() ->avg(fn($a) => $a->giorni) ?? 0 ), ]; // Gruppo di servizio: sorvegliante (con i dettagli del gruppo e della // sua utenza) o membro. I gruppi sciolti non esistono più. $gruppoSorvegliato = $this->proclamatore->gruppoSorvegliato(); $utenza = $gruppoSorvegliato ? $this->proclamatore->utente : null; return view('livewire.proclamatori.proclamatore-show', [ 'assegnazioniPerAnno' => $assegnazioni, 'stats' => $stats, 'gruppoSorvegliato' => $gruppoSorvegliato, 'riepilogoGruppo' => $gruppoSorvegliato?->riepilogo(), 'gruppoMembro' => $gruppoSorvegliato ? null : $this->proclamatore->gruppo()->with('sorvegliante')->first(), 'utenza' => $utenza, 'ultimoAccesso' => $utenza ? Activity::whereMorphedTo('causer', $utenza)->where('description', 'login')->max('created_at') : null, ]); } }