diff --git a/HANDOFF.md b/HANDOFF.md index 23667c2..d3cadee 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -248,6 +248,13 @@ non diventa una scheda). Ordine esplicito: anni dal più recente proclamatore la colonna Campagna ora dice "Sì — …" / "No" come in quella del territorio, e c'è il badge "via gruppo …". Test: `StoricoAssegnazioniTest`. +Poi, su richiesta dell'utente: **aperta dalla Home la scheda del territorio +non mostra lo storico**. I link della Home ("Da assegnare", "Da rientrare") +portano `?dalla_home=1` e `TerritorioShow::$storicoNascosto` salta anche la +query; resta "Mostra lo storico delle assegnazioni". Non si usa il `?da=` del +ritorno per capirlo: si trasmette di pagina in pagina, e un territorio aperto +da *Assegna* (a sua volta aperta dalla Home) sembrerebbe venire dalla Home. + ### Rientro dall'elenco dei territori assegnati (20 ottobre 2026) Richiesta dell'utente ("un tasto che va alla registrazione", dallo screenshot diff --git a/README.md b/README.md index 9905590..7ccc7d1 100644 --- a/README.md +++ b/README.md @@ -700,7 +700,9 @@ docker compose --profile dev up -d --build - Badge di stato colorati e indicatore di priorità (manuale o automatica) - Dettaglio con visualizzatore PDF e storico assegnazioni per anno teocratico: una tabella sola con le colonne in linea, l'anno come riga di separazione, - dal più recente (lo stesso nella scheda del proclamatore) + dal più recente (lo stesso nella scheda del proclamatore). Aperta dalla + Home, la scheda non mostra lo storico ("Mostra lo storico delle + assegnazioni" lo apre) - Link PDF pubblico condivisibile, a scadenza configurabile - Soft delete con cestino (ripristino o eliminazione definitiva) - Import massivo di PDF da cartella o archivio ZIP, elaborato in background diff --git a/app/Livewire/Territori/TerritorioShow.php b/app/Livewire/Territori/TerritorioShow.php index 53192da..481d6c6 100644 --- a/app/Livewire/Territori/TerritorioShow.php +++ b/app/Livewire/Territori/TerritorioShow.php @@ -13,21 +13,36 @@ class TerritorioShow extends Component public Territorio $territorio; + /** + * Aperta dalla Home (?dalla_home=1, lo mettono solo i link della Home) la + * scheda non mostra lo storico delle assegnazioni: lì serve il territorio, + * non la sua storia. "Mostra lo storico" lo apre comunque. + */ + public bool $storicoNascosto = false; + public function mount(Territorio $territorio) { $this->territorio = $territorio->load(['zona', 'tipologia', 'assegnazioneCorrente.proclamatore', 'ultimaAssegnazione']); + $this->storicoNascosto = request()->boolean('dalla_home'); + } + + public function mostraStorico(): void + { + $this->storicoNascosto = false; } public function render() { - $assegnazioni = Assegnazione::where('territorio_id', $this->territorio->id) - ->with(['proclamatore', 'annoTeocratico', 'campagna', 'creatoDa', 'rientratoDa']) - ->orderByDesc('assigned_at') - ->orderByDesc('id') - ->get() - ->groupBy(fn($a) => $a->annoTeocratico->label) - // Dal più recente: gli anni ("2026-2027") si ordinano come testo. - ->sortKeysDesc(); + $assegnazioni = $this->storicoNascosto + ? collect() + : Assegnazione::where('territorio_id', $this->territorio->id) + ->with(['proclamatore', 'annoTeocratico', 'campagna', 'creatoDa', 'rientratoDa']) + ->orderByDesc('assigned_at') + ->orderByDesc('id') + ->get() + ->groupBy(fn($a) => $a->annoTeocratico->label) + // Dal più recente: gli anni ("2026-2027") si ordinano come testo. + ->sortKeysDesc(); return view('livewire.territori.territorio-show', [ 'activeAssignment' => $this->territorio->assegnazioneCorrente, diff --git a/resources/views/livewire/home.blade.php b/resources/views/livewire/home.blade.php index dca2ed0..d675b65 100644 --- a/resources/views/livewire/home.blade.php +++ b/resources/views/livewire/home.blade.php @@ -109,7 +109,7 @@
  • - N° {{ $t->numero }} + N° {{ $t->numero }} @if($t->in_priorita) ★ Prioritario @endif @@ -164,7 +164,7 @@ @php($assegnazioneCorrente = $t->assegnazioneCorrente)
  • - N° {{ $t->numero }} + N° {{ $t->numero }}

    {{ $assegnazioneCorrente?->proclamatore?->nome_completo }} — {{ $assegnazioneCorrente?->giorni }} gg diff --git a/resources/views/livewire/territori/territorio-show.blade.php b/resources/views/livewire/territori/territorio-show.blade.php index a7a02b2..0c790c2 100644 --- a/resources/views/livewire/territori/territorio-show.blade.php +++ b/resources/views/livewire/territori/territorio-show.blade.php @@ -152,7 +152,12 @@

    @endif - {{-- Assignment history --}} + {{-- Assignment history: non quando si arriva dalla Home (TerritorioShow::$storicoNascosto) --}} + @if($storicoNascosto) +
    + Mostra lo storico delle assegnazioni +
    + @else
    @@ -213,4 +218,5 @@
    @endif
    + @endif
    diff --git a/tests/Feature/StoricoAssegnazioniTest.php b/tests/Feature/StoricoAssegnazioniTest.php index 42145a4..16d692e 100644 --- a/tests/Feature/StoricoAssegnazioniTest.php +++ b/tests/Feature/StoricoAssegnazioniTest.php @@ -62,6 +62,26 @@ class StoricoAssegnazioniTest extends TestCase $this->assertSame(2, substr_count($html, 'tm-riga-gruppo')); } + public function test_aperta_dalla_home_la_scheda_del_territorio_non_mostra_lo_storico(): void + { + // La Home manda alla scheda con il segnale dalla_home. + $this->actingAs($this->admin)->get(route('dashboard'))->assertOk() + ->assertSee(route('territori.show', ['territorio' => $this->territorio, 'dalla_home' => 1]), false); + + $this->get(route('territori.show', ['territorio' => $this->territorio, 'dalla_home' => 1]))->assertOk() + ->assertDontSee('Storico Assegnazioni') + ->assertDontSee('Anno Teocratico') + ->assertSee('Mostra lo storico delle assegnazioni'); + + // Su richiesta si apre; aperta da altrove c'è sempre. + \Livewire\Livewire::actingAs($this->admin)->withQueryParams(['dalla_home' => 1]) + ->test(\App\Livewire\Territori\TerritorioShow::class, ['territorio' => $this->territorio]) + ->assertDontSee('Anno Teocratico') + ->call('mostraStorico') + ->assertSee('Anno Teocratico 2025-2026'); + $this->get(route('territori.show', $this->territorio))->assertSee('Storico Assegnazioni'); + } + public function test_nella_scheda_del_proclamatore_una_tabella_sola_dal_piu_recente(): void { $html = $this->actingAs($this->admin)->get(route('proclamatori.show', $this->proclamatore))->assertOk()