195 lines
12 KiB
PHP
195 lines
12 KiB
PHP
<x-filament-panels::page>
|
||
@php($latest = $this->getLatestVersion())
|
||
@php($diff = $this->getDiffSummary())
|
||
@php($selectedDomain = $this->getSelectedDomainTypeName())
|
||
@php($selectedCodes = $selectedDomain ? $this->getSelectedDomainCodes() : collect())
|
||
|
||
<div class="space-y-6">
|
||
<div class="space-y-2">
|
||
<div class="text-sm text-gray-600 dark:text-gray-300">
|
||
Questa pagina è riservata ai Super Admin: gestisce l’archivio versionato dei codici/enum della Fattura Elettronica, importati dal file XSD.
|
||
</div>
|
||
<div class="text-sm text-gray-600 dark:text-gray-300">
|
||
Per aggiornare i codici, usa “Importa XSD” in alto: verranno create nuove versioni e mostrate le differenze rispetto alla versione precedente.
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bg-white dark:bg-gray-900 rounded-lg shadow-sm border border-gray-200 dark:border-gray-800 p-4">
|
||
<div class="text-lg font-semibold">Ultima versione</div>
|
||
@if($latest)
|
||
<div class="mt-2 grid grid-cols-1 md:grid-cols-2 gap-2 text-sm">
|
||
<div><span class="text-gray-500">Etichetta:</span> {{ $latest->version_label ?: '—' }}</div>
|
||
<div><span class="text-gray-500">Importata:</span> {{ $latest->imported_at?->format('d/m/Y H:i') ?: '—' }}</div>
|
||
<div class="md:col-span-2"><span class="text-gray-500">SHA256:</span> <code>{{ $latest->sha256 }}</code></div>
|
||
</div>
|
||
@else
|
||
<div class="mt-2 text-sm text-gray-600 dark:text-gray-300">Nessuna versione importata.</div>
|
||
@endif
|
||
</div>
|
||
|
||
<div class="bg-white dark:bg-gray-900 rounded-lg shadow-sm border border-gray-200 dark:border-gray-800 p-4">
|
||
<div class="text-lg font-semibold">Differenze (ultima vs precedente)</div>
|
||
|
||
@if(!$latest)
|
||
<div class="mt-2 text-sm text-gray-600 dark:text-gray-300">Importa un XSD per vedere le differenze.</div>
|
||
@elseif(!$diff)
|
||
<div class="mt-2 text-sm text-gray-600 dark:text-gray-300">Nessuna differenza disponibile.</div>
|
||
@else
|
||
<div class="mt-2 grid grid-cols-1 md:grid-cols-3 gap-3 text-sm">
|
||
<div class="p-3 rounded border border-gray-200 dark:border-gray-800">
|
||
<div class="text-gray-500">Domini</div>
|
||
<div class="font-semibold">
|
||
+{{ $diff['domains_added'] }} / -{{ $diff['domains_removed'] }} / ~{{ $diff['domains_changed'] }}
|
||
</div>
|
||
</div>
|
||
<div class="p-3 rounded border border-gray-200 dark:border-gray-800">
|
||
<div class="text-gray-500">Codici</div>
|
||
<div class="font-semibold">
|
||
+{{ $diff['codes_added'] }} / -{{ $diff['codes_removed'] }} / ~{{ $diff['codes_changed'] }}
|
||
</div>
|
||
</div>
|
||
<div class="p-3 rounded border border-gray-200 dark:border-gray-800">
|
||
<div class="text-gray-500">Versioni</div>
|
||
<div class="font-semibold">
|
||
{{ $diff['old_version_id'] ? ('#'.$diff['old_version_id'].' → #'.$diff['new_version_id']) : ('(prima importazione) → #'.$diff['new_version_id']) }}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="mt-4 overflow-x-auto">
|
||
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-800">
|
||
<thead class="bg-gray-50 dark:bg-gray-950">
|
||
<tr>
|
||
<th class="px-3 py-2 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider">Dominio (simpleType)</th>
|
||
<th class="px-3 py-2 text-right text-xs font-semibold text-gray-500 uppercase tracking-wider">Aggiunti</th>
|
||
<th class="px-3 py-2 text-right text-xs font-semibold text-gray-500 uppercase tracking-wider">Rimossi</th>
|
||
<th class="px-3 py-2 text-right text-xs font-semibold text-gray-500 uppercase tracking-wider">Modificati</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody class="bg-white dark:bg-gray-900 divide-y divide-gray-100 dark:divide-gray-800">
|
||
@forelse(($diff['per_domain'] ?? []) as $row)
|
||
<tr>
|
||
<td class="px-3 py-2 text-sm font-medium">
|
||
<a class="underline" href="{{ \App\Filament\Pages\SuperAdmin\CodiciFatturaElettronicaXsd::getUrl(panel: 'admin-filament') }}?domain={{ urlencode($row['type_name']) }}">
|
||
{{ $row['type_name'] }}
|
||
</a>
|
||
</td>
|
||
<td class="px-3 py-2 text-sm text-right">{{ $row['added'] }}</td>
|
||
<td class="px-3 py-2 text-sm text-right">{{ $row['removed'] }}</td>
|
||
<td class="px-3 py-2 text-sm text-right">{{ $row['changed'] }}</td>
|
||
</tr>
|
||
@empty
|
||
<tr>
|
||
<td colspan="4" class="px-3 py-6 text-center text-sm text-gray-600 dark:text-gray-300">
|
||
Nessuna modifica rilevata.
|
||
</td>
|
||
</tr>
|
||
@endforelse
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
@endif
|
||
</div>
|
||
|
||
<div class="bg-white dark:bg-gray-900 rounded-lg shadow-sm border border-gray-200 dark:border-gray-800 p-4">
|
||
<div class="text-lg font-semibold">Domini importati (ultima versione)</div>
|
||
|
||
@php($domains = $this->getLatestDomains())
|
||
|
||
@if($domains->isEmpty())
|
||
<div class="mt-2 text-sm text-gray-600 dark:text-gray-300">Nessun dominio disponibile.</div>
|
||
@else
|
||
<div class="mt-3 overflow-x-auto">
|
||
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-800">
|
||
<thead class="bg-gray-50 dark:bg-gray-950">
|
||
<tr>
|
||
<th class="px-3 py-2 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider">Dominio (simpleType)</th>
|
||
<th class="px-3 py-2 text-right text-xs font-semibold text-gray-500 uppercase tracking-wider">Codici</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody class="bg-white dark:bg-gray-900 divide-y divide-gray-100 dark:divide-gray-800">
|
||
@foreach($domains as $d)
|
||
<tr>
|
||
<td class="px-3 py-2 text-sm font-medium">
|
||
<a class="underline" href="{{ \App\Filament\Pages\SuperAdmin\CodiciFatturaElettronicaXsd::getUrl(panel: 'admin-filament') }}?domain={{ urlencode($d->type_name) }}">
|
||
{{ $d->type_name }}
|
||
</a>
|
||
</td>
|
||
<td class="px-3 py-2 text-sm text-right">{{ (int) $d->codes_count }}</td>
|
||
</tr>
|
||
@endforeach
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
@endif
|
||
</div>
|
||
|
||
@if($latest && $selectedDomain)
|
||
<div class="bg-white dark:bg-gray-900 rounded-lg shadow-sm border border-gray-200 dark:border-gray-800 p-4">
|
||
<div class="flex items-center justify-between gap-3">
|
||
<div class="text-lg font-semibold">Codici: {{ $selectedDomain }}</div>
|
||
<a class="text-sm underline" href="{{ \App\Filament\Pages\SuperAdmin\CodiciFatturaElettronicaXsd::getUrl(panel: 'admin-filament') }}">Chiudi</a>
|
||
</div>
|
||
|
||
@if($selectedCodes->isEmpty())
|
||
<div class="mt-2 text-sm text-gray-600 dark:text-gray-300">Nessun codice trovato per questo dominio (ultima versione).</div>
|
||
@else
|
||
<div class="mt-3 overflow-x-auto">
|
||
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-800">
|
||
<thead class="bg-gray-50 dark:bg-gray-950">
|
||
<tr>
|
||
<th class="px-3 py-2 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider">Codice</th>
|
||
<th class="px-3 py-2 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider">Descrizione</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody class="bg-white dark:bg-gray-900 divide-y divide-gray-100 dark:divide-gray-800">
|
||
@foreach($selectedCodes as $c)
|
||
<tr>
|
||
<td class="px-3 py-2 text-sm font-medium"><code>{{ $c->code }}</code></td>
|
||
<td class="px-3 py-2 text-sm">{{ $c->documentation ?: '—' }}</td>
|
||
</tr>
|
||
@endforeach
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
@endif
|
||
</div>
|
||
@endif
|
||
|
||
<div class="bg-white dark:bg-gray-900 rounded-lg shadow-sm border border-gray-200 dark:border-gray-800 p-4">
|
||
<div class="text-lg font-semibold">Versioni importate</div>
|
||
|
||
@php($versions = $this->getVersions())
|
||
|
||
<div class="mt-3 overflow-x-auto">
|
||
<table class="min-w-full divide-y divide-gray-200 dark:divide-gray-800">
|
||
<thead class="bg-gray-50 dark:bg-gray-950">
|
||
<tr>
|
||
<th class="px-3 py-2 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider">ID</th>
|
||
<th class="px-3 py-2 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider">Etichetta</th>
|
||
<th class="px-3 py-2 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider">Importata</th>
|
||
<th class="px-3 py-2 text-left text-xs font-semibold text-gray-500 uppercase tracking-wider">SHA256</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody class="bg-white dark:bg-gray-900 divide-y divide-gray-100 dark:divide-gray-800">
|
||
@forelse($versions as $v)
|
||
<tr>
|
||
<td class="px-3 py-2 text-sm">{{ $v->id }}</td>
|
||
<td class="px-3 py-2 text-sm">{{ $v->version_label ?: '—' }}</td>
|
||
<td class="px-3 py-2 text-sm">{{ $v->imported_at?->format('d/m/Y H:i') ?: '—' }}</td>
|
||
<td class="px-3 py-2 text-sm"><code>{{ $v->sha256 }}</code></td>
|
||
</tr>
|
||
@empty
|
||
<tr>
|
||
<td colspan="4" class="px-3 py-6 text-center text-sm text-gray-600 dark:text-gray-300">
|
||
Nessuna versione importata.
|
||
</td>
|
||
</tr>
|
||
@endforelse
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</x-filament-panels::page>
|