count(); $totAssegnati = Territorio::assegnato()->count(); $totInReparto = Territorio::inReparto()->count(); // Coverage: returned territories per current theocratic year $territoriPercorsi = 0; if ($annoCorrente) { $territoriPercorsi = Assegnazione::where('anno_teocratico_id', $annoCorrente->id) ->whereNotNull('returned_at') ->distinct('territorio_id') ->count('territorio_id'); } // Monthly average $mediaPercorrenzaMensile = 0; if ($annoCorrente && $annoCorrente->mesi_trascorsi > 0) { $mediaPercorrenzaMensile = round($territoriPercorsi / $annoCorrente->mesi_trascorsi, 1); } // Campaign stats $campagnaStats = null; if ($campagnaAttiva) { $campagnaStats = [ 'descrizione' => $campagnaAttiva->descrizione, 'percentuale' => $campagnaAttiva->percentuale_percorrenza, 'fine' => $campagnaAttiva->end_date->format('d/m/Y'), ]; } // Quick lists $territoriDaAssegnare = Territorio::inReparto() ->with('zona', 'tipologia', 'ultimaAssegnazione') ->get() ->sort(function (Territorio $left, Territorio $right) { $priorityComparison = (int) $right->is_prioritario <=> (int) $left->is_prioritario; if ($priorityComparison !== 0) { return $priorityComparison; } $giacenzaComparison = $right->giorni_giacenza <=> $left->giorni_giacenza; if ($giacenzaComparison !== 0) { return $giacenzaComparison; } return strnatcasecmp((string) $left->numero, (string) $right->numero); }) ->take(10) ->values(); $daRientrare = Territorio::daRientrare() ->with(['zona', 'assegnazioneCorrente.proclamatore']) ->take(10) ->get(); return view('livewire.home', [ 'congregazione' => $settings->congregazione_nome ?? 'TerManager2', 'annoCorrente' => $annoCorrente, 'totTerritoriAttivi' => $totTerritoriAttivi, 'totAssegnati' => $totAssegnati, 'totInReparto' => $totInReparto, 'territoriPercorsi' => $territoriPercorsi, 'mediaPercorrenzaMensile' => $mediaPercorrenzaMensile, 'campagnaStats' => $campagnaStats, 'territoriDaAssegnare' => $territoriDaAssegnare, 'daRientrare' => $daRientrare, ]); } }