validate([ 'lesson_id' => ['required', 'integer', 'exists:lessons,id'], 'position_seconds' => ['required', 'integer', 'min:0'], ]); /** @var Lesson $lesson */ $lesson = Lesson::query()->findOrFail($validated['lesson_id']); $progress = $this->tracking->heartbeat( student: $request->user(), lesson: $lesson, positionSeconds: (int) $validated['position_seconds'], ); return response()->json([ 'lesson_id' => $lesson->id, 'watched_percentage' => $progress->watched_percentage, 'last_position_seconds' => $progress->last_position_seconds, 'completed' => $progress->completed_at !== null, ]); } }