Files
Francesco Picone bc465f53f5 ++ dopo un'operazione si torna alla pagina di partenza, con i suoi filtri
- 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>
2026-10-19 15:04:42 +02:00

70 lines
4.1 KiB
PHP

<div>
<div class="mb-6">
<a href="{{ $ritorno ?? route('territori.show', $assegnazione->territorio) }}" class="inline-flex items-center gap-1 text-sm text-gray-500 hover:text-indigo-600 transition-colors mb-1">
<svg class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/></svg>
{{ $ritorno ? 'Torna indietro' : 'Torna al territorio' }}
</a>
<h1 class="text-2xl font-bold text-gray-900">Rientro Territorio</h1>
</div>
{{-- Assignment summary --}}
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-4 mb-6">
<div class="grid grid-cols-1 sm:grid-cols-3 gap-4">
<div>
<p class="text-xs font-medium text-gray-500 uppercase">Territorio</p>
<p class="mt-1 text-lg font-bold text-gray-900">N° {{ $assegnazione->territorio->numero }}</p>
</div>
<div>
<p class="text-xs font-medium text-gray-500 uppercase">Proclamatore</p>
<p class="mt-1 text-sm text-gray-900">{{ $assegnazione->proclamatore->nome_completo }}</p>
</div>
<div>
<p class="text-xs font-medium text-gray-500 uppercase">Assegnato il</p>
<p class="mt-1 text-sm text-gray-900">{{ $assegnazione->assigned_at->format('d/m/Y') }}</p>
</div>
</div>
</div>
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6 max-w-lg">
<form wire:submit="save" class="space-y-4">
<div>
<label for="returned_at" class="block text-sm font-medium text-gray-700">Data Rientro *</label>
<input wire:model.live="returned_at" type="date" id="returned_at"
min="{{ $assegnazione->assigned_at->format('Y-m-d') }}"
max="{{ now()->format('Y-m-d') }}"
class="mt-1 block w-full rounded-lg border-gray-300 shadow-sm focus:ring-indigo-500 focus:border-indigo-500 text-sm">
@error('returned_at') <p class="text-red-500 text-xs mt-1">{{ $message }}</p> @enderror
</div>
{{-- Campaign retroactive prompt --}}
@if($showCampaignPrompt && $campagna)
<div class="bg-amber-50 border border-amber-200 rounded-lg p-4">
<p class="text-sm font-medium text-amber-800 mb-2">
⚠️ Campagna: <strong>{{ $campagna->descrizione }}</strong>
</p>
<p class="text-xs text-amber-700 mb-3">
Questo territorio era assegnato durante la campagna "{{ $campagna->descrizione }}"
({{ $campagna->start_date->format('d/m/Y') }} — {{ $campagna->end_date->format('d/m/Y') }}).
È stato percorso per la campagna? Se sì, conteggialo nella percentuale di percorrenza.
</p>
@if($giorniPercorrenza !== null && $giorniPercorrenza > $sogliaPercorrenza)
<div class="mb-3 rounded-md border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-800">
⚠️ <strong>Tempo di percorrenza molto alto: {{ $giorniPercorrenza }} giorni</strong> (soglia {{ $sogliaPercorrenza }}).
Verifica che il territorio sia stato effettivamente percorso durante la campagna.
</div>
@endif
<div class="flex items-center gap-2">
<input wire:model="counted_in_campaign" type="checkbox" id="counted_in_campaign" class="rounded border-gray-300 text-amber-600 focus:ring-amber-500">
<label for="counted_in_campaign" class="text-sm text-amber-800">Sì, conteggia in campagna</label>
</div>
</div>
@endif
<div class="flex flex-wrap items-center gap-3 pt-4">
<x-btn variante="primary" type="submit">Registra rientro</x-btn>
<x-btn variante="secondary" :href="$ritorno ?? route('territori.show', $assegnazione->territorio)">Annulla</x-btn>
</div>
</form>
</div>
</div>