netgescon-day0/resources/views/filament/pages/super-admin/codici-fe-xsd.blade.php

195 lines
12 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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 larchivio 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>