← Wróć do listy {{-- Live updates arrive via broadcasting, but websocket connections can drop silently — this is a periodic fallback refresh, with a visible countdown so it's clear the thread is still refreshing on its own. Also clickable, to fetch immediately and reset the countdown. --}} @php $refreshTicketSeconds = max(1, (int) \App\Support\Settings::get('refresh_ticket_view_seconds')); @endphp
schedule
Zgłoszenie {{ $ticket->displayNumber() }}
@if ($ticket->source === 'email') mailE-mail @endif
@unless ($editingDetails) @endunless
@unless ($editingDetails)

{{ $ticket->subject }}

{{ $ticket->categoryLabel() }}
{{ $ticket->body }}
@foreach ($this->publicMessages->first()?->attachments ?? [] as $a) @endforeach @if (count($ticket->customFieldEntries()))
@foreach ($ticket->customFieldEntries() as $cf)
{{ $cf['label'] }}: {{ $cf['value'] }}
@endforeach
@endif @else
@foreach ($this->editDetailsSelectedSubcategory?->customFields ?? [] as $field) @endforeach
@endunless
Notatki wewnętrzne
@forelse ($this->internalMessages as $m)
{{ $m->author_name }} · {{ \App\Support\Rel::format($m->created_at) }}
@if ($m->role === 'operator')
edit delete
@endif
@if ($editingNoteId === $m->id)
@else
{{ $m->body }}
@endif @foreach ($m->attachments as $a) @endforeach
@empty

Brak notatek wewnętrznych.

@endforelse @if ($addingNote)
@forelse ($noteAttachments as $i => $file) attach_file {{ $file->getClientOriginalName() }} close @empty Brak załączników @endforelse
@error('noteAttachments') {{ $message }} @enderror
@else @endif
@php $threadMessages = $this->publicMessages->skip(1); @endphp
@foreach ($threadMessages as $m) @php $mine = $m->role === 'operator'; @endphp
@if ($m->source === 'email') mail @endif {{ $m->author_name }} · {{ \App\Support\Rel::format($m->created_at) }}{{ $m->edited ? ' · edytowano' : '' }}
@if ($m->role === 'operator')
edit delete
@endif
@if ($editingMessageId === $m->id)
@else
{{ $m->body }}
@endif @foreach ($m->attachments as $a) @endforeach
@endforeach
@forelse ($replyAttachments as $i => $file) attach_file {{ $file->getClientOriginalName() }} close @empty Brak załączników @endforelse
@forelse ($this->replyQuickActions as $qa) @empty
Brak skonfigurowanych szybkich akcji.
@endforelse
@error('replyAttachments') {{ $message }} @enderror
Zgłaszający
edit
{{ $ticket->name }}
{{ $ticket->email }}
@if ($ticket->customer_id) Zobacz zgłoszenia tej osoby → @php $reporterFields = $ticket->customer?->customFieldEntries() ?? []; @endphp @if (count($reporterFields))
@foreach ($reporterFields as $cf)
{{ $cf['label'] }}: {{ $cf['value'] }}
@endforeach
@endif @endif
@if ($editingReporter)
@endif
Status i przypisanie
@if ($ticket->assignee_id !== auth()->id()) @endif
@if (\App\Support\Settings::bool('ai_summary_enabled'))
Podsumowanie AI
@if ($aiSummaryLoaded) @if ($ticket->ai_summary)
{{ $ticket->ai_summary }}
@if ($ticket->ai_suggested_action)
Sugerowana akcja: {{ $ticket->ai_suggested_action }}
@endif
Zaktualizowano: {{ $ticket->ai_summary_generated_at?->diffForHumans() }}
@else

Podsumowanie pojawi się po najbliższym cyklu automatyzacji AI.

@endif @endif
@endif
SLA
{{ $ticket->slaInfo()['text'] }}
@if ($ticket->hasCsatRating())
Ocena obsługi
@for ($i = 1; $i <= 5; $i++) star @endfor
@if ($ticket->csat_comment)

{{ $ticket->csat_comment }}

@endif
@endif
MONITOR CZASU PRACY
@if ($editingTimer)
godz. min. sek.
@else
Czas w zgłoszeniu: edit
@if ($ticket->isClosed())
Zgłoszenie zamknięte — zliczanie wstrzymane
@else
@if ($ticket->timer_started_at) @else @endif
@endif @endif
Historia zmian
@forelse ($ticket->histories as $h)
{{ $h->text }}
{{ \App\Support\Rel::format($h->created_at) }}
@empty

Brak historii zmian.

@endforelse
@if ($pendingDeleteMessageId)
Potwierdź usunięcie
Czy na pewno usunąć tę wiadomość?
@endif @if ($pendingDeleteTicket)
Potwierdź usunięcie
Czy na pewno usunąć zgłoszenie {{ $ticket->displayNumber() }}?
@endif @script @endscript