@extends('layouts.app') @section('title', $ticket->ticket_number) @section('content')

{{ $ticket->ticket_number }}

{{ $ticket->customer->display_name }} · {{ $ticket->priority }} · {{ title_case_words($ticket->status) }} @if ($ticket->is_breached) · SLA breached @endif

@if ($ticket->status !== 'resolved' && $ticket->status !== 'closed')
@csrf
@else
@csrf
@endif
@include('components.kpi', ['label' => 'First response', 'value' => $ticket->first_response_minutes !== null ? round($ticket->first_response_minutes).' min' : 'Pending', 'variant' => $ticket->is_breached ? 'bad' : 'good', 'href' => '#']) @include('components.kpi', ['label' => 'Open for', 'value' => $ticket->created_at->diffForHumans(null, true), 'href' => '#']) @include('components.kpi', ['label' => 'Replies', 'value' => $ticket->replies()->count(), 'variant' => 'info', 'href' => '#conversation']) @include('components.kpi', ['label' => 'Priority', 'value' => title_case_words($ticket->priority), 'variant' => $ticket->priority === 'urgent' ? 'bad' : '', 'href' => '#'])
{{-- Conversation --}}

Conversation

{{ $ticket->replies()->count() }} message(s)
@if ($ticket->replies->isNotEmpty())
@foreach ($ticket->replies as $reply)
{{ $reply->author_name }} @if ($reply->is_internal) internal note @elseif ($reply->is_customer_reply) customer @else agent @endif
{{ $reply->created_at->format('d M Y H:i') }}
{{ $reply->body }}
@endforeach
@else @include('components.empty-state', ['icon' => '✉', 'title' => 'No replies yet']) @endif
@csrf
@if ($canned->isNotEmpty()) @endif
{{-- Details --}}

Ticket detail

Ticket number
{{ $ticket->ticket_number }}
Subject
{{ $ticket->subject }}
Category
{{ $ticket->category?->name ?? 'General' }}
Channel
{{ title_case_words($ticket->channel) }}
Opened by
{{ $ticket->createdBy?->name ?? 'System' }}
Assignee
{{ $ticket->assignee?->name ?? 'Unassigned' }}
Service
@if ($ticket->service) {{ $ticket->service->service_number }} @else — @endif
Work order
@if ($ticket->workOrders->count() > 0) {{ $ticket->workOrders->first()->work_order_number }} @else — @endif
Linked alert
@if ($ticket->alert) {{ $ticket->alert->title }} @else — @endif

SLA

First response due
{{ $ticket->first_response_due_at?->format('d M Y H:i') ?? '—' }} @if ($ticket->first_responded_at) met @elseif ($ticket->first_response_due_at && $ticket->first_response_due_at->isPast()) missed @endif
First response at
{{ $ticket->first_responded_at?->format('d M Y H:i') ?? 'Not yet' }}
Resolution due
{{ $ticket->resolution_due_at?->format('d M Y H:i') ?? '—' }} @if ($ticket->resolved_at) met @elseif ($ticket->resolution_due_at && $ticket->resolution_due_at->isPast()) missed @endif
Resolved at
{{ $ticket->resolved_at?->format('d M Y H:i') ?? 'Not resolved' }}
Resolution
{{ $ticket->resolution ?: '—' }}
Customer rating
{{ $ticket->satisfaction_rating ? str_repeat('★', $ticket->satisfaction_rating).str_repeat('☆', 5 - $ticket->satisfaction_rating) : 'Not rated' }}
@if ($ticket->status === 'resolved')

Close out

@csrf
@csrf
@endif
@endsection @push('scripts') @endpush