- Gli elenchi tengono ricerca, filtri e ordinamento nell'indirizzo (#[Url]); la pagina c'era già. - I link verso schede e operazioni (data-ritorno) portano ?da= con la pagina di partenza, o il da già ricevuto: si risale all'origine (elenco -> scheda -> Rientra -> elenco filtrato). - Ritorno::valida accetta solo percorsi interni: niente rimandi esterni. - Trait RicordaRitorno: redirect dopo il salvataggio, Annulla e "Torna indietro" usano la pagina di partenza. Senza da, tutto come prima. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
46 lines
1.3 KiB
PHP
46 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Proclamatori;
|
|
|
|
use App\Livewire\Concerns\RicordaRitorno;
|
|
use Livewire\Component;
|
|
use App\Models\Proclamatore;
|
|
use App\Models\Assegnazione;
|
|
|
|
class ProclamatoreShow extends Component
|
|
{
|
|
use RicordaRitorno;
|
|
|
|
public Proclamatore $proclamatore;
|
|
|
|
public function mount(Proclamatore $proclamatore)
|
|
{
|
|
$this->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
|
|
),
|
|
];
|
|
|
|
return view('livewire.proclamatori.proclamatore-show', [
|
|
'assegnazioniPerAnno' => $assegnazioni,
|
|
'stats' => $stats,
|
|
]);
|
|
}
|
|
}
|