Files
nihonbuzz-academy/app/Http/Controllers/CertificateController.php

41 lines
1.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Course;
use App\Models\UserProgress;
use Illuminate\Http\Request;
use Inertia\Inertia;
use Barryvdh\DomPDF\Facade\Pdf; // Optional if we want PDF download, for now just view
class CertificateController extends Controller
{
public function show(Request $request, string $courseSlug)
{
$user = $request->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'),
]);
}
}