<?php
namespace App\Http\Controllers;
use App\Events\CourseUpdate;
use App\Events\OneToOneConnection;
use App\Jobs\SendGeneralEmail;
use App\User;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\View;
use Modules\CourseSetting\Entities\Course;
use Modules\CourseSetting\Entities\Lesson;
use Modules\CourseSetting\Entities\SubCategory;
use Modules\Payment\Entities\Cart;
use Modules\Quiz\Entities\OnlineQuiz;
class AjaxController extends Controller
{
public function topbarEnableDisable(Request $request)
{
try {
$id = $request->id;
$table = $request->table;
$status = $request->status;
$result = DB::table($table)->where('id', $id)->update(['topbar' => $status]);
if ($result) {
return response()->json(['message' => 'success']);
} else {
return response()->json(['error' => 'Something went wrong!'], 400);
}
} catch (\Illuminate\Database\QueryException $e) {
$errorMessage = $e->getMessage();
Log::error($errorMessage);
return response()->json(['error' => $e->getMessage()], 400);
}
}
public function footerEnableDisable(Request $request)
{
Log::error($request->all());
try {
$id = $request->id;
$table = $request->table;
$status = $request->status;
$result = DB::table($table)->where('id', $id)->update(['footer' => $status]);
if ($result) {
return response()->json(['message' => 'success']);
} else {
return response()->json(['error' => 'Something went wrong!'], 400);
}
} catch (\Illuminate\Database\QueryException $e) {
$errorMessage = $e->getMessage();
Log::error($errorMessage);
return response()->json(['error' => $e->getMessage()], 400);
}
}
public function statusEnableDisable(Request $request)
{
if (appMode()) {
return response()->json(['warning' => trans('common.For the demo version, you cannot change this')], 200);
}
if (!Auth::check()) {
return response()->json(['error' => 'Permission Denied'], 403);
}
if (Auth::user()->role_id == 3) {
return response()->json(['error' => 'Permission Denied'], 403);
}
try {
$id = $request->id;
$table = $request->table;
$status = $request->status;
$result = DB::table($table)->where('id', $id)->update(['status' => $status]);
//========= End For Chat Module ========
if ($table == "courses") {
$course = Course::find($id);
$course->updated_at = now();
$course->save();
// ======= For Chat Module ========
if (isModuleActive('Chat')) {
if ($course && $course->status) {
$instructor = User::find($course->user_id);
event(new OneToOneConnection($instructor, null, $course));
}
}
if ($status == 1) {
if (UserMobileNotificationSetup('Course_Publish_Successfully', $course->user) && !empty($course->user->device_token)) {
send_mobile_notification($course->user, 'Course_Publish_Successfully', [
'time' => Carbon::now()->format('d-M-Y, g:i A'),
'course' => $course->title,
]);
}
if (UserEmailNotificationSetup('Course_Publish_Successfully', $course->user)) {
SendGeneralEmail::dispatch($course->user, 'Course_Publish_Successfully', [
'time' => Carbon::now()->format('d-M-Y, g:i A'),
'course' => $course->title,
]);
}
if (UserBrowserNotificationSetup('Course_Publish_Successfully', $course->user)) {
send_browser_notification($course->user, $type = 'Course_Publish_Successfully', $shortcodes = [
'time' => Carbon::now()->format('d-M-Y, g:i A'),
'course' => $course->title,
],
trans('common.View'),//actionText
courseDetailsUrl(@$course->id, @$course->type, @$course->slug),//actionUrl
);
}
} else {
if (UserMobileNotificationSetup('Course_Unpublished', $course->user) && !empty($course->user->device_token)) {
send_mobile_notification($course->user, 'Course_Unpublished', [
'time' => Carbon::now()->format('d-M-Y, g:i A'),
'course' => $course->title,
]);
}
if (UserEmailNotificationSetup('Course_Unpublished', $course->user)) {
SendGeneralEmail::dispatch($course->user, 'Course_Unpublished', [
'time' => Carbon::now()->format('d-M-Y, g:i A'),
'course' => $course->title,
]);
}
if (UserBrowserNotificationSetup('Course_Unpublished', $course->user)) {
send_browser_notification($course->user, $type = 'Course_Unpublished', $shortcodes = [
'time' => Carbon::now()->format('d-M-Y, g:i A'),
'course' => $course->title,
],
trans('common.View'),//actionText
courseDetailsUrl(@$course->id, @$course->type, @$course->slug),
);
}
}
} elseif ($table == "categories") {
Cache::forget('categories_' . app()->getLocale() . SaasDomain());
} elseif ($table == "country_wish_taxes") {
Cache::forget('countryWishTaxList_' . SaasDomain());
} elseif ($table == "sponsors") {
Cache::forget('SponsorList_' . app()->getLocale() . SaasDomain());
} elseif ($table == "course_levels") {
Cache::forget('CourseLevel_' . app()->getLocale() . SaasDomain());
} elseif ($table == "social_links") {
Cache::forget('social_links_' . SaasDomain());
}
if ($result) {
return response()->json(['success' => trans('common.Status has been changed')]);
} else {
return response()->json(['error' => trans('common.Something went wrong') . '!'], 400);
}
} catch (\Illuminate\Database\QueryException $e) {
$errorMessage = $e->getMessage();
Log::error($errorMessage);
return response()->json(['error' => $e->getMessage()], 400);
}
}
public function publishEnableDisable(Request $request)
{
// Log::error($request->all());
try {
$id = $request->id;
$table = $request->table;
$status = $request->status;
$result = DB::table($table)->where('id', $id)->update(['publish' => $status]);
if ($result) {
return response()->json(['message' => 'success']);
} else {
return response()->json(['error' => 'Something went wrong!'], 400);
}
} catch (\Illuminate\Database\QueryException $e) {
$errorMessage = $e->getMessage();
Log::error($errorMessage);
return response()->json(['error' => $e->getMessage()], 400);
}
}
public function ajaxGetSubCategoryList(Request $request)
{
$subcategories = SubCategory::where('category_id', $request->id)->get();
return response()->json([$subcategories]);
}
public function ajaxGetCourseList(Request $request)
{
try {
$category_id = $request->category_id;
$subcategory_id = $request->subcategory_id;
if (Auth::user()->role_id == 1) {
$query = Course::select('id', 'title');
if ($category_id) {
$query->where('category_id', $category_id);
}
if ($subcategory_id) {
$query->where('subcategory_id', $subcategory_id);
}
$subcategories = $query->get();
} else {
$subcategories = Course::select('id', 'title')->where('category_id', $category_id)->where('subcategory_id', $subcategory_id)->where('user_id', Auth::user()->id)->get();
}
$courses = [];
foreach ($subcategories as $key => $subcategory) {
$title = $subcategory->title;
$courses[$key] = $subcategory;
$courses[$key]->title2 = $title;
}
return response()->json([$courses]);
} catch (\Throwable $e) {
return response()->json(['error' => $e->getMessage()]);
}
}
public function ajaxGetQuizList(Request $request)
{
try {
$category_id = $request->category_id;
$subcategory_id = $request->subcategory_id;
$course_id = $request->course_id;
$quiz_list = OnlineQuiz::query();
if ($request->category_id != "") {
$quiz_list->where('category_id', $request->category_id);
}
if ($request->subcategory_id != "") {
$quiz_list->where('sub_category_id', $request->subcategory_id);
}
if ($request->course_id != "") {
$quiz_list->where('course_id', $request->course_id);
}
$quiz_list = $quiz_list->with('category', 'subCategory', 'course')->get();
return response()->json([$quiz_list]);
} catch (\Throwable $e) {
return response()->json(['error' => $e->getMessage()]);
}
}
public function updateActivity()
{
if (Auth::check()) {
$user = Auth::user();
$user->last_activity_at = now();
$user->save();
}
return true;
}
public function get_preview_modal($id)
{
if (Settings('frontend_active_theme') == 'edume') {
$lesson = Lesson::find($id);
$course = $lesson->course;
return View::make('frontend.edume.partials._course_preview_modal', [
'lesson' => $lesson,
'course' => $course
]);
} else {
return response()->json(['error' => 'Something went wrong!'], 500);
}
}
public function get_cart_price()
{
$price = 0;
if (Auth::check()) {
$carts = Cart::where('user_id', Auth::user()->id)->get();
foreach ($carts as $cart) {
$price += $cart->price;
}
} else {
$carts = session()->get('cart');
if (isset($carts)) {
foreach ($carts as $cart) {
$price = $price + $cart['price'];
}
}
}
return response()->json($price);
}
}