����JFIF��x�x����'
Server IP : 66.29.137.217 / Your IP : 18.116.239.148 Web Server : LiteSpeed System : Linux premium294.web-hosting.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64 User : gltevjme ( 1095) PHP Version : 7.0.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/gltevjme/bofirmacademy.com/app/Http/Controllers/Admin/ |
Upload File : |
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Course; use App\Models\Course_lecture; use App\Models\Course_lecture_views; use App\Models\Course_lesson; use App\Models\CourseInstructor; use App\Models\CourseUploadRule; use App\Models\Enrollment; use App\Models\Order; use App\Models\Order_item; use App\Models\Setting; use App\Models\Student; use App\Models\User; use App\Tools\Repositories\Crud; use App\Traits\General; use App\Traits\ImageSaveTrait; use App\Traits\SendNotification; use Hamcrest\Core\AllOf; use Illuminate\Http\Request; use Auth; use Carbon\Carbon; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\DB; class CourseController extends Controller { use General, ImageSaveTrait, SendNotification; protected $model, $lectureModel, $lessonModel; public function __construct(Course $course, Course_lesson $course_lesson, Course_lecture $course_lecture) { $this->model = new Crud($course); $this->lectureModel = new Crud($course_lecture); $this->lessonModel = new Crud($course_lesson); } public function index() { if (!Auth::user()->can('all_course')) { abort('403'); } // end permission checking $data['title'] = 'All Courses'; $data['courses'] = $this->model->getOrderById('DESC', 25); return view('admin.course.index', $data); } public function view($uuid) { $data['title'] = "Course Details"; $data['course'] = $this->model->getRecordByUuid($uuid); $data['students'] = Enrollment::join('students', 'students.user_id', 'enrollments.user_id')->where('course_id', $data['course']->id)->select('enrollments.*', 'students.uuid', DB::raw('CONCAT(students.first_name," ", students.last_name) as name'))->with('user')->latest()->paginate(15); return view('admin.course.view', $data); } public function approved() { if (!Auth::user()->can('approved_course')) { abort('403'); } // end permission checking $data['title'] = 'Approved Courses'; $data['courses'] = Course::where('status', 1)->paginate(25); return view('admin.course.approved', $data); } public function reviewPending() { if (!Auth::user()->can('pending_course')) { abort('403'); } // end permission checking $data['title'] = 'Review Pending Courses'; $data['courses'] = Course::where('status', 2)->paginate(25); return view('admin.course.review-pending', $data); } public function reviewUpcoming() { if (!Auth::user()->can('pending_course')) { abort('403'); } // end permission checking $data['title'] = 'Upcoming Courses'; $data['courses'] = Course::where('status', STATUS_UPCOMING_REQUEST)->orWhere('status', STATUS_UPCOMING_APPROVED)->paginate(25); return view('admin.course.review-upcoming', $data); } public function hold() { if (!Auth::user()->can('hold_course')) { abort('403'); } // end permission checking $data['title'] = 'Hold Courses'; $data['courses'] = Course::where('status', 3)->paginate(25); return view('admin.course.hold', $data); } public function statusChange($uuid, $status) { $course = $this->model->getRecordByUuid($uuid); $course->status = $status; $course->save(); if ($status == 1) { setBadge($course->user_id); $text = __("Course has been approved"); $target_url = route('course-details', $course->slug); $this->send($text, 2, $target_url, $course->user_id); /** ====== send notification to student ===== */ $students = Student::where('user_id', '!=', $course->user_id)->select('user_id')->get(); foreach ($students as $student) { $text = __("New course has been published"); $target_url = route('course-details', $course->slug); $this->send($text, 3, $target_url, $student->user_id); } /** ====== send notification to student ===== */ } if ($status == 3) { $text = __("Course has been hold"); $target_url = route('instructor.course'); $this->send($text, 2, $target_url, $course->user_id); } $this->showToastrMessage('success', __('Status has been changed')); return redirect()->back(); } public function featureChange(Request $request) { $course = $this->model->getRecordById($request->id); $course->is_featured = $request->status; $course->save(); } public function delete($uuid) { $course = $this->model->getRecordByUuid($uuid); $order_item = Order_item::whereCourseId($course->id)->first(); if ($order_item) { $this->showToastrMessage('error', __('You can not deleted. Because already student purchased this course!')); return redirect()->back(); } //start:: Course lesson delete $lessons = Course_lesson::where('course_id', $course->id)->get(); if (count($lessons) > 0) { foreach ($lessons as $lesson) { //start:: lecture delete $lectures = Course_lecture::where('lesson_id', $lesson->id)->get(); if (count($lectures) > 0) { foreach ($lectures as $lecture) { $lecture = Course_lecture::find($lecture->id); if ($lecture) { $this->deleteFile($lecture->file_path); // delete file from server if ($lecture->type == 'vimeo') { if ($lecture->url_path) { $this->deleteVimeoVideoFile($lecture->url_path); } } Course_lecture_views::where('course_lecture_id', $lecture->id)->get()->map(function ($q) { $q->delete(); }); $this->lectureModel->delete($lecture->id); // delete record } } } //end:: lecture delete $this->lessonModel->delete($lesson->id); } } //end: lesson delete $this->deleteFile($course->image); $this->deleteVideoFile($course->video); $course->delete(); $this->showToastrMessage('success', __('Course has been deleted.')); return redirect()->back(); } public function courseUploadRuleIndex() { $data['title'] = 'Courses Upload Rules'; $data['courseRules'] = CourseUploadRule::all(); return view('admin.course.upload-rules', $data); } public function courseUploadRuleStore(Request $request) { $courseUploadRuleTitle = $request->courseUploadRuleTitle; if ($courseUploadRuleTitle) { $inputs = Arr::except($request->all(), ['_token']); $keys = []; foreach ($inputs as $k => $v) { $keys[$k] = $k; } foreach ($inputs as $key => $value) { $option = Setting::firstOrCreate(['option_key' => $key]); $option->option_value = $value; $option->save(); } } $now = now(); if ($request['course_upload_rules']) { if (count(@$request['course_upload_rules']) > 0) { foreach ($request['course_upload_rules'] as $course_upload_rules) { if (@$course_upload_rules['description']) { if (@$course_upload_rules['id']) { $rule = CourseUploadRule::find($course_upload_rules['id']); } else { $rule = new CourseUploadRule(); } $rule->description = @$course_upload_rules['description']; $rule->updated_at = $now; $rule->save(); } } } } CourseUploadRule::where('updated_at', '!=', $now)->get()->map(function ($q) { $q->delete(); }); $this->showToastrMessage('success', __('Updated Successful')); return redirect()->back(); } public function courseEnroll() { $data['title'] = 'Course Enroll'; $data['users'] = User::where('role','!=', 1)->get(); $data['courses'] = Course::all(); return view('admin.course.enroll-student', $data); } public function courseEnrollStore(Request $request) { $request->validate([ 'user_id' => 'required', 'course_id' => 'required', 'expired_after_days' => 'bail|nullable|integer|min:1', ]); if ($request->course_id) { $courseOrderExits = Enrollment::where(['user_id' => $request->user_id, 'course_id' => $request->course_id, 'status' => ACCESS_PERIOD_ACTIVE])->whereDate('end_date', '>=', now())->first(); if ($courseOrderExits) { $order = Order::find($courseOrderExits->order_id); if ($order) { if ($order->payment_status == 'due') { Order_item::whereOrderId($courseOrderExits->order_id)->get()->map(function ($q) { $q->delete(); }); $order->delete(); } else { $this->showToastrMessage('error', __("Student has already purchased the course!")); return redirect()->back(); } } } } $ownCourseCheck = CourseInstructor::where('course_id', $request->course_id)->where('instructor_id', $request->user_id)->delete(); if ($ownCourseCheck) { $this->showToastrMessage('error', __("He is a owner of the course. Can't purchase this course!")); return redirect()->back(); } $course = Course::find($request->course_id); $order = new Order(); $order->user_id = $request->user_id; $order->order_number = rand(100000, 999999); $order->payment_status = 'free'; $order->created_by_type = 2; $order->save(); $order_item = new Order_item(); $order_item->order_id = $order->id; $order_item->user_id = $request->user_id; $order_item->course_id = $request->course_id; $order_item->owner_user_id = $course->user_id ?? null; $order_item->unit_price = 0; $order_item->admin_commission = 0; $order_item->owner_balance = 0; $order_item->sell_commission = 0; $order_item->save(); set_instructor_ranking_level($course->user_id); /** ====== Send notification =========*/ $text = __("New student enrolled"); $target_url = route('instructor.all-student'); foreach ($order->items as $item) { if ($item->course) { $this->send($text, 2, $target_url, $item->course->user_id); } $expiredDays = !is_null($request->expired_after_days) && $request->expired_after_days > 0 ? $request->expired_after_days : NULL; setEnrollment($item, $expiredDays); } $text = __("Course has been sold"); $this->send($text, 1, null, null); $text = __("New course enrolled by Admin"); $target_url = route('student.my-learning'); $this->send($text, 3, $target_url, $request->user_id); /** ====== Send notification =========*/ $this->showToastrMessage('success', __('Student enroll in course')); return redirect()->back(); } }