netgescon-day0/resources/views/fornitore/tickets/show.blade.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