mirror of
https://github.com/nihonbuzz/nihonbuzz-academy.git
synced 2026-01-26 21:41:54 +07:00
41 lines
1.4 KiB
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'),
|
|
]);
|
|
}
|
|
}
|