This commit is contained in:
2026-07-28 17:31:00 +02:00
parent 94226e460a
commit 710a2720e4
3 changed files with 126 additions and 30 deletions

View File

@@ -48,6 +48,10 @@ class Registro extends Component
public bool $showDeleteConfirm = false;
public ?int $deleteId = null;
// ─── Modal modulo S-13 ──────────────────────────────────────
public bool $showS13Modal = false;
public string $s13Anno = '';
protected $queryString = [
'search' => ['except' => ''],
'filtroAnno' => ['except' => ''],
@@ -176,10 +180,28 @@ class Registro extends Component
// ─── Modulo S-13 ────────────────────────────────────────────
/**
* Chiede quale anno di servizio stampare. L'anno del filtro è solo la
* proposta iniziale: il modulo finisce in archivio e viene firmato, quindi
* la scelta va confermata invece di essere ereditata da uno stato della
* pagina che l'utente può non avere presente.
*/
public function openS13(): void
{
abort_if(!auth()->user()->can('settings.manage'), 403);
$this->s13Anno = $this->filtroAnno !== ''
? $this->filtroAnno
: (string) AnnoTeocratico::corrente()->id;
$this->resetValidation();
$this->showS13Modal = true;
}
/**
* Modulo ufficiale S-13-I ("Registrazione delle assegnazioni del
* territorio") compilato con le assegnazioni dell'anno di servizio
* selezionato nei filtri.
* territorio") compilato con le assegnazioni dell'anno di servizio scelto
* nella modale.
*
* Solo amministratore, come il resto del CRUD di questa pagina: il modulo
* espone in un unico file l'anagrafica completa di chi ha avuto quale
@@ -190,12 +212,17 @@ class Registro extends Component
{
abort_if(!auth()->user()->can('settings.manage'), 403);
// Il modulo è per definizione relativo a un singolo anno di servizio:
// con "Tutti gli anni" selezionato si ripiega sull'anno corrente.
$anno = $this->filtroAnno
? AnnoTeocratico::find($this->filtroAnno)
: null;
$anno ??= AnnoTeocratico::corrente();
$this->validate(
['s13Anno' => 'required|exists:anni_teocratici,id'],
[
's13Anno.required' => "Seleziona l'anno di servizio da stampare.",
's13Anno.exists' => "L'anno di servizio selezionato non esiste.",
]
);
$anno = AnnoTeocratico::findOrFail($this->s13Anno);
$this->showS13Modal = false;
$pdf = Pdf::loadView('pdf.registro-s13', [
'annoLabel' => $anno->label,