JFIF  x x C         C     "        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        w !1AQ aq"2B #3Rbr{ gilour
<?php namespace App\Http\Controllers; use App\Models\Certificate; use App\Models\Course; use App\Models\Enrollment; use App\Models\Forum; use App\Models\Lesson; use App\Models\Watch_history; use Illuminate\Http\Request; use Illuminate\Support\Facades\Session; class PlayerController extends Controller { public function course_player(Request $request, $slug, $id = '') { $course = Course::where('slug', $slug)->first(); // check if course is paid if ($course->is_paid && auth()->user()->role != 'admin') { if (auth()->user()->role == 'student') { // for student check enrollment $enrollment = Enrollment::where('course_id', $course->id)->where('user_id', auth()->user()->id)->first(); if (! $enrollment) { Session::flash('error', get_phrase('Not registered for this course.')); return redirect()->route('my.courses'); } } elseif (auth()->user()->role == 'instructor') { // for instructor check who is course instructor if ($course->user_id != auth()->user()->id) { Session::flash('error', get_phrase('Not valid instructor.')); return redirect()->route('my.courses'); } } } $check_lesson_history = Watch_history::where('course_id', $course->id) ->where('student_id', auth()->user()->id)->first(); $first_lesson_of_course = Lesson::where('course_id', $course->id)->orderBy('sort', 'asc')->value('id'); if ($id == '') { $id = $check_lesson_history->watching_lesson_id ?? $first_lesson_of_course; } // if user has any watched history or not if (! $check_lesson_history && $id > 0) { $data = [ 'course_id' => $course->id, 'student_id' => auth()->user()->id, 'watching_lesson_id' => $id, 'completed_lesson' => json_encode([]) ]; Watch_history::insert($data); } // when user plays a lesson, update that lesson id as watch history if ($id > 0) { Watch_history::where('course_id', $course->id) ->where('student_id', auth()->user()->id) ->update(['watching_lesson_id' => $id]); } $page_data['course_details'] = $course; $page_data['lesson_details'] = Lesson::where('id', $id)->first(); $page_data['history'] = Watch_history::where('course_id', $course->id)->where('student_id', auth()->user()->id)->first(); $forum_query = Forum::join('users', 'forums.user_id', 'users.id') ->select('forums.*', 'users.name as user_name', 'users.photo as user_photo') ->latest('forums.id') ->where('forums.parent_id', 0) ->where('forums.course_id', $course->id); if (isset($_GET['search'])) { $forum_query->where(function ($query) use ($request) { $query->where('forums.title', 'like', '%' . $request->search . '%')->where('forums.description', 'like', '%' . $request->search . '%'); }); } $page_data['questions'] = $forum_query->get(); return view('course_player.index', $page_data); } public function set_watch_history(Request $request) { $course = Course::where('id', $request->course_id)->first(); $enrollment = Enrollment::where('course_id', $course->id)->where('user_id', auth()->user()->id)->first(); if (! $enrollment && (auth()->user()->role != 'admin' || ! is_course_instructor($course->id))) { Session::flash('error', get_phrase('Not registered for this course.')); return redirect()->back(); } $data['course_id'] = $request->course_id; $data['student_id'] = auth()->user()->id; $total_lesson = Lesson::where('course_id', $request->course_id)->pluck('id')->toArray(); $watch_history = Watch_history::where('course_id', $request->course_id) ->where('student_id', auth()->user()->id)->first(); if (isset($watch_history)) { $lessons = (array) json_decode($watch_history->completed_lesson); if (! in_array($request->lesson_id, $lessons)) { array_push($lessons, $request->lesson_id); } else { while (($key = array_search($request->lesson_id, $lessons)) !== false) { unset($lessons[$key]); } } $data['completed_lesson'] = json_encode($lessons); $data['watching_lesson_id'] = $request->lesson_id; $data['completed_date'] = (count($total_lesson) == count($lessons)) ? time() : null; Watch_history::where('course_id', $request->course_id)->where('student_id', auth()->user()->id)->update($data); } else { $lessons = [$request->lesson_id]; $data['completed_lesson'] = json_encode($lessons); $data['watching_lesson_id'] = $request->lesson_id; $data['completed_date'] = (count($total_lesson) == count($lessons)) ? time() : null; Watch_history::insert($data); } if (progress_bar($request->course_id) >= 100) { $certificate = Certificate::where('user_id', auth()->user()->id)->where('course_id', $request->course_id); if ($certificate->count() == 0) { $certificate_data['user_id'] = auth()->user()->id; $certificate_data['course_id'] = $request->course_id; $certificate_data['identifier'] = random(12); $certificate_data['created_at'] = date('Y-m-d H:i:s'); Certificate::insert($certificate_data); } } return redirect()->back(); } public function prepend_watermark() { return view('course_player.watermark'); } }