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,34 @@
<?php
namespace App\Http\Controllers\Cbt;
use App\Http\Controllers\Controller;
use App\Models\Exam;
use App\Models\ExamResult;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class ExamSessionController extends Controller
{
/**
* Menampilkan halaman persiapan/ruang ujian
*/
public function show(Exam $exam)
{
$user = Auth::user();
// 1. Validasi: Cek apakah user sudah pernah lulus ujian ini
$existingResult = ExamResult::where('user_id', $user->id)
->where('exam_id', $exam->id)
->orderBy('created_at', 'desc')
->first();
if ($existingResult && $existingResult->is_passed) {
return redirect()->route('cbt.dashboard')
->with('error', 'Anda sudah pernah lulus ujian ini. Tidak perlu mengulang.');
}
// 2. Jika aman, arahkan ke View Ruang Ujian yang memuat komponen Livewire
return view('pages.cbt.exam-room', compact('exam'));
}
}
@@ -0,0 +1,33 @@
<?php
namespace App\Http\Controllers\Cbt;
use App\Http\Controllers\Controller;
use App\Models\Exam;
use App\Models\ExamResult;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class UserDashboardController extends Controller
{
/**
* Menampilkan Dashboard Portal Ujian Karyawan
*/
public function index()
{
// Ambil data user yang sedang login
$user = Auth::user();
// Tarik riwayat ujian yang pernah diikuti karyawan ini beserta detail ujiannya
$examHistory = ExamResult::where('user_id', $user->id)
->with('exam')
->orderBy('created_at', 'desc')
->get();
// Tarik daftar ujian yang tersedia (Bisa ditambahkan filter berdasarkan departemen/jabatan nanti)
$availableExams = Exam::orderBy('created_at', 'desc')->get();
// Kirim data ke view dashboard CBT
return view('pages.cbt.dashboard.dashboard', compact('user', 'examHistory', 'availableExams'));
}
}