@if (session('dashboard_status'))
{{ session('dashboard_status') }}
@endif

Total Cohort

{{ $stats['total'] }}

Open

{{ $stats['open'] }}

Closed

{{ $stats['closed'] }}

Assignment

{{ $stats['assignments'] }}

Verified

{{ $stats['verified'] }}

Pending

{{ $stats['pending_attendance'] }}

Cohort & Schedule

Buat Cohort Ujian

Gunakan cohort sebagai jadwal resmi ujian: paket, proctor, window waktu, dan lokasi.

@error('cohort_code')

{{ $message }}

@enderror @error('cohort_name')

{{ $message }}

@enderror @error('exam_package_id')

{{ $message }}

@enderror

Assignment Token

Assign Peserta

Peserta official test hanya bisa mulai ujian jika assignment aktif, masih dalam window jadwal, dan sudah di-release proctor.

@error('selectedCohortId')

{{ $message }}

@enderror @error('student_id')

{{ $message }}

@enderror
@error('token')

{{ $message }}

@enderror @error('max_attempts')

{{ $message }}

@enderror

Bulk Participant Import

Import Peserta CSV

Header wajib: name,email. Opsional: token,max_attempts,attendance_status,attendance_note.

@error('participant_import_file')

{{ $message }}

@enderror
@if ($participantImportReport !== [])

{{ $participantImportReport['assigned'] ?? 0 }} assignment baru, {{ $participantImportReport['updated'] ?? 0 }} diperbarui, {{ $participantImportReport['created_users'] ?? 0 }} akun dibuat.

@if (! empty($participantImportReport['errors']))
    @foreach (array_slice($participantImportReport['errors'], 0, 5) as $error)
  • {{ $error }}
  • @endforeach
@endif
@endif

Operational Schedule

Daftar Cohort

Kelola jadwal, token assignment, dan status cohort ujian.

@forelse ($cohorts as $cohort) @empty @endforelse
Cohort Paket Jadwal Peserta Aksi

{{ $cohort->name }}

{{ $cohort->code }} · {{ $cohort->location ?? 'Lokasi belum ditentukan' }}

{{ str($cohort->status)->title() }}

{{ $cohort->package?->code }}

{{ $cohort->package?->title }}

{{ $cohort->starts_at?->format('d M Y H:i') ?? 'Mulai fleksibel' }}

{{ $cohort->ends_at?->format('d M Y H:i') ?? 'Tanpa batas akhir' }}

Proctor: {{ $cohort->proctor?->name ?? '-' }}

{{ $cohort->assignments->count() }} peserta
@forelse ($cohort->assignments as $assignment)

{{ $assignment->user?->name }}

{{ $assignment->token }} · {{ $assignment->attempts_used }}/{{ $assignment->max_attempts }} attempt · {{ str($assignment->status)->title() }}

@php $attendanceClasses = [ 'verified' => 'bg-emerald-100 text-emerald-700', 'present' => 'bg-blue-100 text-blue-700', 'late' => 'bg-amber-100 text-amber-700', 'absent' => 'bg-rose-100 text-rose-700', 'pending' => 'bg-slate-200 text-slate-700', ]; @endphp
Attendance: {{ str($assignment->attendance_status ?? 'pending')->headline() }} @if ($assignment->checkedInBy) oleh {{ $assignment->checkedInBy->name }} {{ $assignment->checked_in_at?->format('d M H:i') }} @endif
@if ($cohort->package?->isOfficial())

{{ $assignment->isReleased() ? 'Released by ' . ($assignment->releasedBy?->name ?? 'proctor') . ' pada ' . $assignment->released_at?->format('d M Y H:i') : 'Menunggu release proctor' }}

@else

Paket demo/practice: release proctor tidak diperlukan.

@endif @if ($cohort->package?->isOfficial() && $assignment->status === 'assigned' && $assignment->attendance_status !== 'verified')

Tombol Release muncul setelah attendance diubah ke Verified.

@endif
@if ($assignment->status !== 'revoked') @endif @if ($assignment->status === 'revoked') @elseif ($assignment->status === 'assigned') @if ($cohort->package?->isOfficial()) @if ($assignment->isReleased()) @else @if ($assignment->attendance_status === 'verified') @else @endif @endif @endif @endif
@empty

Belum ada peserta.

@endforelse
@if ($cohort->status !== 'open') @endif @if ($cohort->status !== 'closed') @endif
Belum ada cohort.