Backup e import

Backup completo dell’applicazione, import PDF territori, conversione legacy SQL, import ed export XML.

{{-- Backup, ripristino e zona pericolosa: componente a sé perché ha uno stato proprio (l'operazione in corso) e un poll che non deve far ri-renderizzare tutto il resto della pagina. Sta in cima perché è la sezione che serve nel 99% dei casi; le sezioni XML più sotto restano per gli usi parziali e per la conversione dei dump legacy. --}}

Import PDF territori

Puoi importare una cartella di PDF oppure, meglio per archivi grandi, un file ZIP contenente i PDF. Il nome file puo variare: basta che contenga il numero di un territorio gia presente nell'app. I PDF verranno associati ai territori esistenti e verra generata anche la thumbnail.

@error('pdfFolder')

{{ $message }}

@enderror @error('pdfFolder.*')

{{ $message }}

@enderror
Preparazione import in corso...

Import da archivio ZIP

Consigliato per grandi volumi: carichi un solo file e il server estrae automaticamente tutti i PDF.

@csrf
@error('pdfZip')

{{ $message }}

@enderror
Caricamento ZIP diretto in corso...
Console upload
@if($currentPdfImportId && (!empty($pdfImportStats) || !empty($pdfImportLogs)))
Stato import PDF
ID import: {{ $currentPdfImportId }}
{{ match($pdfImportStatus) { 'queued' => 'In coda', 'running' => 'In esecuzione', 'completed' => 'Completato', 'failed' => 'Fallito', default => 'Inattivo', } }}
@if(!empty($pdfImportStats))
Processati
{{ $pdfImportStats['processed'] ?? 0 }} / {{ $pdfImportStats['total'] ?? 0 }}
Aggiornati
{{ $pdfImportStats['updated'] ?? 0 }}
Saltati
{{ $pdfImportStats['skipped'] ?? 0 }}
Errori
{{ $pdfImportStats['errors'] ?? 0 }}
@endif
Log import PDF
@if(!empty($pdfImportIssues))
Riepilogo file non associati o problematici
@foreach($pdfImportIssues as $issue) @endforeach
File Motivo Territori rilevati
{{ $issue['file'] ?? '-' }} {{ $issue['message'] ?? '-' }} {{ !empty($issue['matched_numbers']) ? implode(', ', $issue['matched_numbers']) : '-' }}
@endif
@endif

Conversione dump SQL legacy

Carica il file SQL (es. dump-termanager-202604071526.sql) e genera un XML compatibile con l'import dell'app.

@csrf
@error('sqlDump')

{{ $message }}

@enderror

Import XML nell'app

Importa un XML nel formato TerManager2. L'import sostituisce i dati gestionali (zone, tipologie, proclamatori, territori, anni, campagne, assegnazioni e impostazioni).

@csrf
@error('xmlImport')

{{ $message }}

@enderror
@if(!empty($importStats))

Log importazione

Utenti importati: {{ $importStats['utenti_importati'] ?? 0 }}
Zone importate: {{ $importStats['zone_importate'] ?? 0 }}
Tipologie importate: {{ $importStats['tipologie_importate'] ?? 0 }}
Proclamatori importati: {{ $importStats['proclamatori_importati'] ?? 0 }}
Territori importati: {{ $importStats['territori_importati'] ?? 0 }}
Anni importati: {{ $importStats['anni_importati'] ?? 0 }}
Campagne importate: {{ $importStats['campagne_importate'] ?? 0 }}
Assegnazioni importate: {{ $importStats['assegnazioni_importate'] ?? 0 }}
Territori duplicati saltati: {{ $importStats['duplicate_territori'] ?? 0 }}
Assegnazioni saltate: {{ $importStats['assegnazioni_saltate'] ?? 0 }}
@if(!empty($importIssues))
@foreach($importIssues as $issue) @endforeach
Entità Legacy ID Motivo
{{ $issue['entity'] }} {{ $issue['legacy_id'] }} {{ $issue['reason'] }}
@endif
@endif

Export XML (solo dati)

Esporta tutti i dati correnti dell'app in XML, reimportabile qui sopra. Non include i file caricati: ripristinando solo questo, i territori restano senza PDF né miniature. Per un backup davvero completo usa il pacchetto .zip in cima alla pagina.

Dati sensibili. Il file include gli utenti con le password (hash) e i nomi dei proclamatori in chiaro. Conservalo in un luogo sicuro e non condividerlo: chi lo ottiene può tentare di forzare le password offline.