where('name', 'trainee'); }) ->with('examResults') // Pastikan relasi examResults sudah dibuat di model User ->latest() ->paginate(15); return view('pages.admin.reports.training', compact('trainees')); } /** * Menampilkan detail riwayat training & ujian per individu. */ public function showTraining(User $user) { // Pastikan user tersebut benar-benar trainee if (!$user->hasRole('trainee')) { abort(404, 'Data riwayat training tidak ditemukan atau user bukan karyawan.'); } // Ambil riwayat ujian, relasikan ke data Soal/Sesi (Exam) dan Dokumen (SOP) $examHistory = ExamResult::where('user_id', $user->id) ->latest() ->get(); // Kalkulasi Statistik Cepat $stats = [ 'total_exams' => $examHistory->count(), 'passed' => $examHistory->where('is_passed', true)->count(), 'failed' => $examHistory->where('is_passed', false)->count(), 'avg_score' => $examHistory->avg('score') ?? 0, ]; return view('pages.admin.reports.show', compact('user', 'examHistory', 'stats')); } }