Initial commit - lms-v2 + CLAUDE.md

This commit is contained in:
Iwit
2026-05-30 22:15:16 +07:00
commit 5811409e2d
183 changed files with 23225 additions and 0 deletions
@@ -0,0 +1,53 @@
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Models\ExamResult;
use Illuminate\Http\Request;
class ReportController extends Controller
{
/**
* Menampilkan daftar Karyawan (Trainee) beserta ringkasan progres mereka.
*/
public function training()
{
// Ambil semua user dengan role 'trainee', beserta relasi hasil ujiannya
$trainees = User::whereHas('roles', function ($query) {
$query->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'));
}
}