shell bypass 403
<?php
namespace App\Http\Controllers\Frontend;
use App\Events\OneToOneConnection;
use App\Http\Controllers\Admin\AdminController;
use App\Jobs\SendGeneralEmail;
use App\Traits\ImageStore;
use App\User;
use App\UserLogin;
use Carbon\Carbon;
use App\TopicReport;
use App\StudentCustomField;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Session;
use Modules\Affiliate\Events\ReferralPayment;
use Modules\Certificate\Entities\CertificateRecord;
use Modules\CourseSetting\Entities\CourseEnrolled;
use Modules\Payment\Entities\Cart;
use App\Http\Controllers\Controller;
use Brian2694\Toastr\Facades\Toastr;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Modules\Coupons\Entities\Coupon;
use Illuminate\Support\Facades\Config;
use Modules\Payment\Entities\Checkout;
use Modules\CourseSetting\Entities\Course;
use Modules\Certificate\Entities\Certificate;
use Modules\Assignment\Entities\InfixAssignment;
use Modules\CourseSetting\Entities\CourseReveiw;
use Modules\CourseSetting\Entities\Notification;
use Modules\Assignment\Entities\InfixAssignAssignment;
use Modules\Quiz\Entities\QuizTest;
use Modules\Subscription\Entities\SubscriptionCart;
use Modules\Subscription\Entities\SubscriptionCheckout;
use Modules\Certificate\Http\Controllers\CertificateController;
use Modules\Survey\Entities\Survey;
use Modules\Survey\Http\Controllers\SurveyController;
use Modules\VirtualClass\Entities\ClassComplete;
class StudentController extends Controller
{
use ImageStore;
public function __construct()
{
$this->middleware('maintenanceMode');
}
public function myDashboard()
{
try {
if (Settings('frontend_active_theme') == 'tvt') {
return redirect('/');
}
return view(theme('pages.myDashboard'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myCourses(Request $request)
{
try {
return view(theme('pages.myCourses'), compact('request'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myAppointment(Request $request)
{
try {
return view(theme('pages.appointment_myAppointment'), compact('request'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myWishlists()
{
try {
return view(theme('pages.myWishlists'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myPurchases()
{
try {
return view(theme('pages.myPurchases'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myBundle()
{
try {
return view(theme('pages.myBundle'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function topicReport($id)
{
try {
$check = TopicReport::where('report_by', Auth::user()->id)->where('report_for', $id)->first();
if ($check == null) {
$report = new TopicReport();
$report->report_by = Auth::user()->id;
$report->report_for = $id;
$report->save();
Toastr::success(trans('student.Report is under review'), trans('common.Success'));
return redirect()->back();
} else {
Toastr::error(trans('student.You have already done report'), trans('common.Failed'));
return redirect()->back();
}
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myCertificate()
{
if (!Auth::check()) {
return redirect()->route('login');
}
try {
return view(theme('pages.myCertificate'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myAssignment()
{
if (!Auth::check()) {
return redirect()->route('login');
}
try {
return view(theme('pages.myAssignment'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myProfile()
{
try {
$custom_field = StudentCustomField::getData();
return view(theme('pages.myProfile'), compact('custom_field'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myAssignmentDetails($id)
{
if (!Auth::check()) {
return redirect()->route('login');
}
try {
$assign_assignment = InfixAssignAssignment::where('student_id', Auth::user()->id)->where('id', $id)->first();
if ($assign_assignment == null) {
Toastr::error(trans('common.Operation failed'), trans('common.Failed'));
return redirect()->back();
}
$assignment_info = InfixAssignment::where('id', $assign_assignment->assignment_id)->first();
return view(theme('pages.assignment_details'), compact('assignment_info', 'assign_assignment'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function ajaxUploadProfilePic(Request $request)
{
try {
$user = Auth::user();
$fileName = "";
if ($request->file('file') != "") {
$user->image = $this->saveImage($request->file('file'));
}
$user->save();
return $fileName;
} catch (\Throwable $th) {
return $th;
}
}
public function myProfileUpdate(Request $request)
{
if (demoCheck()) {
return redirect()->back();
}
$custom_field = StudentCustomField::getData();
if (Auth::user()->role_id == 1) {
$validate_rules = [
'name' => 'required',
'email' => 'required|email',
];
} else {
$validate_rules = [
'name' => 'required',
'email' => 'required|email|unique:users,email,' . Auth::id(),
'username' => 'required|unique:users,username,' . Auth::id(),
'phone' => 'nullable|string|regex:/^([0-9\s\-\+\(\)]*)$/|min:1|unique:users,phone,' . Auth::id(),
'country' => 'required',
'company_id' => $custom_field->required_company ? 'required' : 'nullable',
'student_type' => $custom_field->required_student_type ? 'required' : 'nullable',
'identification_number' => $custom_field->required_identification_number ? 'required' : 'nullable',
'job_title' => $custom_field->required_job_title ? 'required' : 'nullable',
'gender' => $custom_field->required_gender ? 'required' : 'nullable',
'dob' => $custom_field->required_dob ? 'required' : 'nullable',
];
}
$request->validate($validate_rules, validationMessage($validate_rules));
try {
if (demoCheck()) {
return redirect()->back();
}
$lang = explode('|', $request->language ?? '');
$user = Auth::user();
if (empty($request->phone)) {
$phone = null;
} else {
$phone = $request->phone;
}
$user->name = $request->name;
$user->email = $request->email;
$user->phone = $phone;
$user->address = $request->address;
$user->language_id = $lang[0] ?? 19;
$user->language_code = $lang[1] ?? 'en';
$user->language_name = $lang[2] ?? 'English';
$user->language_rtl = $lang[3] ?? '0';
$user->city = $request->city;
$user->country = $request->country;
$user->state = $request->state;
$user->zip = $request->zip;
$user->student_type = $request->student_type;
$user->identification_number = $request->identification_number;
$user->job_title = $request->job_title;
$user->dob = $request->dob;
$user->gender = $request->gender;
$user->currency_id = Settings('currency_id');
$user->facebook = $request->facebook;
$user->twitter = $request->twitter;
$user->linkedin = $request->linkedin;
$user->instagram = $request->instagram;
$user->youtube = $request->youtube;
$user->headline = $request->headline;
$user->about = clean($request->about);
if ($request->file('image') != "") {
$user->image = $this->saveImage($request->file('image'));
}
$user->save();
if ($request->company_name) {
$user->company->update([
'name' => $request->company_name,
'sector' => $request->company_sector,
'phone' => $request->company_phone,
'address' => $request->company_address,
]);
}
Toastr::success(trans('common.Operation successful'), trans('common.Success'));
return redirect()->back();
} catch (\Exception $e) {
Toastr::error(trans('common.Operation failed'), trans('common.Failed'));
return redirect()->back();
}
}
public function myAccount()
{
try {
return view(theme('pages.myAccount'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function MyUpdatePassword(Request $request)
{
$rules = [
'old_password' => 'required',
'new_password' => 'required|min:8',
'confirm_password' => 'required_with:new_password|same:new_password|min:8'
];
$this->validate($request, $rules, validationMessage($rules));
try {
if (demoCheck()) {
return redirect()->back();
}
$user = Auth::user();
if (!Hash::check($request->old_password, $user->password)) {
Toastr::error(trans('student.Password Do not match'), trans('common.Failed'));
return redirect()->back();
}
$user->update([
'password' => bcrypt($request->new_password)
]);
$login = UserLogin::where('user_id', Auth::id())->where('status', 1)->latest()->first();
if ($login) {
$login->status = 0;
$login->logout_at = Carbon::now(Settings('active_time_zone'));
$login->save();
}
SendGeneralEmail::dispatch($user, 'PASS_UPDATE', [
'time' => Carbon::now()->format('d-M-Y, g:i A')
]);
Toastr::success(trans('common.Operation successful'), trans('common.Success'));
// Auth::logout();
return back();
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function MyAccountDelete(Request $request)
{
$rules = [
'old_password' => 'required',
];
$this->validate($request, $rules, validationMessage($rules));
try {
if (demoCheck()) {
return redirect()->back();
}
$user = Auth::user();
if (!Hash::check($request->old_password, $user->password)) {
Toastr::error(__('student.Password does not match'), __('common.Failed'));
return redirect()->back();
}
$user->delete();
// SendGeneralEmail::dispatch($user, 'PASS_UPDATE', [
// 'time' => Carbon::now()->format('d-M-Y, g:i A')
// ]);
Toastr::success(trans('common.Operation successful'), trans('common.Success'));
return back();
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function MyEmailUpdate(Request $request)
{
$request->validate([
'email' => 'required|unique:users,email,' . Auth::id(),
'password' => 'required',
]);
try {
$user = Auth::user();
if (Config::get('app.app_sync')) {
Toastr::error('For demo version you can not change this !', trans('common.Failed'));
return redirect()->back();
} else {
// $success = trans('lang.Password').' '.trans('lang.Saved').' '.trans('lang.Successfully');
if (!Hash::check($request->password, $user->password)) {
Toastr::error(trans('student.Password Do not match'), trans('common.Failed'));
return redirect()->back();
}
$user->update([
'email' => $request->email
]);
Toastr::success(trans('common.Operation successful'), trans('common.Success'));
return redirect()->back();
}
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function deposit(Request $request)
{
try {
return view(theme('pages.deposit'), compact('request'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function loggedInDevices()
{
try {
return view(theme('pages.log_in_devices'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function logOutDevice(Request $request)
{
if (!Hash::check($request->password, auth()->user()->password)) {
Toastr::error(trans('frontend.Your Password Doesnt Match'));
return back();
}
if (demoCheck()) {
return redirect()->back();
}
$login = UserLogin::find($request->id);
if (!empty($login->api_token)) {
DB::table('oauth_access_tokens')->where('id', '=', $login->api_token)->delete();
}
Auth::logoutOtherDevices($request->password);
$login->status = 0;
$login->logout_at = Carbon::now();
$login->save();
Toastr::success(trans('frontend.Logged Out SuccessFully'));
return back();
}
public function Invoice($id)
{
try {
return view(theme('pages.myInvoices'), compact('id'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function subInvoice($id)
{
try {
$enroll = SubscriptionCheckout::where('id', $id)
->where('user_id', Auth::user()->id)
->with('plan', 'user')->first();
if ($enroll == null) {
Toastr::error(trans('student.Invalid Invoice'), trans('common.Failed'));
return redirect()->back();
}
return view(theme('pages.mySubInvoices'), compact('enroll'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function StudentApplyCoupon(Request $request)
{
$this->validate($request, [
'code' => 'required',
'total' => 'required'
]);
try {
$code = $request->code;
$cart_type = $request->type;
$final = 0;
$tax = 0;
$discount = 0;
$couponUsed = 0;
$resultMsg = trans('common.Something Went Wrong');
$coupon = Coupon::where('code', $code)->whereDate('start_date', '<=', Carbon::now())
->whereDate('end_date', '>=', Carbon::now())->where('status', 1)->first();
$couponApply = false;
$total = $request->total;
$max_dis = $coupon->max_discount;
$min_purchase = $coupon->min_purchase;
$type = $coupon->type;
$value = $coupon->value;
if ($type == 0) {
$discount = (($total * $value) / 100);
} else {
$discount = $value;
}
if ($discount >= $max_dis) {
$discount = $max_dis;
}
if ($cart_type == 'subscription') {
if (!isModuleActive('Subscription')) {
return false;
}
$tracking = SubscriptionCart::where('user_id', Auth::id())->first()->tracking;
$checkout = SubscriptionCheckout::where('tracking', $tracking)->first();
if (empty($checkout)) {
$checkout = new SubscriptionCheckout();
}
$checkTrackingId = SubscriptionCheckout::where('tracking', $tracking)->where('coupon_id', $coupon)->first();
} else if ($cart_type == 'membership') {
$this->membershipCoupon($coupon);
} else {
$tracking = Cart::where('user_id', Auth::id())->first()->tracking;
$checkout = Checkout::where('tracking', $tracking)->first();
if (empty($checkout)) {
$checkout = new Checkout();
}
$checkTrackingId = Checkout::where('tracking', $tracking)->where('coupon_id', $coupon)->first();
}
if ($coupon) {
if (isModuleActive('Subscription')) {
$couponUsed += $coupon->loginUserTotalSubscriptionUsed();
}
$couponUsed += $coupon->loginUserTotalUsed();
if ($coupon->limit != 0 && $coupon->limit <= $couponUsed) {
$resultMsg = trans('coupons.Already used this coupon');
} else {
if ($checkTrackingId) {
$resultMsg = trans('coupons.Already used this coupon');
} elseif ($total < $min_purchase) {
$resultMsg = trans('frontend.Coupon Minimum Purchase Does Not Match');
} elseif ($discount > $total) {
$resultMsg = trans('coupons.Invalid Request');
} elseif ($coupon->category == 2 && count($checkout->carts) != 1) {
$resultMsg = trans('coupons.This coupon apply for single course');
} elseif ($coupon->category == 2 && $checkout->carts[0]->course_id != $coupon->course_id) {
$resultMsg = trans('coupons.This coupon is not valid for this course');
} elseif ($coupon->category == 3 && $coupon->coupon_user_id != $checkout->user_id) {
$resultMsg = trans('coupons.This coupon not for you');
} elseif ($cart_type == 'subscription' && $coupon->category != 1) {
$resultMsg = trans('frontend.Invalid Coupon');
} else {
$couponApply = true;
$resultMsg = trans("frontend.Coupon Successfully Applied");
}
}
} else {
$checkout->discount = 0;
$checkout->coupon_id = null;
$checkout->purchase_price = $request->total;
$checkout->save();
$resultMsg = trans('frontend.Invalid Coupon');
}
if ($couponApply) {
$final = ($total - $discount);
$checkout->discount = $discount;
$checkout->purchase_price = $final;
if (hasTax()) {
$tax = taxAmount($request->total);
$total = applyTax($request->total);
$checkout->tax = $tax;
} else {
$total = $request->total;
}
$checkout->tracking = $tracking;
$checkout->purchase_price = getPriceAsNumber($final);
$checkout->user_id = Auth::id();
$checkout->coupon_id = $coupon->id;
$checkout->price = $total;
$checkout->status = 0;
$checkout->save();
return response()->json([
'success' => $resultMsg,
'total' => number_format(getPriceAsNumber($final), 2),
'tax' => number_format(getPriceAsNumber($tax), 2),
'discount' => number_format(getPriceAsNumber($discount), 2)
]);
} else {
return response()->json([
'error' => $resultMsg,
'total' => number_format(getPriceAsNumber($total), 2),
'tax' => number_format(getPriceAsNumber($tax), 2),
]);
}
} catch (\Exception $e) {
return response()->json(['error' => trans('common.Operation Failed')]);
}
}
private function membershipCoupon($coupon)
{
if (!isModuleActive('Membership')) {
return false;
}
$tracking = SubscriptionCart::where('user_id', Auth::id())->first()->tracking;
$checkout = SubscriptionCheckout::where('tracking', $tracking)->first();
if (empty($checkout)) {
$checkout = new SubscriptionCheckout();
}
$checkTrackingId = SubscriptionCheckout::where('tracking', $tracking)->where('coupon_id', $coupon)->first();
}
public function CheckOut(Request $request)
{
if (onlySubscription()) {
return redirect('/');
}
try {
$carts = Cart::where('user_id', Auth::id())->count();
$user = Auth::user();
$certificate_order = session()->get('order_type');
$invoice = session()->get('invoice');
if ($carts == 0 && (!$certificate_order || !$invoice)) {
return redirect('/');
}
if (isModuleActive('Org')) {
$carts = Cart::where('user_id', Auth::id())->with('course', 'course.user')->get();
$total = Cart::where('user_id', Auth::user()->id)->sum('price');
if ($total == 0) {
foreach ($carts as $cart) {
if (!$cart->course->isLoginUserEnrolled) {
$enroll = new CourseEnrolled();
$enroll->user_id = \auth()->id();
$enroll->tracking = 1;
$enroll->course_id = $cart->course->id;
$enroll->purchase_price = 0;
$enroll->coupon = null;
$enroll->discount_amount = 0;
$enroll->status = 1;
$enroll->save();
$course = $cart->course;
$course->total_enrolled = $course->total_enrolled + 1;
$course->save();
if (isModuleActive('Chat')) {
event(new OneToOneConnection($course->user, $user, $course));
}
if (isModuleActive('Survey')) {
$hasSurvey = Survey::where('course_id', $course->id)->get();
foreach ($hasSurvey as $survey) {
$surveyController = new SurveyController();
$surveyController->assignSurvey($survey, $user);
}
}
if (isModuleActive('Affiliate')) {
if ($user->isReferralUser) {
Event::dispatch(new ReferralPayment($user->id, $course->id, $course->price));
}
}
}
$cart->delete();
}
Toastr::success(trans('org.Enrolled Successfully'), trans('common.Success'));
if (Session::exists('back')) {
return redirect(Session::get('back'));
} else {
return redirect()->route('studentDashboard');
}
}
}
return view(theme('pages.checkout'), compact('request'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function removeProfilePic()
{
if (!Auth::check()) {
return redirect('login');
}
try {
$user = User::find(Auth::user()->id);
$user->image = '';
$user->save();
Toastr::success(trans('common.Operation successful'), trans('common.Success'));
return redirect()->back();
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function getCertificate($id, $slug, Request $request)
{
$course = Course::findOrFail($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) {
Toastr::error(trans('certificate.Right Now You Cannot Download The Certificate'));
return back();
}
if (!$course->isLoginUserEnrolled) {
Toastr::error(trans('certificate.You Are Not Already Enrolled This course. Please Enroll It First'));
return back();
}
if ($course->type == 1) {
$percentage = round($course->loginUserTotalPercentage);
if ($percentage < 100) {
Toastr::error(trans('certificate.Please Complete The Course First'));
return back();
}
} elseif ($course->type == 2) {
$quiz = QuizTest::where('course_id', $course->id)->where('pass', 1)->first();
if (!$quiz) {
Toastr::error(trans('certificate.You must pass the quiz'));
return back();
}
} else {
$certificateCanDownload = false;
$totalClass = $course->class->total_class;
$completeClass = ClassComplete::where('course_id', $course->id)->where('class_id', $course->class->id)->count();
if ($totalClass == $completeClass) {
$hasCertificate = $course->certificate_id;
if (!empty($hasCertificate)) {
$certificate = Certificate::find($hasCertificate);
if ($certificate) {
$certificateCanDownload = true;
}
} else {
$certificate = Certificate::where('for_class', 1)->first();
if ($certificate) {
$certificateCanDownload = true;
}
}
}
if (!$certificateCanDownload) {
Toastr::error(trans('certificate.You must attend live class'));
return back();
}
}
$title = "{$course->slug}-certificate-for-" . Auth::user()->name . ".jpg";
$downloadFile = new CertificateController();
$websiteController = new WebsiteController();
try {
$certificate_record = $websiteController->getCertificateRecord($course->id);
$request->certificate_id = $certificate_record->certificate_id;
$request->course = $course;
$request->user = Auth::user();
$certificate = $downloadFile->makeCertificate($certificate->id, $request)['image'] ?? '';
if (Settings('frontend_active_theme') == 'tvt' && empty(\request('download'))) {
$url = $certificate->encode('data-url');
return view(theme('pages.certificate-preview'), compact('url', 'course'));
}
$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 submitReview(Request $request)
{
Session::flash('selected_tab', 'review');
$this->validate($request, [
'review' => 'required',
'rating' => 'required'
]);
try {
$user_id = Auth::user()->id;
$review = CourseReveiw::where('user_id', $user_id)->where('course_id', $request->course_id)->first();
if (is_null($review)) {
$newReview = new CourseReveiw();
$newReview->user_id = $user_id;
$newReview->course_id = $request->course_id;
$newReview->comment = $request->review;
$newReview->star = $request->rating;
$newReview->save();
$course = Course::find($request->course_id);
$total = CourseReveiw::where('course_id', $course->id)->sum('star');
$count = CourseReveiw::where('course_id', $course->id)->where('status', 1)->count();
$average = $total / $count;
$course->reveiw = $average;
$course->total_rating = $average;
$course->save();
$course_user = User::findOrFail($course->user_id);
$user_courses = Course::where('user_id', $course_user->id)->get();
$user_total = 0;
$user_rating = 0;
foreach ($user_courses as $u_course) {
$total = CourseReveiw::where('course_id', $u_course->id)->sum('star');
$count = CourseReveiw::where('course_id', $u_course->id)->where('status', 1)->count();
if ($total != 0) {
$user_total = $user_total + 1;
$average = $total / $count;
$user_rating = $user_rating + $average;
}
}
if ($user_total != 0) {
$user_rating = $user_rating / $user_total;
}
$course_user->total_rating = $user_rating;
$course_user->save();
$total = CourseReveiw::where('course_id', $course->id)->sum('star');
$count = CourseReveiw::where('course_id', $course->id)->where('status', 1)->count();
$average = $total / $count;
$course->reveiw = $average;
$course->total_rating = $average;
$course->save();
if (UserEmailNotificationSetup('Course_Review', $course->user)) {
SendGeneralEmail::dispatch($course->user, 'Course_Review', [
'time' => Carbon::now()->format('d-M-Y, g:i A'),
'course' => $course->title,
'review' => $newReview->comment,
'star' => $newReview->star,
]);
}
if (UserBrowserNotificationSetup('Course_Review', $course->user)) {
send_browser_notification($course->user, 'Course_Review', [
'time' => Carbon::now()->format('d-M-Y, g:i A'),
'course' => $course->title,
'review' => $newReview->comment,
'star' => $newReview->star,
],
trans('common.View'),
courseDetailsUrl(@$course->id, @$course->type, @$course->slug),
);
}
if (UserMobileNotificationSetup('Course_Review', $course->user) && !empty($course->user->device_token)) {
send_mobile_notification($course->user, 'Course_Review', [
'time' => Carbon::now()->format('d-M-Y, g:i A'),
'course' => $course->title,
'review' => $newReview->comment,
'star' => $newReview->star,
]);
}
if (isModuleActive('Org')) {
addOrgRecentActivity(\auth()->id(), $course->id, 'Review');
}
Toastr::success(trans('student.Review Submit Successfully'), trans('common.Success'));
return redirect()->back();
} else {
Toastr::error(trans('student.Invalid Action'), trans('common.Failed'));
return redirect()->back();
}
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function myReports(Request $request)
{
try {
return view(theme('pages.myReports'), compact('request'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function enrollmentCancellation(Request $request)
{
try {
return view(theme('pages.enrollmentCancellation'), compact('request'));
} catch (\Exception $e) {
GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent());
}
}
public function enrollmentCancellationSubmit(Request $request)
{
$this->validate($request, [
'course' => 'required',
]);
$adminController = new AdminController();
$adminController->enrollDelete($request->course, $request);
Toastr::success(trans('common.Operation successful'), trans('common.Success'));
return redirect()->back();
}
}