Aperti: {{ $ticketCounters['open'] ?? 0 }}
Urgenti: {{ $ticketCounters['urgent'] ?? 0 }}
Chiusi: {{ $ticketCounters['closed'] ?? 0 }}
Totali: {{ $ticketCounters['all'] ?? 0 }}
@if($activeTab === 'elenco') @endif
@if($activeTab === 'elenco')
Categorie ticket
Aggiungi categoria Modifica categoria selezionata
@forelse($tickets as $ticket) @empty @endforelse
ID Titolo Categoria Tipo intervento Assegnato a Priorita Stato Apertura Azioni
#{{ (int) $ticket->id }}
{{ $ticket->titolo }} @if(((int) ($ticket->attachments_count ?? 0)) > 0) Allegati {{ (int) $ticket->attachments_count }} @endif
{{ optional($ticket->categoriaTicket)->nome ?: '-' }} {{ $this->getTipoInterventoLabel($ticket) }} {{ optional($ticket->assegnatoAUser)->name ?: '-' }} {{ $ticket->priorita }} {{ $ticket->stato }} {{ optional($ticket->data_apertura)->format('d/m/Y H:i') }}
@if((int) ($ticket->assegnato_a_fornitore_id ?? 0) > 0) @endif @if(in_array($ticket->stato, ['Aperto'], true)) @endif @if(in_array($ticket->stato, ['Aperto', 'Preso in Carico'], true)) @endif @if(in_array($ticket->stato, ['Aperto', 'Preso in Carico', 'In Lavorazione', 'In Attesa Approvazione', 'In Attesa Ricambi'], true)) @endif @if(in_array($ticket->stato, ['Risolto'], true)) @endif
Nessun ticket per il filtro selezionato.
@elseif($activeTab === 'fornitori')
Fornitori attivi su ticket aperti
Mostra solo fornitori con ticket/interventi in corso, con stato operativo e ultimo aggiornamento.
@if(filled($lastGeneratedPassword ?? null))
Ultima password temporanea generata: {{ $lastGeneratedPassword }}
@endif
@forelse($fornitoriAttiviRows as $f) @empty @endforelse
Fornitore Contatti Ticket attivi Interventi aperti Come procede Accesso fornitore Azioni
{{ $f['nome'] ?: ('Fornitore #' . $f['id']) }} {{ $f['email'] ?: '-' }}
{{ $f['telefono'] ?: '-' }}
{{ (int) $f['ticket_attivi'] }} {{ (int) $f['interventi_aperti'] }}
Stati intervento: {{ $f['intervento_stati'] ?: 'N/D' }}
Ultimo aggiornamento: {{ $f['ultimo_aggiornamento'] ?: '-' }}
@if(!empty($f['ticket_focus']))
{{ implode(', ', $f['ticket_focus']) }}
@endif
Dipendenti: {{ (int) ($f['dipendenti_count'] ?? 0) }}
@if((int) ($f['linked_user_id'] ?? 0) > 0)
Accesso attivo (utente #{{ (int) $f['linked_user_id'] }})
@else
Nessun accesso attivo
@endif
@if((int) ($f['linked_user_id'] ?? 0) > 0) @endif Scheda operativa Anagrafica
Nessun fornitore attivo su ticket aperti.
@elseif($activeTab === 'scheda') @php($ticket = $this->selectedTicket) @if(! $ticket)
Nessun ticket selezionato. Vai nella TAB Elenco e premi "Scheda" sulla riga del ticket.
@else
#{{ $ticket->id }} - {{ $ticket->titolo }}
Stato: {{ $ticket->stato }} · Priorita: {{ $ticket->priorita }} · Categoria: {{ optional($ticket->categoriaTicket)->nome ?: '-' }}
Elenco pratiche assicurative
{{ $ticket->descrizione }}
Stato pratica assicurativa
@if($ticket->insuranceClaim)
Pratica aperta · Stato {{ $ticket->insuranceClaim->status ?: 'aperta' }} @if($ticket->insuranceClaim->claim_number) · Sinistro {{ $ticket->insuranceClaim->claim_number }} @endif
@if($ticket->insuranceClaim->policy_reference)
Riferimento polizza: {{ $ticket->insuranceClaim->policy_reference }}
@endif @else
Nessuna pratica assicurativa ancora aperta per questo ticket.
@endif
Assegnazione fornitore
Ricerca per tag, telefono, nome, ragione sociale o email. Tocca il risultato per selezionarlo.
@if($fornitoreId)
Fornitore selezionato: {{ $fornitoreSearch }}
@endif @if(count($fornitoreMatches) > 0)
@foreach($fornitoreMatches as $match) @endforeach
@elseif(filled($fornitoreSearch) && ! $fornitoreId)
Nessun fornitore trovato con questa ricerca.
@endif
Assegna fornitore @if((int) ($fornitoreId ?? 0) > 0) Vedi gestione fornitore @endif
Nota interna
Puoi aggiungere piu note: ogni nota viene salvata con data/ora automatica.
Aggiungi nota
Foto e documenti
Carica allegati
@forelse($ticket->attachments as $a) @php($details = $this->getAttachmentDetails($a))
@if($a->isImage()) {{ $a->original_file_name }} @else
{{ strtoupper(pathinfo((string) $a->original_file_name, PATHINFO_EXTENSION) ?: ($a->isPdf() ? 'PDF' : 'FILE')) }}
Anteprima disponibile in modal
@endif
{{ $a->original_file_name }}
{{ $details['primary_description'] ?: 'Nessuna descrizione' }}
@if(!empty($details['gps'])) GPS @endif @if(($details['capture_source'] ?? null) === 'camera') GPS da browser @elseif(($details['capture_source'] ?? null) === 'attachment') EXIF da libreria @endif @if(!empty($details['exif_datetime'])) EXIF @endif @if(!empty($details['device'])) {{ $details['device'] }} @endif
@if(!empty($details['gps']) || !empty($details['exif_datetime']) || !empty($details['file_label']) || !empty($details['original_label']) || !empty($details['other']))
@if(!empty($details['gps']))
Coordinate: {{ $details['gps']['label'] }}
@endif @if(!empty($details['exif_datetime']))
Data EXIF: {{ $details['exif_datetime'] }}
@endif @if(!empty($details['device']))
Dispositivo: {{ $details['device'] }}
@endif @if(!empty($details['capture_source']))
Sorgente metadati: {{ $details['capture_source'] === 'camera' ? 'browser/camera live' : $details['capture_source'] }}
@endif @if(!empty($details['file_label']))
Nome file: {{ $details['file_label'] }}
@endif @if(!empty($details['original_label']))
Origine: {{ $details['original_label'] }}
@endif @foreach($details['other'] as $otherPart)
{{ $otherPart }}
@endforeach
@endif
{{ optional($a->created_at)->format('d/m/Y H:i') }}
@if(!empty($details['gps'])) @endif
@empty
Nessun allegato.
@endforelse
Storico interventi
@forelse($ticket->interventi as $it)
Stato: {{ $it->stato }}
Fornitore: {{ optional($it->fornitore)->ragione_sociale ?: trim((optional($it->fornitore)->nome ?? '') . ' ' . (optional($it->fornitore)->cognome ?? '')) ?: 'N/D' }}
@if($it->note_amministratore)
{{ $it->note_amministratore }}
@endif
@empty
Nessun intervento registrato.
@endforelse
Storico note/messaggi
@forelse($ticket->messages as $msg)
{{ optional($msg->user)->name ?: 'Sistema' }}
{{ $msg->messaggio }}
{{ optional($msg->created_at)->format('d/m/Y H:i') }}
@empty
Nessuna nota registrata.
@endforelse
@endif @elseif($activeTab === 'assicurazione') @php($ticket = $this->selectedTicket) @if(! $ticket)
Nessun ticket selezionato. Apri un ticket e poi entra nella Tab 4 assicurazione.
@else
Tab 4 - Procedura assicurativa per ticket #{{ $ticket->id }}
{{ $ticket->titolo }} · {{ optional($ticket->stabile)->denominazione ?: '-' }}
Elenco pratiche
Assicurazione e sinistro
Apertura e aggiornamento pratica in area separata dal resto della lavorazione ticket.
@if($ticket->insuranceClaim) Sinistro {{ $ticket->insuranceClaim->status ?: 'aperto' }} @endif
@if($ticket->insuranceClaim)
Aperto il {{ optional($ticket->insuranceClaim->opened_at)->format('d/m/Y H:i') ?: '-' }} @if($ticket->insuranceClaim->insurancePolicy) · {{ $ticket->insuranceClaim->insurancePolicy->display_name }} @endif @if($ticket->insuranceClaim->claim_number) · Sinistro {{ $ticket->insuranceClaim->claim_number }} @endif @if($ticket->insuranceClaim->policy_reference) · Polizza {{ $ticket->insuranceClaim->policy_reference }} @endif @if(data_get($ticket->insuranceClaim->metadata, 'taken_in_charge_at'))
Presa in carico: {{ \Carbon\Carbon::parse(data_get($ticket->insuranceClaim->metadata, 'taken_in_charge_at'))->format('d/m/Y H:i') }}
@endif @if(data_get($ticket->insuranceClaim->metadata, 'email_sent_at'))
Email spedita: {{ \Carbon\Carbon::parse(data_get($ticket->insuranceClaim->metadata, 'email_sent_at'))->format('d/m/Y H:i') }}
@endif @if(data_get($ticket->insuranceClaim->metadata, 'insurer_contacted_at'))
Parlato con assicuratore: {{ \Carbon\Carbon::parse(data_get($ticket->insuranceClaim->metadata, 'insurer_contacted_at'))->format('d/m/Y H:i') }}
@endif @if(data_get($ticket->insuranceClaim->metadata, 'documents_sent_at'))
Documenti inviati: {{ \Carbon\Carbon::parse(data_get($ticket->insuranceClaim->metadata, 'documents_sent_at'))->format('d/m/Y H:i') }}
@endif @if(data_get($ticket->insuranceClaim->metadata, 'appointment_at'))
Appuntamento/perizia: {{ \Carbon\Carbon::parse(data_get($ticket->insuranceClaim->metadata, 'appointment_at'))->format('d/m/Y H:i') }}
@endif @if(data_get($ticket->insuranceClaim->metadata, 'closed_at'))
Chiusa il: {{ \Carbon\Carbon::parse(data_get($ticket->insuranceClaim->metadata, 'closed_at'))->format('d/m/Y H:i') }}
@endif @if(data_get($ticket->insuranceClaim->metadata, 'next_action'))
Prossima azione: {{ data_get($ticket->insuranceClaim->metadata, 'next_action') }}
@endif
@endif
Salva sinistro Apri elenco pratiche
@endif @endif
@if($attachmentPreview)
{{ $attachmentPreview['name'] ?? 'Allegato' }}
@if(!empty($attachmentPreview['details']['primary_description']))
{{ $attachmentPreview['details']['primary_description'] }}
@endif @if(!empty($attachmentPreview['details']['gps']) || !empty($attachmentPreview['details']['exif_datetime']) || !empty($attachmentPreview['details']['device']))
@if(!empty($attachmentPreview['details']['gps'])) GPS {{ $attachmentPreview['details']['gps']['label'] }} @endif @if(!empty($attachmentPreview['details']['exif_datetime'])) EXIF {{ $attachmentPreview['details']['exif_datetime'] }} @endif @if(!empty($attachmentPreview['details']['device'])) {{ $attachmentPreview['details']['device'] }} @endif
@endif
@if(!empty($attachmentPreview['is_image'])) Anteprima immagine @elseif(!empty($attachmentPreview['is_pdf'])) Anteprima PDF @endif @if(!empty($attachmentPreview['details']['gps'])) @endif Apri in nuova scheda
@if(!empty($attachmentPreview['details']['full_description']))
Dettagli allegato
{{ $attachmentPreview['details']['full_description'] }}
@endif @if(!empty($attachmentPreview['is_image']))
Anteprima allegato
@elseif(!empty($attachmentPreview['is_pdf'])) @else
Anteprima non disponibile per questo formato. Scarica o apri il file: Apri file
@endif
@endif @if($attachmentMapPreview)
Mappa allegato
{{ $attachmentMapPreview['name'] ?? 'Allegato' }} · {{ $attachmentMapPreview['label'] ?? '' }}
@endif