Sesi Aktif

{{ number_format($stats['active'], 0, ',', '.') }}

Selesai

{{ number_format($stats['completed'], 0, ',', '.') }}

Expired

{{ number_format($stats['expired'], 0, ',', '.') }}

Selesai Hari Ini

{{ number_format($stats['completed_today'], 0, ',', '.') }}

Incident Hari Ini

{{ number_format($stats['incidents_today'], 0, ',', '.') }}

Audit Event Hari Ini

{{ number_format($stats['integrity_events_today'], 0, ',', '.') }}

Exam Operations

TOEFL Exam Sessions

Pantau sesi peserta, section aktif, progress jawaban, dan riwayat event penting dari satu layar admin.

@forelse ($sessions as $session) @php $activeProgress = $session->sectionProgresses->firstWhere('status', 'in_progress'); $questionCount = $session->package?->questions()->count() ?? 0; $answeredCount = $session->answers->whereNotNull('selected_option_id')->count(); @endphp @empty @endforelse
Peserta Paket Section Progress Status Audit Waktu

{{ $session->user?->name ?? 'Peserta tidak ditemukan' }}

{{ $session->user?->email ?? '-' }}

{{ $session->package?->title ?? '-' }}

{{ $session->package?->code ?? '-' }}

{{ $session->currentSection?->name ?? 'Belum masuk section' }}

{{ $activeProgress?->started_at ? 'Timer berjalan' : 'Menunggu mulai section' }}

{{ $answeredCount }} / {{ $questionCount }} jawaban

Section detail
@foreach ($session->sectionProgresses->sortBy('section.order') as $progress) @php($sectionTotal = $session->package?->questions()->where('section_id', $progress->section_id)->count() ?? 0)

{{ $progress->section?->name }}

{{ str($progress->status)->replace('_', ' ')->title() }}

{{ $progress->answered_count }} / {{ $sectionTotal }} jawaban · current {{ $progress->currentQuestion?->order ? 'soal ' . $progress->currentQuestion->order : '-' }}

@endforeach
{{ str($session->status)->replace('_', ' ')->title() }}
{{ $session->incidents->count() }} incident {{ $session->integrityEvents->count() }} audit {{ $session->logs->count() }} log
Lihat event terbaru
@foreach ($session->integrityEvents->sortByDesc('created_at')->take(3) as $event)

{{ str($event->event)->replace('_', ' ')->title() }}

{{ $event->created_at?->format('d M H:i:s') }} · {{ $event->ip_address ?: '-' }}

@endforeach @foreach ($session->incidents->sortByDesc('created_at')->take(3) as $incident)

{{ str($incident->severity)->title() }} · {{ str($incident->category)->title() }}

{{ str($incident->note)->limit(80) }}

@endforeach @if ($session->integrityEvents->isEmpty() && $session->incidents->isEmpty())

Belum ada incident atau integrity event.

@endif

Mulai: {{ $session->started_at?->format('d M Y H:i') ?? '-' }}

Submit: {{ $session->submitted_at?->format('d M Y H:i') ?? '-' }}

Sisa: {{ $session->status === 'in_progress' ? gmdate('H:i:s', max(0, $session->remainingSeconds())) : '-' }}

Belum ada sesi yang cocok dengan filter ini.
{{ $sessions->links() }}