@php $ticket = $this->intervento->ticket; @endphp
Intervento ticket #{{ $this->intervento->ticket_id }}
{{ $ticket->titolo ?? '-' }} · {{ $ticket->stabile->denominazione ?? '-' }}
Fornitore: {{ $this->fornitore->ragione_sociale ?: trim(($this->fornitore->nome ?? '') . ' ' . ($this->fornitore->cognome ?? '')) }}
Scheda segnalazione
Richiedente
@if(!empty($caller['rubrica_url'])) {{ $caller['contatto'] ?: '-' }} @else {{ $caller['contatto'] ?: '-' }} @endif
Telefono
@if($caller['telefono'] !== '') {{ $caller['telefono'] }} @else - @endif
Email
@if($caller['email'] !== '') {{ $caller['email'] }} @else - @endif
Origine dato
{{ $caller['sorgente'] !== '' ? $caller['sorgente'] : '-' }}
Stato intervento
{{ $this->intervento->stato }}
Operatore
{{ $this->intervento->operatore_assegnato_label }}
Riferimento stabile
@if(!empty($caller['stabile_url']) && $caller['riferimento'] !== '') {{ $caller['riferimento'] }} @else {{ $caller['riferimento'] !== '' ? $caller['riferimento'] : '-' }} @endif
@if($caller['unita_label'] !== '')
Unità collegata: {{ $caller['unita_label'] }}
@endif
@if(!empty($caller['rubrica_url']) || !empty($caller['estratto_url']) || !empty($caller['stabile_url']))
@if(!empty($caller['rubrica_url'])) Apri scheda contatto @endif @if(!empty($caller['estratto_url'])) Apri estratto conto @endif @if(!empty($caller['stabile_url'])) Apri stabile @endif
{{ $ticket->descrizione }}
Operativo e rapportino
@if($this->intervento->stato === 'assegnato' || ! $this->intervento->iniziato_at || $this->intervento->terminato_at) Start intervento @endif @if($this->intervento->iniziato_at && ! $this->intervento->terminato_at) Stop intervento @endif Checkpoint posizione
Start, stop e checkpoint provano a salvare la posizione del browser. Se il GPS non e disponibile o negato, l'evento viene comunque registrato senza coordinate.
Timer avvio
{{ optional($this->intervento->iniziato_at)->format('d/m/Y H:i') ?: 'Non avviato' }}
Timer stop
{{ optional($this->intervento->terminato_at)->format('d/m/Y H:i') ?: 'In corso' }}
Durata rilevata
{{ $tempoMinuti ? ($tempoMinuti . ' minuti') : 'Da calcolare' }}
@if($this->canAssignDipendente())
Assegnazione operatore
Salva assegnazione
@endif
Materiali e prodotti
Puoi cercare per nome, codice interno o barcode. I lettori Bluetooth che si comportano come tastiera funzionano gia su questo campo.
Apri catalogo prodotti
Aggiungi manuale
@if(count($materialSuggestions) > 0)
@foreach($materialSuggestions as $suggestion)
{{ $suggestion['label'] }}
Barcode: {{ $suggestion['barcode'] !== '' ? $suggestion['barcode'] : 'non presente' }}
Prezzo: {{ $suggestion['price'] ?: 'non disponibile' }} · Fonte: {{ $suggestion['source'] }}
@if(!empty($suggestion['external_url'])) Apri fonte @endif
@endforeach
@elseif($materialSearch !== '')
Nessun prodotto trovato nel catalogo corrente. Puoi inserirlo manualmente adesso e usare il link Amazon di ricerca nel rapportino, poi completare l'anagrafica prodotto dal catalogo.
@endif @if(count($materialiUtilizzati) > 0)
@foreach($materialiUtilizzati as $index => $materiale)
@if(!empty($materiale['external_url'])) Apri riferimento esterno @else Nessun riferimento esterno @endif
@endforeach
@endif
@foreach($articoliUtilizzati as $index => $item) @endforeach
Anteprima immediata allegati fornitore
Le immagini e i documenti selezionati sono visibili subito prima del salvataggio del rapportino.
Foto lavoro
Documenti lavoro
@if(count($this->rapportinoUploads) > 0)
File selezionati per il rapportino
Ogni foto o documento puo avere la sua descrizione, come nella gestione ticket.
@foreach($this->rapportinoUploads as $upload)
@if($upload['is_image'] && $upload['preview_url']) {{ $upload['name'] }} @elseif($upload['is_pdf'])
PDF
Anteprima immediata disponibile sopra durante la selezione
@else
FILE
{{ strtoupper(pathinfo((string) $upload['name'], PATHINFO_EXTENSION) ?: 'DOC') }}
@endif
{{ $upload['name'] }}
{{ number_format(((int) $upload['size']) / 1024, 1, ',', '.') }} KB
@endforeach
@endif
Salva avanzamento Invia sollecito
Comunicazioni ticket
@forelse($ticket->messages as $msg)
{{ $msg->user->name ?? 'Sistema' }}
{{ $msg->messaggio }}
{{ optional($msg->created_at)->format('d/m/Y H:i') }}
@empty
Nessuna comunicazione disponibile.
@endforelse
Stato operativo
Stato: {{ $this->intervento->stato }}
Iniziato: {{ optional($this->intervento->iniziato_at)->format('d/m/Y H:i') ?: '-' }}
Terminato: {{ optional($this->intervento->terminato_at)->format('d/m/Y H:i') ?: '-' }}
Rif. chiusura: {{ $this->intervento->riferimento_chiusura ?: '-' }}
QR registrato: {{ $this->intervento->qr_token ?: '-' }}
Sessioni e presenza
{{ count($sessionRows) }} eventi
@if($lastGeoSnapshot)
{{ $lastGeoSnapshot['label'] }}
Start: {{ $lastGeoSnapshot['start_geo'] }}
Stop: {{ $lastGeoSnapshot['end_geo'] }}
Aggiornato: {{ $lastGeoSnapshot['updated_at'] }}
@endif
@forelse($sessionRows as $row)
{{ $row['type'] === 'checkpoint' ? 'Checkpoint' : 'Sessione lavoro' }} {{ $row['duration_minutes'] !== null ? ($row['duration_minutes'] . ' min') : '-' }}
{{ $row['note'] !== '' ? $row['note'] : 'Nessuna nota' }}
Start: {{ $row['started_at'] }} · {{ $row['start_geo'] }}
Stop: {{ $row['ended_at'] }} · {{ $row['end_geo'] }}
@empty
Nessuna sessione registrata.
@endforelse
Google workspace
@if($googleWorkspaceStatus)
Stato: {{ $googleWorkspaceStatus['connected'] ? 'Collegato' : 'Non collegato' }}
Account: {{ $googleWorkspaceStatus['email'] !== '' ? $googleWorkspaceStatus['email'] : '-' }}
Nome: {{ $googleWorkspaceStatus['name'] !== '' ? $googleWorkspaceStatus['name'] : '-' }}
Ultimo collegamento: {{ $googleWorkspaceStatus['connected_at'] !== '' ? $googleWorkspaceStatus['connected_at'] : '-' }}
Collega / aggiorna Google @if($googleWorkspaceStatus['connected']) Scollega @endif
Questo e il primo aggancio operativo per riusare contatti, calendario e Drive nello spazio fornitore con lo stesso account Google gia gestito dal backend.
@else
Nessun contesto amministratore collegato al fornitore: collegamento Google non disponibile.
@endif
Allegati ticket
@forelse($ticket->attachments as $attachment)
@if($attachment->isImage()) {{ $attachment->original_file_name }} @elseif($attachment->isPdf()) @else
{{ strtoupper(pathinfo((string) $attachment->original_file_name, PATHINFO_EXTENSION) ?: ($attachment->isPdf() ? 'PDF' : 'FILE')) }}
Anteprima disponibile in modal
@endif
{{ $attachment->original_file_name }}
{{ $attachment->description ?: 'Nessuna descrizione' }}
Caricato da {{ $attachment->user->name ?? 'Sistema' }} il {{ optional($attachment->created_at)->format('d/m/Y H:i') ?: '-' }}
@empty
Nessun allegato disponibile. Se il ticket e stato creato senza file persistiti, qui non verra mostrato nulla finche non vengono caricati allegati reali.
@endforelse
Storico correlato
@forelse($storicoRows as $row)
#{{ $row['ticket_id'] }} - {{ $row['titolo'] }}
{{ $row['stato'] }} · {{ $row['updated_at'] }}
@if($row['note'] !== '')
{{ \Illuminate\Support\Str::limit($row['note'], 90) }}
@endif
@empty
Nessuno storico correlato.
@endforelse
@if($attachmentPreview)
{{ $attachmentPreview['name'] ?? 'Allegato' }}
@if(!empty($attachmentPreview['description']))
{{ $attachmentPreview['description'] }}
@endif
@if($attachmentPreview['is_image'] ?? false) @elseif($attachmentPreview['is_pdf'] ?? false) Pagina @endif Apri in nuova scheda
@if($attachmentPreview['is_image'] ?? false)
Anteprima allegato
@elseif($attachmentPreview['is_pdf'] ?? false) @else
Anteprima non disponibile per questo formato. Scarica o apri il file: Apri file
@endif
@endif