<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Subscribe; use App\Traits\ImageStore; use App\Traits\SendMail; use App\Traits\SendSMS; use Brian2694\Toastr\Facades\Toastr; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Session; use Modules\Coupons\Entities\Coupon; use Modules\CourseSetting\Entities\Category; use Modules\CourseSetting\Entities\Course; use Modules\OrgInstructorPolicy\Entities\OrgPolicyCategory; use Modules\SystemSetting\Entities\Blog; use Modules\SystemSetting\Entities\Company; use Modules\SystemSetting\Entities\FrontendSetting; use Modules\Setting\Model\GeneralSetting; use Modules\SystemSetting\Entities\Page; class CourseController extends Controller { use ImageStore, SendSMS, SendMail; // START CATEGORY SECTIONS public function ajaxGetSubCategoryList(Request $request) { $subcategories = Category::where('parent_id', '=', $request->id)->get(); // $subcategories = SubCategory::where('category_id', $request->id)->get(); return response()->json([$subcategories]); } public function ajaxGetCourseList(Request $request) { $category_id = $request->category_id; $subcategory_id = $request->subcategory_id; if (Auth::user()->role_id == 1) { $subcategories = Course::select('id', 'title')->where('category_id', $category_id)->where('subcategory_id', $subcategory_id)->get(); } else { $subcategories = Course::select('id', 'title')->where('category_id', $category_id)->where('subcategory_id', $subcategory_id)->where('user_id', Auth::user()->id)->get(); } return response()->json([$subcategories]); } public function category(Request $request) { try { $query = Category::query(); if (isModuleActive('OrgInstructorPolicy') && \auth()->user()->role_id != 1) { $assign = OrgPolicyCategory::where('policy_id', \auth()->user()->policy_id)->pluck('category_id')->toArray(); $query->whereIn('id', $assign); } $categories = $query->with('parent')->orderBy('position_order', 'asc')->get(); $max_id = Category::max('position_order') + 1; return view('backend.categories.index', compact('categories', 'max_id')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function category_delete($id) { if (demoCheck()) { return redirect()->back(); } try { Category::find($id)->delete(); 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 category_edit($id) { try { $edit = Category::find($id); $query = Category::orderBy('position_order', 'ASC'); if (isModuleActive('OrgInstructorPolicy')) { $user = Auth::user(); if ($user->role_id == 2) { $assign = OrgPolicyCategory::where('policy_id', \auth()->user()->policy_id)->pluck('category_id')->toArray(); $query->whereIn('id', $assign); } } $categories = $query->with('parent')->orderBy('position_order', 'asc')->get(); $max_id = Category::max('position_order') + 1; return view('backend.categories.index', compact('categories', 'edit', 'max_id')); } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function category_store(Request $request) { if (demoCheck()) { return redirect()->back(); } $code = auth()->user()->language_code; $rules = [ 'name.' . $code => 'required|max:255', 'photo' => 'mimes:jpeg,jpg,png,gif,svg|max:10000', 'thumbnail' => 'mimes:jpeg,jpg,png,gif,svg|max:10000' ]; $this->validate($request, $rules, validationMessage($rules)); try { if ($request->photo != "") { $url1 = $this->saveImage($request->photo); } else { $url1 = 'public/demo/category/image/1.png'; } if ($request->thumbnail != "") { $url2 = $this->saveImage($request->thumbnail); } else { $url2 = 'public/demo/category/thumb/1.png'; } DB::beginTransaction(); $check_position = Category::where('position_order', $request->position_order)->first(); if ($check_position != '') { $old_categories = Category::where('position_order', '>=', $request->position_order)->get(); foreach ($old_categories as $old_category) { $old_category->position_order = $old_category->position_order + 1; $old_category->save(); } } $store = new Category; foreach ($request->name as $key => $name) { $store->setTranslation('name', $key, $name); } foreach ($request->description as $key => $description) { $store->setTranslation('description', $key, $description); } $store->status = $request->status; if (!empty($request->parent)) { $store->parent_id = $request->parent; } else { $store->parent_id = null; } $store->position_order = $request->position_order; if (@$url1) { $store->image = $url1; } if (@$url2) { $store->thumbnail = $url2; } $store->save(); if (isModuleActive('OrgInstructorPolicy')) { if (!empty(auth()->user()->policy_id)) { OrgPolicyCategory::create([ 'category_id' => $store->id, 'policy_id' => \auth()->user()->policy_id, 'status' => 1 ]); } } DB::commit(); 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 category_status_update(Request $request) { if (demoCheck()) { return redirect()->back(); } try { $store = Category::find($request->id); $store->status = $request->status; $store->save(); return response()->json([ 'message' => 'success' ], 200); } catch (\Exception $e) { Log::info($e->getMessage()); return response()->json(['error' => $e->getMessage()]); } } public function category_update(Request $request) { if (demoCheck()) { return redirect()->back(); } $code = auth()->user()->language_code; $rules = [ 'name.' . $code => 'required|max:255', ]; $this->validate($request, $rules, validationMessage($rules)); $is_exist = Category::where('name', $request->name)->where('id', '!=', $request->id)->first(); if ($is_exist) { Toastr::error('This name has been already taken', 'Failed'); return redirect()->back(); } try { if ($request->photo != "") { $url1 = $this->saveImage($request->photo); } if ($request->thumbnail != "") { $url2 = $this->saveImage($request->thumbnail); } $check_position = Category::where('position_order', $request->position_order)->first(); if ($check_position != '') { $old_categories = Category::where('position_order', '>=', $request->position_order)->get(); foreach ($old_categories as $old_category) { $old_category->position_order = $old_category->position_order + 1; $old_category->save(); } } $store = Category::find($request->id); foreach ($request->name as $key => $name) { $store->setTranslation('name', $key, $name); } foreach ($request->description as $key => $description) { $store->setTranslation('description', $key, $description); } $store->status = $request->status; $store->url = $request->url; $store->title = $request->title; $store->show_home = $request->show_home; $store->position_order = $request->position_order; if (@$url1) { $store->image = $url1; } if (@$url2) { $store->thumbnail = $url2; } if (!empty($request->parent)) { $store->parent_id = $request->parent; } else { $store->parent_id = null; } $results = $store->save(); if ($results) { Toastr::success(trans('common.Operation successful'), trans('common.Success')); return redirect()->route('course.category'); } else { Toastr::error(trans('common.Operation failed'), trans('common.Failed')); return redirect()->back(); } } catch (\Exception $e) { GettingError($e->getMessage(), url()->current(), request()->ip(), request()->userAgent()); } } public function coupon(Request $request) { try { $coupons = Coupon::all(); return view('backend.courses.coupons', compact('coupons')); } catch (\Exception $e) { Toastr::error(trans('common.Operation failed'), trans('common.Failed')); return redirect()->back(); } } }