user(); $course = Course::where('slug', $courseSlug)->withCount('lessons')->firstOrFail(); // Check if course is fully completed // Count completed lessons vs total lessons $completedCount = UserProgress::where('user_id', $user->id) ->whereIn('lesson_id', $course->lessons()->pluck('id')) ->whereNotNull('completed_at') ->count(); $totalLessons = $course->lessons_count ?? 0; $progress = ($totalLessons > 0) ? ($completedCount / $totalLessons) * 100 : 0; // Strict check: Must be 100% complete if ($progress < 100) { return redirect()->route('courses.index')->with('error', 'Selesaikan semua materi untuk klaim sertifikat.'); } return Inertia::render('Certificates/Show', [ 'course' => $course, 'student' => $user, 'date' => now()->translatedFormat('d F Y'), 'certificate_id' => 'NB-' . strtoupper(substr($course->slug, 0, 3)) . '-' . $user->id . '-' . date('ymd'), ]); } }