221 lines
14 KiB
PHP
221 lines
14 KiB
PHP
@extends('admin.layouts.netgescon')
|
|
|
|
@section('title', 'Dettaglio intervento fornitore')
|
|
|
|
@section('content')
|
|
<div class="container-fluid py-4">
|
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
<div>
|
|
<h1 class="h4 mb-0">Intervento Ticket #{{ $intervento->ticket_id }}</h1>
|
|
<small class="text-muted">{{ $intervento->ticket->titolo ?? '-' }} - {{ $intervento->ticket->stabile->denominazione ?? '-' }}</small>
|
|
</div>
|
|
<a href="{{ route('fornitore.tickets.index') }}" class="btn btn-outline-secondary btn-sm">Torna ai ticket</a>
|
|
</div>
|
|
|
|
<div class="card mb-3">
|
|
<div class="card-body py-2">
|
|
<ul class="nav nav-tabs card-header-tabs" id="fornitoreTicketTabs" role="tablist">
|
|
<li class="nav-item" role="presentation"><button class="nav-link active" data-bs-toggle="tab" data-bs-target="#tab-scheda" type="button">1. Scheda Segnalazione</button></li>
|
|
<li class="nav-item" role="presentation"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#tab-operativo" type="button">2. Operativo e Ricambi</button></li>
|
|
<li class="nav-item" role="presentation"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#tab-comunicazioni" type="button">3. Comunicazioni</button></li>
|
|
<li class="nav-item" role="presentation"><button class="nav-link" data-bs-toggle="tab" data-bs-target="#tab-chiusura" type="button">4. Chiusura e Proforma</button></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-content">
|
|
<div class="tab-pane fade show active" id="tab-scheda">
|
|
<div class="row g-3">
|
|
<div class="col-lg-8">
|
|
<div class="card mb-3">
|
|
<div class="card-header">Dati segnalazione</div>
|
|
<div class="card-body">
|
|
<div class="mb-2"><strong>Richiedente:</strong> {{ $caller['contatto'] ?: '-' }}</div>
|
|
<div class="mb-2"><strong>Telefono:</strong>
|
|
@if(!empty($caller['telefono']))
|
|
<a href="tel:{{ preg_replace('/\s+/', '', (string) $caller['telefono']) }}">{{ $caller['telefono'] }}</a>
|
|
@else
|
|
-
|
|
@endif
|
|
</div>
|
|
<div class="mb-2"><strong>Aperto da:</strong> {{ $intervento->ticket->apertoDaUser->name ?? '-' }}</div>
|
|
<div class="mb-2"><strong>Assegnato a fornitore da:</strong> {{ $intervento->ticket->assegnatoAUser->name ?? '-' }}</div>
|
|
<div class="mb-0"><strong>Descrizione:</strong>
|
|
<div class="mt-1 text-muted" style="white-space: pre-wrap;">{{ $intervento->ticket->descrizione }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card mb-3">
|
|
<div class="card-header">Foto e documenti segnalati</div>
|
|
<div class="card-body">
|
|
@if($intervento->ticket->attachments->isEmpty())
|
|
<p class="text-muted mb-0">Nessun allegato disponibile.</p>
|
|
@else
|
|
<div class="row g-3">
|
|
@foreach($intervento->ticket->attachments as $a)
|
|
<div class="col-md-6">
|
|
<div class="border rounded p-2 h-100">
|
|
<div class="small fw-semibold">{{ $a->original_file_name }}</div>
|
|
<div class="small text-muted mb-2">{{ $a->description ?: 'Nessuna descrizione' }}</div>
|
|
<a class="btn btn-sm btn-outline-primary" href="{{ route('admin.tickets.attachments.view', ['attachment' => (int) $a->id]) }}" target="_blank">Apri</a>
|
|
</div>
|
|
</div>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-lg-4">
|
|
<div class="card mb-3">
|
|
<div class="card-header">Stato operativo</div>
|
|
<div class="card-body">
|
|
<div class="mb-2"><strong>Stato:</strong> <span class="badge bg-info text-dark">{{ $intervento->stato }}</span></div>
|
|
<div class="mb-2"><strong>Operatore:</strong> {{ $intervento->eseguitoDaDipendente?->nome_completo ?: 'Responsabile fornitore' }}</div>
|
|
<div class="mb-2"><strong>Iniziato:</strong> {{ optional($intervento->iniziato_at)->format('d/m/Y H:i') ?: '-' }}</div>
|
|
<div class="mb-2"><strong>Terminato:</strong> {{ optional($intervento->terminato_at)->format('d/m/Y H:i') ?: '-' }}</div>
|
|
<div class="mb-2"><strong>Rif. chiusura:</strong> {{ $intervento->riferimento_chiusura ?: '-' }}</div>
|
|
<div class="mb-0"><strong>QR token:</strong> {{ $intervento->qr_token ?: '-' }}</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-header">Storico stesso richiedente/stabile</div>
|
|
<div class="card-body">
|
|
@forelse($storico as $old)
|
|
<div class="border-bottom pb-2 mb-2">
|
|
<div class="small fw-semibold">#{{ $old->ticket_id }} - {{ $old->ticket->titolo ?? '-' }}</div>
|
|
<div class="small text-muted">{{ $old->stato }} · {{ optional($old->updated_at)->format('d/m/Y H:i') }}</div>
|
|
@if($old->note_amministratore)
|
|
<div class="small text-muted">Nota admin: {{ \Illuminate\Support\Str::limit($old->note_amministratore, 90) }}</div>
|
|
@endif
|
|
</div>
|
|
@empty
|
|
<p class="text-muted mb-0">Nessuno storico correlato.</p>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-pane fade" id="tab-operativo">
|
|
<div class="card">
|
|
<div class="card-header">Rapporto operativo, ricambi e apparato</div>
|
|
<div class="card-body">
|
|
@if($intervento->stato === 'assegnato')
|
|
<form method="POST" action="{{ route('fornitore.tickets.start', $intervento) }}" class="mb-3">
|
|
@csrf
|
|
<button type="submit" class="btn btn-primary">Prendi in carico</button>
|
|
</form>
|
|
@endif
|
|
|
|
<form method="POST" action="{{ route('fornitore.tickets.complete', $intervento) }}" enctype="multipart/form-data">
|
|
@csrf
|
|
<div class="mb-3">
|
|
<label class="form-label" for="rapporto_fornitore">Rapporto intervento</label>
|
|
<textarea class="form-control" name="rapporto_fornitore" id="rapporto_fornitore" rows="5" required>{{ old('rapporto_fornitore', $intervento->rapporto_fornitore) }}</textarea>
|
|
</div>
|
|
|
|
<div class="row g-2 mb-3">
|
|
<div class="col-md-4"><input type="text" class="form-control" name="apparato_marca" value="{{ old('apparato_marca') }}" placeholder="Marca apparato"></div>
|
|
<div class="col-md-4"><input type="text" class="form-control" name="apparato_modello" value="{{ old('apparato_modello') }}" placeholder="Modello"></div>
|
|
<div class="col-md-4"><input type="text" class="form-control" name="apparato_seriale" value="{{ old('apparato_seriale') }}" placeholder="Seriale"></div>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label" for="tempo_minuti">Tempo impiegato (minuti)</label>
|
|
<input type="number" min="1" max="1440" class="form-control" name="tempo_minuti" id="tempo_minuti" value="{{ old('tempo_minuti', $intervento->tempo_minuti) }}">
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label">Ricambi/attivita utilizzati</label>
|
|
@php($items = old('articoli_utilizzati', $intervento->articoli_utilizzati ?? []))
|
|
@for($i = 0; $i < 10; $i++)
|
|
<input type="text" class="form-control mb-2" name="articoli_utilizzati[]" value="{{ $items[$i] ?? '' }}" placeholder="Ricambio o attivita {{ $i + 1 }}">
|
|
@endfor
|
|
</div>
|
|
|
|
<div class="row g-2 mb-3">
|
|
<div class="col-md-6">
|
|
<label class="form-label">Foto lavoro (max 10)</label>
|
|
<input type="file" class="form-control" name="foto_lavoro[]" accept="image/*" multiple>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">Documenti lavoro (max 10)</label>
|
|
<input type="file" class="form-control" name="documenti_lavoro[]" accept=".pdf,.doc,.docx,.xls,.xlsx,.txt,image/*" multiple>
|
|
</div>
|
|
</div>
|
|
|
|
@for($i = 0; $i < 10; $i++)
|
|
<input type="text" class="form-control mb-2" name="descrizione_file[]" value="{{ old('descrizione_file.' . $i) }}" placeholder="Descrizione file #{{ $i + 1 }} (opzionale)">
|
|
@endfor
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label" for="messaggio_veloce">Messaggio veloce allo studio (nelle note)</label>
|
|
<textarea class="form-control" name="messaggio_veloce" id="messaggio_veloce" rows="2" placeholder="Messaggio rapido">{{ old('messaggio_veloce') }}</textarea>
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-success">Salva avanzamento</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-pane fade" id="tab-comunicazioni">
|
|
<div class="card">
|
|
<div class="card-header">Note e comunicazioni ticket</div>
|
|
<div class="card-body">
|
|
@forelse($intervento->ticket->messages as $msg)
|
|
<div class="border-bottom pb-2 mb-2">
|
|
<div class="small fw-semibold">{{ $msg->user->name ?? 'Sistema' }} · {{ optional($msg->created_at)->format('d/m/Y H:i') }}</div>
|
|
<div class="small" style="white-space: pre-wrap;">{{ $msg->messaggio }}</div>
|
|
</div>
|
|
@empty
|
|
<p class="text-muted mb-0">Nessuna comunicazione disponibile.</p>
|
|
@endforelse
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-pane fade" id="tab-chiusura">
|
|
<div class="card">
|
|
<div class="card-header">Chiusura rapportino e proforma</div>
|
|
<div class="card-body">
|
|
<form method="POST" action="{{ route('fornitore.tickets.complete', $intervento) }}" enctype="multipart/form-data">
|
|
@csrf
|
|
<div class="mb-3">
|
|
<label class="form-label">Rapporto finale</label>
|
|
<textarea class="form-control" name="rapporto_fornitore" rows="4" required>{{ old('rapporto_fornitore', $intervento->rapporto_fornitore) }}</textarea>
|
|
</div>
|
|
|
|
<div class="row g-2 mb-3">
|
|
<div class="col-md-4"><input type="text" class="form-control" name="proforma_codice" value="{{ old('proforma_codice') }}" placeholder="Codice proforma/FE"></div>
|
|
<div class="col-md-8"><input type="text" class="form-control" name="proforma_note" value="{{ old('proforma_note') }}" placeholder="Note proforma/autorizzazione"></div>
|
|
</div>
|
|
|
|
<div class="form-check mb-2">
|
|
<input class="form-check-input" type="checkbox" name="richiesta_proforma" value="1" id="richiesta_proforma" {{ old('richiesta_proforma') ? 'checked' : '' }}>
|
|
<label class="form-check-label" for="richiesta_proforma">Richiedi autorizzazione proforma</label>
|
|
</div>
|
|
<div class="form-check mb-3">
|
|
<input class="form-check-input" type="checkbox" name="lavoro_standard" value="1" id="lavoro_standard" {{ old('lavoro_standard') ? 'checked' : '' }}>
|
|
<label class="form-check-label" for="lavoro_standard">Lavoro standard gia autorizzato (passa a fatturabile)</label>
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label" for="qr_token">QR token (se scansionato)</label>
|
|
<input type="text" class="form-control" name="qr_token" id="qr_token" placeholder="Inserisci il codice QR" value="{{ old('qr_token') }}">
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-success">Chiudi rapportino e invia</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|