146 lines
7.1 KiB
PHP
146 lines
7.1 KiB
PHP
@extends('admin.layouts.netgescon')
|
||
|
||
@section('page-title', 'Documenti Collegati')
|
||
|
||
@section('content')
|
||
<div class="space-y-6 netgescon-fade-in">
|
||
<div class="netgescon-card">
|
||
<div class="flex items-center justify-between gap-4 flex-wrap">
|
||
<div>
|
||
<h2 class="netgescon-title">
|
||
<i class="fas fa-folder-open text-purple-600 mr-3"></i>
|
||
Gestione Documentale (Documenti Collegati)
|
||
</h2>
|
||
<p class="netgescon-text mt-2">
|
||
Qui trovi i documenti protocollati e puoi stampare le etichette (DYMO 11354 / 99014).
|
||
</p>
|
||
</div>
|
||
<div class="flex items-center gap-2">
|
||
<a href="{{ route('admin.stabili.index') }}" class="netgescon-btn netgescon-btn-outline-secondary">
|
||
<i class="fas fa-building"></i>
|
||
Vai agli Stabili
|
||
</a>
|
||
<a href="{{ route('admin.documenti-collegati.create') }}" class="netgescon-btn netgescon-btn-primary">
|
||
<i class="fas fa-plus"></i>
|
||
Nuovo Documento
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="netgescon-card">
|
||
<form method="GET" class="grid grid-cols-1 md:grid-cols-5 gap-4">
|
||
<div>
|
||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Categoria</label>
|
||
<select name="categoria" class="netgescon-select">
|
||
<option value="">Tutte</option>
|
||
@foreach(['contratto','assicurazione','certificato','preventivo','fattura','verbale','altro'] as $cat)
|
||
<option value="{{ $cat }}" @selected(request('categoria')===$cat)>{{ ucfirst($cat) }}</option>
|
||
@endforeach
|
||
</select>
|
||
</div>
|
||
<div>
|
||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Anno</label>
|
||
<input name="anno" value="{{ request('anno') }}" class="netgescon-input" placeholder="2026" />
|
||
</div>
|
||
<div class="md:col-span-2">
|
||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Ricerca</label>
|
||
<input name="search" value="{{ request('search') }}" class="netgescon-input" placeholder="Titolo / protocollo / descrizione" />
|
||
</div>
|
||
<div>
|
||
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">Faldone (opz.)</label>
|
||
<input id="faldone" value="{{ request('faldone') }}" class="netgescon-input" placeholder="Es. A3" />
|
||
</div>
|
||
|
||
<div class="md:col-span-5 flex items-center gap-2">
|
||
<button type="submit" class="netgescon-btn netgescon-btn-primary">
|
||
<i class="fas fa-search"></i>
|
||
Filtra
|
||
</button>
|
||
<a href="{{ route('admin.documenti-collegati.index') }}" class="netgescon-btn netgescon-btn-outline-secondary">
|
||
<i class="fas fa-eraser"></i>
|
||
Reset
|
||
</a>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
|
||
@if(session('success'))
|
||
<div class="netgescon-alert netgescon-alert-success">{{ session('success') }}</div>
|
||
@endif
|
||
@if(session('error'))
|
||
<div class="netgescon-alert netgescon-alert-danger">{{ session('error') }}</div>
|
||
@endif
|
||
|
||
<div class="netgescon-card overflow-x-auto">
|
||
<table class="min-w-full">
|
||
<thead>
|
||
<tr class="text-left text-gray-600 dark:text-gray-300">
|
||
<th class="py-3 pr-4">Protocollo</th>
|
||
<th class="py-3 pr-4">Stabile</th>
|
||
<th class="py-3 pr-4">Titolo</th>
|
||
<th class="py-3 pr-4">Tipo</th>
|
||
<th class="py-3 pr-4">Data</th>
|
||
<th class="py-3 pr-4">Stato</th>
|
||
<th class="py-3">Azioni</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody class="divide-y divide-gray-200 dark:divide-gray-700">
|
||
@forelse($documenti as $doc)
|
||
<tr>
|
||
<td class="py-3 pr-4 font-semibold">
|
||
{{ $doc->protocollo_formattato ?? $doc->numero_protocollo }}
|
||
</td>
|
||
<td class="py-3 pr-4">
|
||
{{ optional($doc->stabile)->denominazione ?: ('ID ' . (int) $doc->stabile_id) }}
|
||
</td>
|
||
<td class="py-3 pr-4">{{ $doc->titolo }}</td>
|
||
<td class="py-3 pr-4">{{ strtoupper((string) $doc->tipo_documento) }}</td>
|
||
<td class="py-3 pr-4">{{ optional($doc->data_sottoscrizione)->format('d-m-Y') }}</td>
|
||
<td class="py-3 pr-4">{{ strtoupper((string) $doc->stato_documento) }}</td>
|
||
<td class="py-3">
|
||
<div class="flex gap-2 flex-wrap">
|
||
<a class="netgescon-btn netgescon-btn-sm netgescon-btn-outline-secondary" href="{{ route('admin.documenti-collegati.show', $doc->id) }}" target="_blank">
|
||
<i class="fas fa-eye"></i>
|
||
Apri
|
||
</a>
|
||
<a class="netgescon-btn netgescon-btn-sm netgescon-btn-outline-secondary print-label" data-url="{{ route('admin.documenti-collegati.etichetta', $doc->id) }}" href="#">
|
||
<i class="fas fa-tag"></i>
|
||
Etichetta 11354
|
||
</a>
|
||
<a class="netgescon-btn netgescon-btn-sm netgescon-btn-outline-secondary print-label" data-url="{{ route('admin.documenti-collegati.etichetta', $doc->id) }}?format=99014" href="#">
|
||
<i class="fas fa-tag"></i>
|
||
Etichetta 99014
|
||
</a>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
@empty
|
||
<tr>
|
||
<td colspan="7" class="py-6 text-gray-600 dark:text-gray-300">
|
||
Nessun documento trovato. Clicca “Nuovo Documento” per crearne uno e poi stampa l’etichetta.
|
||
</td>
|
||
</tr>
|
||
@endforelse
|
||
</tbody>
|
||
</table>
|
||
|
||
<div class="mt-4">
|
||
{{ $documenti->withQueryString()->links() }}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
document.querySelectorAll('.print-label').forEach((a) => {
|
||
a.addEventListener('click', (e) => {
|
||
e.preventDefault();
|
||
const baseUrl = a.getAttribute('data-url');
|
||
const faldone = (document.getElementById('faldone')?.value || '').trim();
|
||
const url = faldone ? (baseUrl + (baseUrl.includes('?') ? '&' : '?') + 'faldone=' + encodeURIComponent(faldone)) : baseUrl;
|
||
window.open(url, '_blank');
|
||
});
|
||
});
|
||
</script>
|
||
@endsection
|