mirror of
https://github.com/nihonbuzz/nihonbuzz-academy.git
synced 2026-01-27 02:41:58 +07:00
feat: implement Phase 7 (Course Player v2, Furigana, XP System, Integrated Vocab)
This commit is contained in:
@@ -37,10 +37,10 @@ class CoursePlayerController extends Controller
|
||||
// Get all lessons for navigation and progress check
|
||||
$allLessons = $course->modules->flatMap->lessons;
|
||||
|
||||
// Find current lesson
|
||||
// Find current lesson with vocabularies
|
||||
$currentLesson = $lessonSlug
|
||||
? Lesson::where('slug', $lessonSlug)->firstOrFail()
|
||||
: $allLessons->first();
|
||||
? Lesson::where('slug', $lessonSlug)->with('vocabularies')->firstOrFail()
|
||||
: $allLessons->first()->load('vocabularies');
|
||||
|
||||
// Get user progress for this course
|
||||
$completedLessonsIds = UserProgress::where('user_id', $user->id)
|
||||
@@ -77,6 +77,7 @@ class CoursePlayerController extends Controller
|
||||
'content' => $currentLesson->content,
|
||||
'video_url' => $currentLesson->video_url,
|
||||
'content_pdf' => $currentLesson->content_pdf,
|
||||
'vocabularies' => $currentLesson->vocabularies,
|
||||
],
|
||||
'progress' => [
|
||||
'completed_count' => count($completedLessonsIds),
|
||||
@@ -93,13 +94,19 @@ class CoursePlayerController extends Controller
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
$alreadyCompleted = UserProgress::where('user_id', $user->id)
|
||||
->where('lesson_id', $lesson->id)
|
||||
->exists();
|
||||
|
||||
UserProgress::updateOrCreate(
|
||||
['user_id' => $user->id, 'lesson_id' => $lesson->id],
|
||||
['completed_at' => now()]
|
||||
);
|
||||
|
||||
// Optional: Add XP points logic here later
|
||||
if (!$alreadyCompleted) {
|
||||
$user->increment('xp_points', 50);
|
||||
}
|
||||
|
||||
return back()->with('success', 'Materi selesai!');
|
||||
return back()->with('success', 'Materi selesai! +50 XP');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user