shell bypass 403
<?php namespace App\Http\Controllers\Frontend; use PDF; use App\User; use App\AboutPage; use Carbon\Carbon; use App\Subscription; use App\LessonComplete; use Illuminate\Http\Request; use App\Jobs\SendGeneralEmail; use DrewM\MailChimp\MailChimp; use Illuminate\Support\Facades\DB; use Modules\Payment\Entities\Cart; use Illuminate\Support\Facades\App; use Modules\Quiz\Entities\QuizTest; use App\Http\Controllers\Controller; use Brian2694\Toastr\Facades\Toastr; use Illuminate\Support\Facades\Auth; use Modules\Quiz\Entities\OnlineQuiz; use Modules\Quiz\Entities\QuizeSetup; use Modules\Calendar\Entities\Calendar; use Illuminate\Support\Facades\Redirect; use Modules\CourseSetting\Entities\Course; use Modules\CourseSetting\Entities\Lesson; use Modules\CourseSetting\Entities\Chapter; use Modules\Localization\Entities\Language; use Modules\Certificate\Entities\Certificate; use Modules\FrontendManage\Entities\FrontPage; use Modules\CourseSetting\Entities\CourseLevel; use Modules\Quiz\Entities\QuestionBankMuOption; use Modules\VirtualClass\Entities\VirtualClass; use Modules\CourseSetting\Entities\CourseEnrolled; use Modules\FrontendManage\Entities\PrivacyPolicy; use Modules\Newsletter\Entities\NewsletterSetting; use Modules\Certificate\Entities\CertificateRecord; use Modules\BundleSubscription\Entities\BundleCoursePlan; use Modules\Newsletter\Http\Controllers\AcelleController; use Modules\Certificate\Http\Controllers\CertificateController; use Modules\Subscription\Http\Controllers\CourseSubscriptionController; use Modules\MyClass\Repositories\Interfaces\AddStudentToClassRepositoryInterface; class WebsiteController extends Controller { public function __construct() { $this->middleware('maintenanceMode'); } public function aboutData() { try { if (hasDynamicPage()) { $row = FrontPage::where('slug', '/about-us')->first(); $details = dynamicContentAppend($row->details); return view('aorapagebuilder::pages.show', compact('row', 'details')); } else { $about = AboutPage::first(); return view(theme('pages.about'), compact('about')); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function ajaxCounterCity(Request $request) { try { $cities = DB::table('spn_cities')->select('id', 'name')->where('name', 'like', '%' . $request->search . '%')->where('state_id', '=', $request->id)->paginate(10); $response = []; foreach ($cities as $item) { $response[] = [ 'id' => $item->id, 'text' => $item->name ]; } if (count($response) == 0) { $data['pagination'] = ["more" => false]; } else { $data['pagination'] = ["more" => true]; } $data['results'] = $response; return response()->json($data); } catch (\Exception $e) { return response()->json("", 404); } } public function ajaxCounterState(Request $request) { try { $states = DB::table('states')->select('id', 'name')->where('name', 'like', '%' . $request->search . '%')->where('country_id', '=', $request->id)->paginate(10); $response = []; foreach ($states as $item) { $response[] = [ 'id' => $item->id, 'text' => $item->name ]; } $data['results'] = $response; if (count($response) == 0) { $data['pagination'] = ["more" => false]; } else { $data['pagination'] = ["more" => true]; } return response()->json($data); } catch (\Exception $e) { return response()->json("", 404); } } public function searchCertificate(Request $request) { try { if (hasDynamicPage()) { $row = FrontPage::where('slug', 'certificate-verification')->first(); $details = dynamicContentAppend($row->details); return view('aorapagebuilder::pages.show', compact('row', 'details')); } else { return view(theme('pages.searchCertificate')); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function showCertificate(Request $request) { try { $certificate_record = CertificateRecord::where('certificate_id', $request->certificate_number)->first(); if ($certificate_record) { $course = Course::findOrFail($certificate_record->course_id); if ($course->certificate_id != null) { $certificate = Certificate::findOrFail($course->certificate_id); } else { if ($course->type == 1) { $certificate = Certificate::where('for_course', 1)->first(); } else { $certificate = Certificate::where('for_quiz', 1)->first(); } } if (!$certificate) { Toastr::error(trans('certificate.Certificate Not Found')); return back(); } $title = $certificate_record->certificate_id . ".jpg"; $downloadFile = new CertificateController(); $request->certificate_id = $certificate_record->certificate_id; $request->course = $course; $request->user = User::find($certificate_record->student_id); $certificate = $downloadFile->makeCertificate($certificate->id, $request)['image'] ?? ''; $certificate->encode('jpg'); $type = 'png'; $certificate = 'data:image/' . $type . ';base64,' . base64_encode($certificate); return view(theme('pages.searchCertificate'), compact('certificate')); } else { return Redirect::back()->withErrors(['msg', 'Invalid Certificate Number']); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function generateUniqueCode() { do { $referal_code = random_int(100000, 999999); } while (CertificateRecord::where("certificate_id", "=", $referal_code)->first()); return $referal_code; } public function certificateCheck($certificate_number, Request $request) { try { $certificate_record = CertificateRecord::where('certificate_id', $certificate_number)->first(); $course = Course::findOrFail($certificate_record->course_id); if ($course->certificate_id != null) { $certificate = Certificate::findOrFail($course->certificate_id); } else { if ($course->type == 1) { $certificate = Certificate::where('for_course', 1)->first(); } else { $certificate = Certificate::where('for_quiz', 1)->first(); } } if (!$certificate) { Toastr::error(trans('certificate.Right Now You Cannot Download The Certificate')); return back(); } $title = $certificate_number . ".jpg"; $downloadFile = new CertificateController(); $request->certificate_id = $certificate_record->certificate_id; $request->course = $course; $request->completed_at = $certificate_record->created_at; $request->user = User::find($certificate_record->student_id); $certificate = $downloadFile->makeCertificate($certificate->id, $request)['image'] ?? ''; $certificate->encode('png'); $type = 'png'; $certificate = 'data:image/' . $type . ';base64,' . base64_encode($certificate); if ($certificate == null) { Toastr::error('Invalid Certificate Number !', 'Failed'); return redirect()->back(); } return view(theme('pages.searchCertificate'), compact('certificate')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function certificateDownload($certificate_number, Request $request) { try { $certificate_record = CertificateRecord::where('certificate_id', $certificate_number)->first(); $course = Course::findOrFail($certificate_record->course_id); if ($course->certificate_id != null) { $certificate = Certificate::findOrFail($course->certificate_id); } else { if ($course->type == 1) { $certificate = Certificate::where('for_course', 1)->first(); } else { $certificate = Certificate::where('for_quiz', 1)->first(); } } if (!$certificate) { Toastr::error(trans('certificate.Right Now You Cannot Download The Certificate')); return back(); } $title = $certificate_number . ".jpg"; $downloadFile = new CertificateController(); $request->certificate_id = $certificate_record->certificate_id; $request->course = $course; $request->user = User::find($certificate_record->student_id); $certificate = $downloadFile->makeCertificate($certificate->id, $request)['image'] ?? ''; $certificate->encode('jpg'); $headers = [ 'Content-Type' => 'image/jpeg', 'Content-Disposition' => 'attachment; filename=' . $title, ]; return response()->stream(function () use ($certificate) { echo $certificate; }, 200, $headers); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function privacy() { try { if (hasDynamicPage()) { $row = FrontPage::where('slug', '/privacy')->first(); $details = dynamicContentAppend($row->details); return view('aorapagebuilder::pages.show', compact('row', 'details')); } else { $privacy_policy = PrivacyPolicy::getData(); return view(theme('pages.privacy'), compact('privacy_policy')); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function fullScreenView(Request $request, $course_id, $lesson_id) { try { updateEnrolledCourseLastView($course_id); if (isModuleActive('OrgSubscription') && Auth::check()) { if (!orgSubscriptionCourseValidity($course_id)) { Toastr::warning(trans('org-subscription.Your Subscription Expire')); return redirect()->back(); } } if (isModuleActive('OrgSubscription') && Auth::check()) { if (!orgSubscriptionCourseSequence($course_id)) { Toastr::warning(trans('org-subscription.You Can Not Continue This . Pls Complete Previous Course')); return redirect()->back(); } } if (isModuleActive('BundleSubscription')) { if (isBundleExpire($course_id)) { Toastr::error('Your bundle validity expired', 'Access Denied'); return redirect()->back(); } } $result = []; $preResult = []; $alreadyJoin = 0; if (isset($request->quiz_result_id)) { $quizTest = QuizTest::findOrFail($request->quiz_result_id); if (Auth::check()) { $user = Auth::user(); $all = QuizTest::with('details')->where('quiz_id', $quizTest->quiz_id)->where('course_id', $course_id)->where('user_id', $user->id)->get(); } else { Toastr::error('You must login for continue', 'Failed'); return redirect()->back(); } if (count($all) != 0) { $alreadyJoin = 1; } foreach ($all as $key => $i) { $onlineQuiz = OnlineQuiz::find($i->quiz_id); $date = showDate($i->created_at); $totalQus = totalQuizQus($i->quiz_id); $totalAns = count($i->details); $totalCorrect = 0; $totalScore = totalQuizMarks($i->quiz_id); $score = 0; if ($totalAns != 0) { foreach ($i->details as $test) { if ($test->status == 1) { $score += $test->mark ?? 1; $totalCorrect++; } } } if ($request->quiz_result_id == $i->id) { $result['start_at'] = $i->start_at; $result['end_at'] = $i->end_at; $result['publish'] = $i->publish; $result['duration'] = $i->duration; $result['totalQus'] = $totalQus; $result['totalAns'] = $totalAns; $result['totalCorrect'] = $totalCorrect; $result['totalWrong'] = $totalAns - $totalCorrect; $result['score'] = $score; $result['totalScore'] = $totalScore; $result['passMark'] = $onlineQuiz->percentage ?? 0; $result['mark'] = $score > 0 ? round($score / $totalScore * 100) : 0;; $result['status'] = $result['mark'] >= $result['passMark'] ? "Passed" : "Failed"; $result['text_color'] = $result['mark'] >= $result['passMark'] ? "success_text" : "error_text"; $i->pass = $result['mark'] >= $result['passMark'] ? "1" : "0"; $i->save(); } else { $preResult[$key]['quiz_test_id'] = $i->id; $preResult[$key]['totalQus'] = $totalQus; $preResult[$key]['date'] = $date; $preResult[$key]['totalAns'] = $totalAns; $preResult[$key]['totalCorrect'] = $totalCorrect; $preResult[$key]['totalWrong'] = $totalAns - $totalCorrect; $preResult[$key]['score'] = $score; $preResult[$key]['totalScore'] = $totalScore; $preResult[$key]['passMark'] = $onlineQuiz->percentage ?? 0; $preResult[$key]['mark'] = $score > 0 ? round($score / $totalScore * 100) : 0;; $preResult[$key]['status'] = $preResult[$key]['mark'] >= $preResult[$key]['passMark'] ? "Passed" : "Failed"; $preResult[$key]['text_color'] = $preResult[$key]['mark'] >= $preResult[$key]['passMark'] ? "success_text" : "error_text"; $i->pass = $preResult[$key]['mark'] >= $preResult[$key]['passMark'] ? "1" : "0"; $i->save(); } $check = Lesson::where('course_id', $i->course_id)->where('quiz_id', $i->quiz_id)->first(); if ($check && $i->pass == 1) { $lesson = LessonComplete::where('course_id', $i->course_id)->where('lesson_id', $check->id)->where('user_id', Auth::id())->first(); if (!$lesson) { $lesson = new LessonComplete(); $lesson->user_id = Auth::id(); $lesson->course_id = $i->course_id; $lesson->lesson_id = $check->id; } $lesson->status = 1; $lesson->save(); } } } $course = Course::findOrFail($course_id); $lesson = Lesson::where('id', $lesson_id)->first(); if (!$lesson) { abort('404'); } //$lesson->is_lock; $isEnrolled = false; if ($lesson->is_lock == 1) { if (!Auth::check()) { Toastr::error('You are not enrolled for this course !', 'Failed'); return redirect()->back(); } else { if (!$course->isLoginUserEnrolled) { Toastr::error('You are not enrolled for this course !', 'Failed'); return redirect()->back(); } else { $isEnrolled = true; } } } else { $isEnrolled = true; } if ($course->type == 1) $certificate = Certificate::where('for_course', 1)->first(); else $certificate = Certificate::where('for_quiz', 1)->first(); //drop content start $today = Carbon::now()->toDateString(); $showDrip = Settings('show_drip') ?? 0; $all = Lesson::where('course_id', $course->id)->with('completed')->orderBy('position', 'asc')->get();; $lessons = []; if ($course->drip == 1) { if ($showDrip == 1) { foreach ($all as $key => $data) { $show = false; $unlock_date = $data->unlock_date; $unlock_days = $data->unlock_days; if (!empty($unlock_days) || !empty($unlock_date)) { if (!empty($unlock_date)) { if (strtotime($unlock_date) == strtotime($today)) { $show = true; } } if (!empty($unlock_days)) { if (Auth::check()) { $enrolled = DB::table('course_enrolleds')->where('user_id', Auth::user()->id)->where('course_id', $course->id)->where('status', 1)->first(); if (!empty($enrolled)) { $unlock = Carbon::parse($enrolled->created_at); $unlock->addDays($data->unlock_days); $unlock = $unlock->toDateString(); if (strtotime($unlock) <= strtotime($today)) { $show = true; } } } } if ($show) { $lessons[] = $data; } } else { $lessons[] = $data; } } } else { $lessons = $all; } } else { $lessons = $all; } $total = count($lessons); // drop content end if ($course->drip != 0) { $lessonShow = false; $unlock_lesson_date = $lesson->unlock_date; $unlock_lesson_days = $lesson->unlock_days; if (!empty($unlock_lesson_days) || !empty($unlock_lesson_date)) { if (!empty($unlock_lesson_date)) { if (strtotime($unlock_lesson_date) == strtotime($today)) { $lessonShow = true; } } if (!empty($unlock_lesson_days)) { if (!Auth::check()) { $lessonShow = false; } else { $enrolled = DB::table('course_enrolleds')->where('user_id', Auth::user()->id)->where('course_id', $course_id)->where('status', 1)->first(); if (!empty($enrolled)) { $unlock_lesson = Carbon::parse($enrolled->created_at); $unlock_lesson->addDays($lesson->unlock_days); $unlock_lesson = $unlock_lesson->toDateString(); if (strtotime($unlock_lesson) <= strtotime($today)) { $lessonShow = true; } } } } } else { $lessonShow = true; } if (Auth::check() && Auth::user()->role_id == 1) { $lessonShow = true; } if (!$lessonShow) { Toastr::error('Lesson currently unavailable!', 'Failed'); return redirect()->back(); } } $percentage = round($course->loginUserTotalPercentage); $course_reviews = DB::table('course_reveiws')->select('user_id')->where('course_id', $course->id)->get(); $reviewer_user_ids = []; foreach ($course_reviews as $key => $review) { $reviewer_user_ids[] = $review->user_id; } $chapters = Chapter::where('course_id', $course->id)->orderBy('position', 'asc')->get(); $quizSetup = QuizeSetup::getData(); if ($lesson->host == "VdoCipher") { $otp = $this->getOTPForVdoCipher($lesson->video_url); $lesson->otp = $otp['otp']; $lesson->playbackInfo = $otp['playbackInfo']; } $isAdmin = false; if (Auth::check()) { if (Auth::user()->role_id == 1) { $isAdmin = true; } } $lesson_ids = []; foreach ($chapters as $c) { foreach ($all as $item) { if ($c->id == $item->chapter_id) { $lesson_ids[] = $item->id; } } } if (!$isAdmin) { if ($course->complete_order == 1) { if (!Auth::check()) { Toastr::error('You must login for continue', 'Failed'); return redirect()->back(); } $index = array_search($lesson_id, $lesson_ids); $previous = $lesson_ids[$index - 1] ?? null; if ($previous) { $isComplete = DB::table('lesson_completes')->where('lesson_id', $previous)->where('user_id', Auth::user()->id)->select('status')->first(); if (!$isComplete || $isComplete->status != 1) { Toastr::error(trans('frontend.At First, You need to complete previous lesson'), trans('Failed')); return redirect()->back(); } } } } $quizPass = true; if (Auth::check()) { $hasQuiz = QuizTest::where('course_id', $course->id)->where('user_id', Auth::user()->id)->groupBy('quiz_id')->get(); $hasPassQuiz = QuizTest::where('course_id', $course->id)->where('user_id', Auth::user()->id)->where('pass', 1)->groupBy('quiz_id')->get(); if (count($hasQuiz) != count($hasPassQuiz)) { $quizPass = false; } } if (isModuleActive('Org')) { if (!empty($lesson->org_material_id)) { $default = $lesson->orgMaterial->default; $lesson->video_url = $default->link; $lesson->host = $default->type; } } return view(theme('pages.fullscreen_video'), compact('quizPass', 'alreadyJoin', 'lesson_ids', 'result', 'preResult', 'quizSetup', 'chapters', 'reviewer_user_ids', 'percentage', 'isEnrolled', 'total', 'certificate', 'course', 'lesson', 'lessons')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function getOTPForVdoCipher($video_id) { $data['otp'] = ''; $data['playbackInfo'] = ''; try { $url = "https://dev.vdocipher.com/api/videos/" . $video_id . "/otp"; $curl = curl_init(); $header = array( "Accept: application/json", "Authorization:Apisecret " . saasEnv('VDOCIPHER_API_SECRET'), "Content-Type: application/json" ); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => json_encode([ "ttl" => 300, ]), CURLOPT_HTTPHEADER => $header, )); $response = json_decode(curl_exec($curl)); $err = curl_error($curl); curl_close($curl); if (!$err) { $data['otp'] = $response->otp; $data['playbackInfo'] = $response->playbackInfo; } } catch (\Exception $e) { } return $data; } public function subscribe(Request $request) { if (demoCheck()) { return redirect()->back(); } $validate_rules = [ 'email' => 'required|email', ]; $request->validate($validate_rules, validationMessage($validate_rules)); try { if (!hasTable('newsletter_settings')) { $check = Subscription::where('email', '=', $request->email)->first(); if (empty($check)) { $subscribe = new Subscription(); $subscribe->email = $request->email; $subscribe->save(); Toastr::success(trans('common.Operation successful'), trans('common.Success')); } else { Toastr::error('Already subscribe!', 'Failed'); } } else { $newsletterSetting = NewsletterSetting::getData(); if ($newsletterSetting->home_service == "Local") { $check = Subscription::where('email', '=', $request->email)->first(); if (empty($check)) { $subscribe = new Subscription(); $subscribe->email = $request->email; $subscribe->type = 'Homepage'; $subscribe->save(); Toastr::success(trans('common.Operation successful'), trans('common.Success')); } else { Toastr::error('Already subscribe!', 'Failed'); } return Redirect::back(); } elseif ($newsletterSetting->home_service == "Mailchimp") { if (saasEnv('MailChimp_Status') == "true") { $list = $newsletterSetting->home_list_id; $MailChimp = new MailChimp(saasEnv('MailChimp_API')); $result = $MailChimp->post("lists/$list/members", [ 'email_address' => $request->email, 'status' => 'subscribed', ]); if ($MailChimp->success()) { Toastr::success(trans('common.Operation successful'), trans('common.Success')); return Redirect::back(); } else { Toastr::error(json_decode($MailChimp->getLastResponse()['body'], TRUE)['title'] ?? 'Something Went Wrong', trans('common.Failed')); return Redirect::back(); } } } elseif ($newsletterSetting->home_service == "GetResponse") { if (saasEnv('GET_RESPONSE_STATUS') == "true") { $list = $newsletterSetting->home_list_id; $getResponse = new \GetResponse(saasEnv('GET_RESPONSE_API')); $callback = $getResponse->addContact(array( 'email' => $request->email, 'campaign' => array('campaignId' => $list), )); if (empty($callback)) { Toastr::success(trans('common.Operation successful'), trans('common.Success')); return Redirect::back(); } else { Toastr::error($callback->message ?? 'Something Went Wrong', trans('common.Failed')); return Redirect::back(); } } } elseif ($newsletterSetting->home_service == "Acelle") { if (saasEnv('ACELLE_STATUS') == "true") { $list = $newsletterSetting->home_list_id; $email = $request->email; $make_action_url = '/subscribers?list_uid=' . $list . '&EMAIL=' . $email; $acelleController = new AcelleController(); $response = $acelleController->curlPostRequest($make_action_url); if ($response) { Toastr::success(trans('common.Operation successful'), trans('common.Success')); return Redirect::back(); } else { Toastr::error('Something Went Wrong', trans('common.Failed')); return Redirect::back(); } } } Toastr::error('Something went wrong.', trans('common.Failed')); } return Redirect::back(); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function myCart() { $checkout = request()->checkout; if ($checkout) { if (Auth::check()) { return \redirect(route('CheckOut')); } else { session(['redirectTo' => route('CheckOut')]); return \redirect(route('login')); } } try { if (Auth::check()) { return view(theme('pages.myCart')); } else { return view(theme('pages.myCart2')); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function addToCart($id) { try { $course = Course::find($id); if (!$course) { Toastr::error('Course not found', 'Failed'); return redirect()->back(); } if (isModuleActive('Org')) { $type = $course->required_type; if ($type == 1) { Toastr::error(trans('org.Unable to add cart'), trans('common.Failed')); return redirect()->back(); } } $user = Auth::user(); if (Auth::check() && ($user->role_id != 1)) { $exist = Cart::where('user_id', $user->id)->where('course_id', $id)->first(); $oldCart = Cart::where('user_id', $user->id)->when(isModuleActive('Appointment'), function ($query) { $query->whereNotNull('course_id'); })->first(); if (isset($exist)) { Toastr::error('Course already added in your cart', 'Failed'); return redirect()->back(); } elseif (Auth::check() && ($user->role_id == 1)) { Toastr::error('You logged in as admin so can not add cart !', 'Failed'); return redirect()->back(); } else { if (isset($oldCart)) { $cart = new Cart(); $cart->user_id = $user->id; $cart->instructor_id = $course->user_id; $cart->course_id = $id; $cart->tracking = $oldCart->tracking; if ($course->discount_price != null) { $cart->price = $course->discount_price; } else { $cart->price = $course->price; } $cart->save(); } else { $cart = new Cart(); $cart->user_id = $user->id; $cart->instructor_id = $course->user_id; $cart->course_id = $id; $cart->tracking = getTrx(); if ($course->discount_price != null) { $cart->price = $course->discount_price; } else { $cart->price = $course->price; } $cart->save(); } Toastr::success('Course Added to your cart', 'Success'); return redirect()->back(); } } //If user not logged in then cart added into session else { $price = 0; if ($course->discount_price > 0) { $price = $course->discount_price; } else { $price = $course->price; } $cart = session()->get('cart'); if (!$cart) { $cart = [ $id => [ "id" => $course->id, "course_id" => $course->id, "instructor_id" => $course->user_id, "instructor_name" => $course->user->name, "title" => $course->title, "image" => $course->image, "slug" => $course->slug, "type" => $course->type, "price" => $price, ] ]; session()->put('cart', $cart); Toastr::success('Course Added to your cart1', 'Success'); return redirect()->back(); } elseif (isset($cart[$id])) { Toastr::error('Course already added in your cart', 'Failed'); return redirect()->back(); } else { $cart[$id] = [ "id" => $course->id, "course_id" => $course->id, "instructor_id" => $course->user_id, "instructor_name" => $course->user->name, "title" => $course->title, "image" => $course->image, "slug" => $course->slug, "type" => $course->type, "price" => $price, ]; session()->put('cart', $cart); Toastr::success('Course Added to your cart', 'Success'); return redirect()->back(); } } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function buyNow($id) { try { if (!Auth::check()) { Toastr::error('You must login', 'Error'); return \redirect()->route('login'); } $course = Course::find($id); if (!$course) { Toastr::error('Course not found', 'Failed'); return redirect()->back(); } if ($course->isLoginUserEnrolled) { Toastr::error(trans('frontend.Course already enrolled'), 'Failed'); return redirect()->back(); } if (isModuleActive('Org')) { $type = $course->required_type; if ($type == 1) { Toastr::error(trans('org.Unable to add cart'), trans('common.Failed')); return redirect()->back(); } } $user = Auth::user(); if (Auth::check() && ($user->role_id != 1)) { $exist = Cart::where('user_id', $user->id)->where('course_id', $id)->first(); $oldCart = Cart::where('user_id', $user->id)->when(isModuleActive('Appointment'), function ($query) { $query->whereNotNull('course_id'); })->first(); if (isset($exist)) { Toastr::error('Course already added in your cart', 'Failed'); return redirect()->route('CheckOut'); } elseif (Auth::check() && ($user->role_id == 1)) { Toastr::error('You logged in as admin so can not add cart !', 'Failed'); return redirect()->back(); } else { if (isset($oldCart)) { $cart = new Cart(); $cart->user_id = $user->id; $cart->instructor_id = $course->user_id; $cart->course_id = $id; $cart->tracking = $oldCart->tracking; if ($course->discount_price != null) { $cart->price = $course->discount_price; } else { $cart->price = $course->price; } $cart->save(); } else { $cart = new Cart(); $cart->user_id = $user->id; $cart->instructor_id = $course->user_id; $cart->course_id = $id; $cart->tracking = getTrx(); if ($course->discount_price != null) { $cart->price = $course->discount_price; } else { $cart->price = $course->price; } $cart->save(); } Toastr::success('Course Added to your cart', 'Success'); return redirect()->route('CheckOut')->with('back', courseDetailsUrl(@$course->id, @$course->type, @$course->slug)); } } //If user not logged in then cart added into session else { $price = 0; if (!$course) { Toastr::error('Course not found', 'Failed'); return redirect()->back(); } if ($course->discount_price > 0) { $price = $course->discount_price; } else { $price = $course->price; } $cart = session()->get('cart'); if (!$cart) { $cart = [ $id => [ "id" => $course->id, "course_id" => $course->id, "instructor_id" => $course->user_id, "instructor_name" => $course->user->name, "title" => $course->title, "image" => $course->image, "slug" => $course->slug, "type" => $course->type, "price" => $price, ] ]; session()->put('cart', $cart); Toastr::success('Course Added to your cart', 'Success'); return redirect()->route('CheckOut'); } elseif (isset($cart[$id])) { Toastr::error('Course already added in your cart', 'Failed'); return redirect()->route('CheckOut'); } else { $cart[$id] = [ "id" => $course->id, "course_id" => $course->id, "instructor_id" => $course->user_id, "instructor_name" => $course->user->name, "title" => $course->title, "image" => $course->image, "slug" => $course->slug, "type" => $course->type, "price" => $price, ]; session()->put('cart', $cart); Toastr::success('Course Added to your cart', 'Success'); return redirect()->route('CheckOut'); } } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function removeItem($id) { try { $success = trans('lang.Cart has been Removed Successfully'); if (Auth::check()) { $item = Cart::find($id); if ($item) { $item->delete(); } Toastr::success('Course removed from your cart', 'Success'); return redirect()->back(); } else { $cart = session()->get('cart'); if (isset($cart[$id])) { if (count($cart) == 1) { unset($cart[$id]); session()->forget('cart'); } else { unset($cart[$id]); } session()->put('cart', $cart); Toastr::success('Course removed from your cart', 'Success'); return redirect()->back(); } } return redirect()->back(); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function removeItemAjax($id) { try { if (Auth::check()) { $item = Cart::find($id); if ($item) { $item->delete(); } return true; } else { $cart = session()->get('cart'); if (isset($cart[$id])) { if (count($cart) == 1) { unset($cart[$id]); session()->forget('cart'); } else { unset($cart[$id]); } session()->put('cart', $cart); return true; } } } catch (\Exception $e) { return false; } } public function categoryCourse(Request $request, $id, $name) { try { return view(theme('pages.search'), compact('request', 'id')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function subCategoryCourse(Request $request, $id, $name) { $quiz_id = OnlineQuiz::where('sub_category_id', $id)->get()->pluck('id')->toArray(); $course_id = Course::where('subcategory_id', $id)->get()->pluck('id')->toArray(); $class_id = VirtualClass::where('sub_category_id', $id)->get()->pluck('id')->toArray(); $query = Course::with('user', 'category', 'subCategory', 'enrolls', 'comments', 'reviews', 'lessons', 'quiz', 'class') ->where('status', 1) ->latest(); $query->where(function ($q) use ($quiz_id, $course_id, $class_id) { $q->whereIn('quiz_id', $quiz_id) ->orWhereIn('id', $course_id) ->orWhereIn('class_id', $class_id); }); $type = $request->type; if (empty($type)) { $type = ''; } else { $types = explode(',', $type); if (count($types) == 1) { foreach ($types as $t) { if ($t == 'free') { $query->where('price', 0); } elseif ($t == 'paid') { $query = $query->where('price', '>', 0); } } } } $language = $request->language; if (empty($language)) { $language = ''; } else { $row_languages = explode(',', $language); $languages = []; $LanguageList = Language::whereIn('code', $row_languages)->first(); foreach ($row_languages as $l) { $lang = $LanguageList->where('code', $l)->first(); if ($lang) { $languages[] = $lang->id; } } $query->whereIn('lang_id', $languages); } $level = $request->level; if (empty($level)) { $level = ''; } else { $levels = explode(',', $level); $query->whereIn('level', $levels); } $mode = $request->mode; if (empty($mode)) { $mode = ''; } else { $modes = explode(',', $mode); $query->whereIn('mode_of_delivery', $modes); } $order = $request->order; if (empty($order)) { $order = ''; } else { if ($order == "price") { $query->orderBy('price', 'asc'); } else { $query->latest(); } } $courses = $query->paginate(9); $total = $courses->total(); $levels = CourseLevel::select('id', 'title')->where('status', 1)->get(); return view(theme('pages.search'), compact('levels', 'order', 'level', 'order', 'mode', 'language', 'type', 'total', 'courses', 'request', 'id')); } public function fetch_course(Request $request) { if ($request->get('query')) { $query = $request->get('query'); $data = DB::table('courses') ->where('title', 'LIKE', "%{$query}%") ->get(); $output = '<ul>'; foreach ($data as $row) { $output .= ' <li> <a style="color:black" href="' . courseDetailsUrl(@$row->id, @$row->type, @$row->slug) . '">' . $row->title . '</a> </li> '; } $output .= '</ul>'; echo $output; } } public function submitAns(Request $request) { $setting = QuizeSetup::getData(); $qusAns = $request->get('qusAns'); $array = explode('|', $qusAns); $ansId = $array[1]; $qusId = $array[0]; $userId = Auth::id() ?? 1; $question_review = $setting->question_review; $show_result_each_submit = $setting->show_result_each_submit; if ($request->get('courseId')) { $courseId = $request->get('courseId'); if (!empty($qusAns)) { $totalQusSubmit = QuizTest::where('user_id', $userId)->count(); $test = QuizTest::where('user_id', $userId)->where('course_id', $courseId)->where('question_id', $qusId)->first(); if (empty($test)) { $test = new QuizTest(); $test->user_id = $userId; $test->course_id = $courseId; $test->quiz_id = $request->get('quizId'); $test->question_id = $qusId; $test->ans_id = $ansId; $test->status = $question_review == 1 ? 0 : 1; $test->count = $totalQusSubmit + 1; $test->date = date('m/d/Y'); $test->save(); } else { if ($question_review == 1) { $test->ans_id = $ansId; $test->save(); } else { return response()->json(['error' => 'Already Submitted'], 500); } } } if ($show_result_each_submit == 1) { $ans = QuestionBankMuOption::find($ansId); if ($ans->status == 1) { $result = true; } else { $result = false; } return response()->json(['result' => $result], 200); } else { return response()->json(['submit' => true], 200); } } else { return response()->json(['error' => 'Something Went Wrong'], 500); } } public function getResult($courseId, $quizId) { $userId = Auth::id() ?? 1; $alreadySubmitTest = QuizTest::where('user_id', $userId)->where('course_id', $courseId)->where('quiz_id', $quizId)->distinct()->get(); $quiz = OnlineQuiz::find($quizId); $totalQus = totalQuizQus($quiz->id); $totalAns = count($alreadySubmitTest); $totalCorrect = 0; $totalScore = totalQuizMarks($quizId); $score = 0; if ($totalAns != 0) { $hasResult = true; foreach ($alreadySubmitTest as $test) { $test->status = 1; $test->save(); $ans = QuestionBankMuOption::find($test->ans_id); if (!empty($ans)) { if ($ans->status == 1) { $score += $ans->question->marks ?? 1; $totalCorrect++; // $totalScore +=$ans-> } } } } else { $hasResult = false; } $output = ''; $output .= ' Total Question ' . $totalQus . '<br>'; $output .= ' Total Ans ' . $totalAns . '<br>'; $output .= ' Total Correct ' . $totalCorrect . '<br>'; $output .= ' Score ' . $score . ' out of ' . $totalScore . ' <br>'; return ['hasResult' => $hasResult, 'output' => $output];; } public function contact() { try { if (hasDynamicPage()) { $row = FrontPage::where('slug', '/contact-us')->first(); $details = dynamicContentAppend($row->details); return view('aorapagebuilder::pages.show', compact('row', 'details')); } else { $page_content = app('getHomeContent'); return view(theme('pages.contact'), compact('page_content')); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function contactMsgSubmit(Request $request) { if (saasEnv('NOCAPTCHA_FOR_CONTACT') == 'true') { $validate_rules = [ 'name' => 'required', 'email' => 'required|email', 'message' => 'required', 'subject' => 'required', 'g-recaptcha-response' => 'required|captcha' ]; } else { $validate_rules = [ 'name' => 'required', 'email' => 'required|email', 'message' => 'required', 'subject' => 'required', ]; } $request->validate($validate_rules, validationMessage($validate_rules)); if (appMode()) { Toastr::error('For demo version you can not send message', trans('common.Failed')); return redirect()->back(); } $name = $request->get('name'); $email = $request->get('email'); $message = $request->get('message'); $subject = $request->get('subject'); $admin = User::where('role_id', 1)->first(); $send = SendGeneralEmail::dispatch($admin, 'CONTACT_MESSAGE', [ 'name' => $name, 'email' => $email, 'message' => $message, 'subject' => $subject ]); if ($send) { Toastr::success('Successfully Sent Message', trans('common.Success')); return redirect()->back(); } else { Toastr::error('Something went wrong', trans('common.Failed')); return redirect()->back(); } } public function frontPage($slug) { $page = $row = FrontPage::where('slug', $slug)->first(); if (!$row) { abort(404); } try { if ($row->status != 1) { Toastr::error('Sorry. Page is not active', trans('common.Failed')); return redirect()->back(); } if (hasDynamicPage()) { $details = dynamicContentAppend($row->details); return view('aorapagebuilder::pages.show', compact('row', 'details')); } else { return view(theme('pages.page'), compact('page')); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function search(Request $request) { try { $id = 0; return view(theme('pages.search'), compact('request', 'id')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function enrollOrCart($id) { $course = Course::findOrFail($id); if (isModuleActive('Org')) { $type = $course->required_type; if ($type == 1) { $output['result'] = 'failed'; $output['message'] = trans('org.Unable to add cart'); return $output; } } $output = []; //add to cart $output['type'] = 'addToCart'; try { $user = Auth::user(); if (Auth::check() && ($user->role_id != 1)) { if (!$course->isLoginUserEnrolled) { $exist = Cart::where('user_id', $user->id) ->when(isModuleActive('Invoice'), function ($query) { $query->whereNull('type'); }) ->where('course_id', $id)->first(); $oldCart = Cart::where('user_id', $user->id) ->when(isModuleActive('Invoice'), function ($query) { $query->whereNull('type'); }) ->first(); if (isset($exist)) { $output['result'] = 'failed'; $output['message'] = 'Course already added in your cart'; } elseif (Auth::check() && ($user->role_id == 1)) { $output['result'] = 'failed'; $output['message'] = 'You logged in as admin so can not add cart'; } else { if (isset($oldCart)) { $cart = new Cart(); $cart->user_id = $user->id; $cart->instructor_id = $course->user_id; $cart->course_id = $id; $cart->tracking = $oldCart->tracking; if ($course->discount_price != null) { $cart->price = $course->discount_price; } else { $cart->price = $course->price; } $cart->save(); } else { $cart = new Cart(); $cart->user_id = $user->id; $cart->instructor_id = $course->user_id; $cart->course_id = $id; $cart->tracking = getTrx(); if ($course->discount_price != null) { $cart->price = $course->discount_price; } else { $cart->price = $course->price; } $cart->save(); } $output['result'] = 'success'; $output['total'] = cartItem(); $output['message'] = 'Course Added to your cart'; } } else { $output['result'] = 'failed'; $output['message'] = 'Already Enrolled '; } } //If user not logged in then cart added into session else { $course = Course::find($id); if (!$course) { $output['result'] = 'failed'; $output['message'] = 'Course not found'; } if ($course->discount_price > 0) { $price = $course->discount_price; } else { $price = $course->price; } $cart = session()->get('cart'); if (!$cart) { $cart = [ $id => [ "id" => $course->id, "course_id" => $course->id, "instructor_id" => $course->user_id, "instructor_name" => $course->user->name, "title" => $course->title, "image" => $course->image, "slug" => $course->slug, "type" => $course->type, "price" => $price, ] ]; session()->put('cart', $cart); $output['result'] = 'success'; $output['total'] = cartItem(); $output['message'] = 'Course Added to your cart'; } elseif (isset($cart[$id])) { $output['result'] = 'failed'; $output['message'] = 'Course already added in your cart'; } else { $cart[$id] = [ "id" => $course->id, "course_id" => $course->id, "instructor_id" => $course->user_id, "instructor_name" => $course->user->name, "title" => $course->title, "image" => $course->image, "slug" => $course->slug, "price" => $price, ]; session()->put('cart', $cart); $output['result'] = 'success'; $output['total'] = cartItem(); $output['message'] = 'Course Added to your cart'; } } } catch (\Exception $e) { $output['result'] = 'failed'; $output['message'] = 'Operation Failed !'; } return json_encode($output); } public function getItemList() { $carts = []; if (Auth::check()) { $items = Cart::where('user_id', Auth::id())->with('course', 'course', 'course.user')->when(isModuleActive('Invoice'), function ($query) { $query->whereNull('type'); })->get(); if (!empty($items)) { foreach ($items as $key => $cart) { $check = Course::find($cart['course_id']); if ($check) { $carts[$key]['id'] = $cart['id']; $carts[$key]['course_id'] = $cart['course_id']; $carts[$key]['instructor_id'] = $cart['instructor_id']; $carts[$key]['title'] = $cart->course->title; $carts[$key]['instructor_name'] = $cart->course->user->name; $carts[$key]['image'] = getCourseImage($cart->course->thumbnail); if ($cart->course->discount_price != null) { $carts[$key]['price'] = getPriceFormat($cart->course->discount_price); } else { $carts[$key]['price'] = getPriceFormat($cart->course->price); } } if (isModuleActive('BundleSubscription')) { $bundleCheck = BundleCoursePlan::find($cart['bundle_course_id']); if ($bundleCheck) { $carts[$key]['id'] = $cart['id']; $carts[$key]['course_id'] = $cart['course_id']; $carts[$key]['instructor_id'] = $cart['instructor_id']; $carts[$key]['title'] = $bundleCheck->title; $carts[$key]['instructor_name'] = $bundleCheck->user->name; $carts[$key]['image'] = getCourseImage($bundleCheck->icon); $carts[$key]['price'] = getPriceFormat($bundleCheck->price); } } } } } else { $items = session()->get('cart'); if (!empty($items)) { foreach ($items as $key => $cart) { $course = Course::find($cart['course_id']); if ($course) { $carts[$key]['id'] = $cart['id']; $carts[$key]['course_id'] = $course->id; $carts[$key]['instructor_id'] = $course->user_id; $carts[$key]['title'] = $course->title; $carts[$key]['type'] = $course->type; $carts[$key]['instructor_name'] = $course->user->name; $carts[$key]['image'] = getCourseImage($course->thumbnail); if ($course->discount_price != null) { $carts[$key]['price'] = getPriceFormat($course->discount_price); } else { $carts[$key]['price'] = getPriceFormat($course->price); } } } } } return response()->json($carts); } public function lessonComplete(Request $request) { try { $lesson = LessonComplete::where('course_id', $request->course_id)->where('lesson_id', $request->lesson_id)->where('user_id', Auth::id())->first(); $certificateBtn = 0; if (!$lesson) { $lesson = new LessonComplete(); $lesson->user_id = Auth::id(); $lesson->course_id = $request->course_id; $lesson->lesson_id = $request->lesson_id; } $lesson->status = $request->status; if ($request->status == 1) $success = trans('frontend.Lesson Marked as Complete'); else $success = trans('frontend.Lesson Marked as Incomplete'); $lesson->save(); $course = Course::find($request->course_id); if ($course) { $percentage = round($course->loginUserTotalPercentage); if ($percentage >= 100) { $this->getCertificateRecord($course->id); if (UserEmailNotificationSetup('Complete_Course', Auth::user())) { SendGeneralEmail::dispatch(Auth::user(), 'Complete_Course', [ 'time' => Carbon::now()->format('d-M-Y, g:i A'), 'course' => $course->title ]); } if (UserBrowserNotificationSetup('Complete_Course', Auth::user())) { send_browser_notification(Auth::user(), 'Complete_Course', [ 'time' => Carbon::now()->format('d-M-Y, g:i A'), 'course' => $course->title ], trans('common.View'), courseDetailsUrl(@$course->id, @$course->type, @$course->slug), ); } if (UserMobileNotificationSetup('Complete_Course', Auth::user()) && !empty(Auth::user()->device_token)) { send_mobile_notification(Auth::user(), 'Complete_Course', [ 'time' => Carbon::now()->format('d-M-Y, g:i A'), 'course' => $course->title ]); } } } if (count($lesson->course->lessons) == count($lesson->course->completeLessons->where('status', 1))) $certificateBtn = 1; $previousUrl = app('url')->previous(); return redirect()->to($previousUrl . '&' . http_build_query(['done' => 1])); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function lessonCompleteAjax(Request $request) { try { if (empty($request->user_id)) { $user = Auth::user(); } else { $user = User::find($request->user_id); } $enrolled = CourseEnrolled::where('course_id', $request->course_id)->where('user_id', $user->id)->first(); $lesson = LessonComplete::query() ->where('course_id', $request->course_id) ->where('lesson_id', $request->lesson_id) ->where('user_id', $user->id) ->first(); if (!$lesson) { $lesson = new LessonComplete(); } $lesson->user_id = $user->id; $lesson->course_id = $request->course_id; $lesson->lesson_id = $request->lesson_id; $lesson->enroll_id = @$enrolled->id; $lesson->status = 1; $lesson->save(); $course = Course::withCount('lessons')->find($request->course_id); if ($course) { $completeLessons = LessonComplete::where('user_id', $user->id)->where('course_id', $course->id)->where('status', 1)->count(); $totalLessons = $course->lessons; if ($completeLessons != 0) { $percentage = ceil($completeLessons / count($totalLessons) * 100); } else { $percentage = 0; } if ($percentage > 100) { $percentage = 100; } if ($percentage >= 100) { if ($enrolled->pathway_id != null) { StudentSkillController::studentCreateSkill(2, $course->id, $user, $enrolled); } else { StudentSkillController::studentCreateSkill(1, $course->id, $user, $enrolled); } $this->getCertificateRecord($course->id); if (UserEmailNotificationSetup('Complete_Course', $user)) { SendGeneralEmail::dispatch($user, 'Complete_Course', [ 'time' => Carbon::now()->format('d-M-Y, g:i A'), 'course' => $course->title ]); } if (UserBrowserNotificationSetup('Complete_Course', $user)) { send_browser_notification($user, 'Complete_Course', [ 'time' => Carbon::now()->format('d-M-Y, g:i A'), 'course' => $course->title ], trans('common.View'), courseDetailsUrl(@$course->id, @$course->type, @$course->slug), ); } if (UserMobileNotificationSetup('Complete_Course', $user) && !empty($user->device_token)) { send_mobile_notification($user, 'Complete_Course', [ 'time' => Carbon::now()->format('d-M-Y, g:i A'), 'course' => $course->title ]); } } } return true; } catch (\Exception $e) { return false; } } public function getCertificateRecord($course_id) { try { $course = Course::find($course_id); if (!empty($course->certificate_id)) { $certificate = Certificate::find($course->certificate_id); } else { if ($course->type == 1) { $certificate = Certificate::where('for_course', 1)->first(); } elseif ($course->type == 2) { $certificate = Certificate::where('for_quiz', 1)->first(); } elseif ($course->type == 3) { $certificate = Certificate::where('for_class', 1)->first(); } else { $certificate = null; } } if ($certificate) { $certificate_record = CertificateRecord::where('student_id', Auth::user()->id)->where('course_id', $course_id)->first(); if (!$certificate_record) { $certificate_record = new CertificateRecord(); $certificate_record->certificate_id = $this->generateUniqueCode(); $certificate_record->student_id = Auth::user()->id; $certificate_record->course_id = $course_id; $certificate_record->created_by = Auth::user()->id; if (isModuleActive('Org')) { if ($course->required_type == 1) { $enrolls = $course->enrolls->where('user_id', Auth::id()); if (isset($enrolls[0])) { $plan_id = $enrolls[0]->org_subscription_plan_id; $checkout = OrgSubscriptionCheckout::where('plan_id', $plan_id)->where('user_id', \auth()->id())->latest()->first(); $certificate_record->start_date = $checkout->start_date; $certificate_record->end_date = $checkout->end_date; } } else { $certificate_record->start_date = $course->created_at; $certificate_record->end_date = ''; } addOrgRecentActivity(\auth()->id(), $course->id, 'Complete'); } $certificate_record->save(); } if (isModuleActive('Org')) { request()->certificate_id = $certificate_record->certificate_id; request()->course = $course; request()->user = Auth::user(); $downloadFile = new CertificateController(); $certificate = $downloadFile->makeCertificate($certificate->id, request())['image'] ?? ''; $certificate->encode('jpg'); $certificate->save('public/certificate/' . $certificate_record->id . '.jpg'); } return $certificate_record; } else { return null; } } catch (\Exception $e) { return null; } } public function subscriptionCourses() { if (!Auth::check()) { return redirect('login'); } if (isModuleActive('Subscription')) { if (!isSubscribe()) { Toastr::error('You must subscribe first', 'Error'); return redirect()->back(); } } try { return view(theme('pages.subscription-courses')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function orgSubscriptionCourses(Request $request) { if (!Auth::check()) { return redirect('login'); } try { return view(theme('pages.org-subscription-courses'), compact('request')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function orgSubscriptionPlanList($planId, Request $request) { if (!Auth::check()) { return redirect('login'); } try { return view(theme('pages.org-subscription-plan-list'), compact('request', 'planId')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function subscription(Request $request) { if (isModuleActive('Subscription')) { return view(theme('pages.subscription')); } else { Toastr::error('Module not active', 'Error'); return redirect()->back(); } } public function subscriptionCourseList(Request $request, $plan_id) { try { if (isModuleActive('Subscription')) { return view(theme('pages.subscription_course_list'), compact('plan_id')); } else { Toastr::error('Module not active', 'Error'); return redirect()->back(); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function subscriptionCheckout(Request $request) { if (empty($request->plan)) { $s_plan = ''; } else { $s_plan = $request->plan; } if (empty($request->price)) { $price = ''; } else { $price = $request->price; } if (currentTheme() != 'tvt') { if (!empty($s_plan) && !empty($price)) { if (Auth::check()) { if (Auth::user()->role_id == 3) { $subscription = new CourseSubscriptionController(); $addCart = $subscription->addToCart(Auth::user()->id, $s_plan); if (!$addCart) { Toastr::error('Invalid Request', 'Error'); return \redirect()->route('courseSubscription'); } } else { Toastr::error('You must login as a student', 'Error'); return \redirect()->route('courseSubscription'); } } else { Toastr::error('You must login', 'Error'); return \redirect()->route('login'); } } else { Toastr::error('Invalid Request ', 'Error'); return \redirect()->route('login'); } } return view(theme('pages.subscriptionCheckout'), compact('request', 's_plan', 'price')); } public function continueCourse($slug) { try { $lesson_id = null; if (!Auth::check()) { Toastr::error('You must login for continue', 'Failed'); return redirect()->route('courseDetailsView', $slug); } $user = Auth::user(); $course = Course::where('slug', $slug)->first(); if (!$course) { Toastr::error(trans('common.Operation failed'), trans('common.Failed')); return redirect()->route('courseDetailsView', $slug); } $isEnrolled = $course->isLoginUserEnrolled; $enrollForCpd = false; $enrollForClass = false; if (isModuleActive('CPD')) { $enrollForCpd = $course->hasEnrollForCPd ? true : false; } if (isModuleActive('MyClass')) { $studentClassRepository = App::make(AddStudentToClassRepositoryInterface::class); $enrollForClass = $studentClassRepository->hasEnrollCourse($course->id, auth()->user()->id); } if ($isEnrolled || $enrollForCpd == true || $enrollForClass == true) { $lesson = LessonComplete::where('course_id', $course->id)->where('user_id', $user->id)->has('lesson')->orderBy('updated_at', 'desc')->first(); if (empty($lesson)) { $chapter = Chapter::where('course_id', $course->id)->whereHas('lessons')->orderBy('position', 'asc')->first(); if (empty($chapter)) { Toastr::error('No lesson found', 'Failed'); return redirect()->route('courseDetailsView', $slug); } $lesson = Lesson::where('course_id', $course->id)->where('chapter_id', $chapter->id)->orderBy('position', 'asc')->first(); if (!empty($lesson)) { $lesson_id = $lesson->id; } } else { $next_lesson = null; $chapters = Chapter::select('id')->where('course_id', $course->id)->whereHas('lessons')->orderBy('position', 'asc')->get(); foreach ($chapters as $c) { $lessons = Lesson::select('id')->where('course_id', $course->id)->where('chapter_id', $c->id)->orderBy('position', 'asc')->get()->pluck('id')->toArray(); if (in_array($lesson->lesson_id, $lessons)) { $position = array_search($lesson->lesson_id, $lessons); $position = $position + 1; if (isset($lessons[$position])) { $next_lesson = $lessons[$position]; } } } $lesson_id = !empty($next_lesson) ? $next_lesson : $lesson->lesson_id; } if (!empty($lesson_id)) { return \redirect()->to(url('fullscreen-view/' . $course->id . '/' . $lesson_id)); } else { Toastr::error('There is no lesson for this course!', 'Failed'); return redirect()->route('courseDetailsView', $slug); } } else { Toastr::error('You are not enrolled for this course !', 'Failed'); return redirect()->route('courseDetailsView', $slug); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function vimeoPlayer($video_id) { return view('vimeo_player', compact('video_id')); } public function scormPlayer($lesson_id, $user_id = null) { $lesson = Lesson::with('course')->find($lesson_id); $course = $lesson->course; $with = []; if (isModuleActive('Org')) { $with[] = 'branch'; } $user = User::with($with)->find($user_id); return view('scorm_player', compact('lesson', 'course', 'user')); } public function offline() { return 'offline'; } public function test() { return 'okk'; } public function calendarView() { try { $calendars = Calendar::with('course', 'event', 'course.user', 'course.user.role')->get(); // return $calendars; return view(theme('pages.calendarView'), compact('calendars')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function documentPlayer($lesson_id) { $lesson = Lesson::with('course')->find($lesson_id); return view('document_player', compact('lesson')); } }