{{-- Backup, ripristino e azzeramento, con avanzamento reale. La barra legge processed/total dell'operazione in corso, che i job aggiornano quando qualcosa e' davvero finito sul disco. Il poll resta attivo solo mentre l'operazione e' in coda o in esecuzione: appena chiude, si ferma da solo. --}} @php $op = $operazione; $tipo = $op['tipo'] ?? null; $stato = $op['status'] ?? null; $attesaDownload = ($op['fase'] ?? null) === \App\Services\BackupOperationState::FASE_ATTESA_DOWNLOAD; $etichettaTipo = match ($tipo) { 'backup' => 'Backup in corso', 'restore' => 'Ripristino in corso', 'reset' => 'Azzeramento in corso', default => 'Operazione in corso', }; @endphp
{{-- ─── Pannello di avanzamento ────────────────────────────────── --}} @if($operationId && $op)
inCorso) wire:poll.750ms="aggiorna" @endif>
{{ $stato === 'completed' ? 'Operazione completata' : ($stato === 'failed' ? 'Operazione fallita' : $etichettaTipo) }}
{{ $op['fase'] ?? '' }} @if(($op['total'] ?? 0) > 0 && $stato !== 'completed') — {{ $op['processed'] ?? 0 }} / {{ $op['total'] }} @endif
{{ $this->percentuale }}%
@if($attesaDownload)

L’archivio è pronto e il download è partito. Non è stato cancellato ancora nulla: l’azzeramento aspetta la tua conferma.

Apri il file scaricato e verifica che sia integro. Il server sa di aver spedito l’archivio, non può sapere se è arrivato intero: quella verifica tocca a te, ed è l’ultima possibilità di tornare indietro.

Scarica di nuovo
@error('confermaReset')

{{ $message }}

@enderror
@endif @if($stato === 'failed')

{{ $op['error'] ?? 'Errore non specificato.' }}

@endif @if($stato === 'completed' && ($op['result']['messaggio'] ?? null))

{{ $op['result']['messaggio'] }}

@endif @if($stato === 'completed' && $tipo === 'backup' && ($op['result']['file'] ?? null))
Scarica di nuovo {{ $op['result']['nome_download'] ?? '' }} — {{ number_format(($op['result']['dimensione'] ?? 0) / 1048576, 1, ',', '.') }} MB
@endif @if(!empty($op['logs']))
Dettaglio
@endif @if(in_array($stato, ['completed', 'failed'], true)) @endif
@endif {{-- ─── Backup ─────────────────────────────────────────────────── --}}

Backup completo (.zip)

Un unico pacchetto con tutti i dati dell’applicazione — utenti compresi — e tutti i file caricati: PDF dei territori, miniature e logo. E’ l’archivio da conservare per rimettere in piedi l’installazione da zero.

Dati sensibili. Il pacchetto include gli utenti con le password (hash), i nomi dei proclamatori in chiaro e le mappe dei territori. Conservalo in un luogo sicuro e non condividerlo.

L’archivio si genera in background: puoi seguire l’avanzamento qui sopra.

{{-- ─── Ripristino ─────────────────────────────────────────────── --}}

Ripristina da backup

Carica un pacchetto .zip generato qui sopra. Il ripristino sostituisce i dati gestionali correnti e tutti i file caricati.

Al termine tutti dovranno cambiare password, amministratore compreso: il pacchetto contiene le password di ogni account, quindi dopo un ripristino le vecchie non sono piu’ da considerarsi segrete. Verrai portato subito sulla schermata di cambio password.
@csrf

{{-- Caricamento: percentuale reale dell'upload, non del ripristino. --}}
{{-- ─── Zona pericolosa ────────────────────────────────────────── --}}

Zona pericolosa

Operazioni irreversibili. Leggi prima di premere.

Azzera tutto e riparti da zero

Riporta l’applicazione allo stato di installazione appena eseguita. In ordine:

  1. Viene creato e scaricato un backup completo di tutto ciò che c’è adesso.
  2. L’operazione si ferma e aspetta: controlli il file scaricato e confermi. Fino a quel clic non viene toccato nulla, e puoi annullare.
  3. Vengono eliminati territori, proclamatori, assegnazioni, campagne, zone, tipologie, anni di servizio, il registro attività e tutti i file caricati.
  4. Le impostazioni tornano ai valori di default e i ruoli vengono riseminati.
  5. Tutti gli altri utenti vengono eliminati. Resta solo il tuo account di amministratore, con la password attuale — come un’installazione nuova, che ha un amministratore solo.
Il backup scaricato è l’unico modo per tornare indietro. Verifica di averlo salvato prima di chiudere il browser.
@error('confermaReset')

{{ $message }}

@enderror