++ Richieste dal modulo pubblico, territori cartacei, S-13 mensile per email
- /richiesta: modulo pubblico (nuovo territorio o riconsegna) con campo trappola, tempo minimo e limite orario; nome e note cifrati, avviso per email a chi ha richieste.gestisci (amministratore, assistente) - Home: riquadro Richieste con i proclamatori dal nome simile; porta su Assegna/Rientra già esistenti, che chiudono la richiesta; Scarta - Cartaceo sull'assegnazione (Assegna e Il mio gruppo), etichetta nell'elenco degli assegnati, pagina Cartacei, passa per l'XML - registro:invia-s13 agli amministratori l'ultima domenica del mese; richieste:pulizia dopo 90 giorni dalla gestione - Privacy, README e HANDOFF aggiornati; test in RichiesteTest Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -78,6 +78,61 @@
|
||||
@endif
|
||||
</div>
|
||||
|
||||
{{-- Richieste dal modulo pubblico: si confermano portandole sul modulo
|
||||
di assegnazione o di rientro, che le chiude da solo. --}}
|
||||
@can('richieste.gestisci')
|
||||
<section class="bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden mb-6" aria-labelledby="titolo-richieste">
|
||||
<div class="px-5 py-4 border-b flex flex-wrap items-center gap-3" style="background:linear-gradient(135deg,#eef2ff,#e0e7ff);border-color:#c7d2fe">
|
||||
<div>
|
||||
<h3 id="titolo-richieste" class="text-sm font-semibold" style="color:#3730a3">Richieste ({{ $richieste->count() }})</h3>
|
||||
<p class="text-xs" style="color:#4f46e5">Dal modulo pubblico: <code class="select-all">{{ route('richiesta') }}</code></p>
|
||||
</div>
|
||||
</div>
|
||||
@forelse($richieste as $voce)
|
||||
@php
|
||||
$r = $voce['richiesta'];
|
||||
$a = $voce['assegnazione'];
|
||||
@endphp
|
||||
<div class="px-5 py-4 border-b border-gray-100 last:border-b-0" wire:key="richiesta-{{ $r->id }}">
|
||||
<div class="flex flex-wrap items-baseline justify-between gap-2">
|
||||
<p class="text-sm text-gray-900">
|
||||
<span class="inline-flex rounded-full px-2 py-0.5 text-xs font-medium {{ $r->tipo === \App\Models\Richiesta::RICONSEGNA ? 'bg-amber-50 text-amber-800' : 'bg-indigo-50 text-indigo-700' }}">{{ $r->tipo_etichetta }}</span>
|
||||
<strong class="ml-1">{{ $r->nome }}</strong>
|
||||
@if($r->numero_territorio) · territorio N° {{ $r->numero_territorio }} @endif
|
||||
</p>
|
||||
<span class="text-xs text-gray-500">{{ $r->created_at->format('d/m/Y H:i') }}</span>
|
||||
</div>
|
||||
@if($r->note)
|
||||
<p class="mt-1 text-sm text-gray-600 italic">«{{ $r->note }}»</p>
|
||||
@endif
|
||||
|
||||
<div class="mt-3 flex flex-wrap items-center gap-2">
|
||||
@if($r->tipo === \App\Models\Richiesta::NUOVO)
|
||||
<span class="text-xs text-gray-500">{{ $voce['simili']->isNotEmpty() ? 'Chi è? Assegna a:' : 'Nessun proclamatore con un nome simile.' }}</span>
|
||||
@foreach($voce['simili'] as $p)
|
||||
<x-btn data-ritorno variante="secondary" tono="tenue" dimensione="sm"
|
||||
:href="route('assegnazioni.assegna', ['proclamatore' => $p->id, 'richiesta' => $r->id, 'dalla_home' => 1])">{{ $p->nome_completo }} →</x-btn>
|
||||
@endforeach
|
||||
<x-btn data-ritorno variante="ghost" dimensione="sm"
|
||||
:href="route('assegnazioni.assegna', ['richiesta' => $r->id, 'dalla_home' => 1])">{{ $voce['simili']->isNotEmpty() ? 'Nessuno di questi: apri il modulo' : 'Apri il modulo' }}</x-btn>
|
||||
@elseif($a)
|
||||
<span class="text-xs text-gray-500">Assegnato a <strong>{{ $a->proclamatore?->nome_completo }}</strong> dal {{ $a->assigned_at->format('d/m/Y') }}</span>
|
||||
<x-btn data-ritorno variante="primary" tono="tenue" dimensione="sm"
|
||||
:href="route('assegnazioni.rientra', ['assegnazione' => $a->id, 'richiesta' => $r->id])">Registra rientro →</x-btn>
|
||||
@else
|
||||
<span class="text-xs text-amber-800">Il territorio N° {{ $r->numero_territorio }} non risulta assegnato.</span>
|
||||
@endif
|
||||
<x-btn variante="danger" tono="tenue" dimensione="sm" class="ml-auto"
|
||||
wire:click="scartaRichiesta({{ $r->id }})"
|
||||
wire:confirm="Scartare la richiesta di {{ $r->nome }}?">Scarta</x-btn>
|
||||
</div>
|
||||
</div>
|
||||
@empty
|
||||
<p class="px-5 py-4 text-sm text-gray-500">Nessuna richiesta aperta.</p>
|
||||
@endforelse
|
||||
</section>
|
||||
@endcan
|
||||
|
||||
{{-- Quick lists --}}
|
||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
|
||||
{{-- Da assegnare --}}
|
||||
|
||||
Reference in New Issue
Block a user