KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.41 (Ubuntu)
System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64
User : www-data ( 33)
PHP Version : 8.2.12
Disable Function : NONE
Directory :  /var/www/parassaas.edukrypt.in/app/Http/Controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //var/www/parassaas.edukrypt.in/app/Http/Controllers/ContentController.php
<?php

namespace App\Http\Controllers;

use App\Helpers\Frontend;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\S3bucket;
use App\Models\Re_s3bucket;
use App\Models\Content;
use App\Models\Mcq;
use App\Models\Pdf_test;
use App\Models\Ebook;
use App\Models\Category;
use App\Models\Product;
use App\Models\Orderproductgroup;
use App\Models\Notification;
use App\Models\Videotag;

class ContentController extends Controller
{
	public function index(Request $request, $prod_id, $cat_id)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}
		$data['mainMenu'] = 'productManagement';
		$data['subMenu'] = 'productList';

		$category = Category::find($cat_id);
		$info = Product::find($prod_id);
		$data['category'] = $category;
		$data['info'] = $info;

		if (isset($_GET['query']) && strlen($_GET['query']) > 1) {
			$search_text = $_GET['query'];
			$data['contents'] = Content::where('re_s3buckets.filename', 'LIKE', '%' . $search_text . '%')
				->where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id])
				->join('re_s3buckets', 'contents.video_id', '=', 're_s3buckets.etag')
				->paginate(10, ['re_s3buckets.*', 'contents.id as content_id', 'contents.sort_order']);
			return view('admin.content.content-list', $data);
		} else {
		}

		$data['contents'] = Content::where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id])
			->join('re_s3buckets', 'contents.video_id', '=', 're_s3buckets.etag')
			->paginate(10, ['re_s3buckets.*', 'contents.id as content_id', 'contents.sort_order']);

		$data['mcqs'] = Content::where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id])
			->join('mcqs', 'contents.video_id', '=', 'mcqs.id')
			->paginate(10, ['mcqs.*', 'contents.id as content_id', 'contents.sort_order']);

		$data['pdfs'] = Content::where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id])
			->join('pdf_tests', 'contents.video_id', '=', 'pdf_tests.etag')
			->paginate(10, ['pdf_tests.*', 'contents.id as content_id', 'contents.sort_order']);

		$data['ebooks'] = Content::where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id])
			->join('ebooks', 'contents.video_id', '=', 'ebooks.etag')
			->paginate(10, ['ebooks.*', 'contents.id as content_id', 'contents.sort_order']);

		return view('admin.content.content-list', $data);
	}

	// Add Video
	public function createVideo(Request $request, $prod_id, $cat_id)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}
		$data['mainMenu'] = 'productManagement';
		$data['subMenu'] = 'productList';

		$category = Category::find($cat_id);
		$info = Product::find($prod_id);
		$data['category'] = $category;
		$data['info'] = $info;

		// Tags
		$data['videoTags'] = Videotag::get();

		$data['contents'] = Content::where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id, 'contents.type' => 'video'])
			->leftjoin('re_s3buckets', 'contents.video_id', '=', 're_s3buckets.etag')
			->paginate(25, ['re_s3buckets.*', 'contents.id as content_id', 'contents.sort_order as st']);

		$data['videos'] = Re_s3bucket::where(['admin_id' => $admin_id])->get();
		return view('admin.content.add-video-content', $data);
	}

	// Edit Video
	public function editVideo(Request $request, $id, $prod_id, $cat_id)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}

		$data['mainMenu'] = 'productManagement';
		$data['subMenu'] = 'productList';
		$category = Category::find($cat_id);
		$info = Product::find($prod_id);
		$data['category'] = $category;
		$data['info'] = $info;
		// Tags

		$data['content'] = Content::leftjoin('re_s3buckets', 'contents.video_id', '=', 're_s3buckets.etag')->where(['contents.id' => $id, 'contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id])->first(['re_s3buckets.*', 'contents.id as content_id', 'contents.sort_order']);

		return view('admin.content.edit-video-content', $data);
	}

	public function saveEditVideo(Request $request, $id, $prod_id, $cat_id)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}
		$request->validate([
			'sort_order' => 'required',
		]);

		$sort_order =  $request->sort_order;
		$query = DB::table('contents')->where(['contents.id' => $id, 'contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id])->update(['sort_order' => $sort_order]);

		return back()->with('success', 'Video sort order updated!');
	}

	// Get Videos
	public function getVideos_by_all(Request $request)
	{
		$search = $request->search;
		if ($search == '') {
			$videos = Re_s3bucket::orderby('public_name', 'asc')->limit(10)->get();
		} else {
			$videos = Re_s3bucket::where('filename', 'like', '%' . $search . '%')->orderby('public_name', 'asc')->limit(10)->get();
		}

		$response = array();
		foreach ($videos as $video) {
			$response[] = array(
				"id" => $video->etag,
				"text" => $video->public_name
			);
		}
		return response()->json($response);
	}

	// Get Ebooks ===============
	public function getEbooks_by_all(Request $request)
	{

		$search = $request->search;
		if ($search == '') {
			$videos = DB::table('ebooks_mapping')->orderby('public_name', 'asc')->limit(10)->get();
		} else {
			$videos = DB::table('ebooks_mapping')->where('filename', 'like', '%' . $search . '%')->orderby('public_name', 'asc')->limit(10)->get();
		}

		$response = array();
		foreach ($videos as $video) {
			$response[] = array(
				"id" => $video->etag,
				"text" => $video->public_name
			);
		}
		//dd($response);
		return response()->json($response);
	}
	// End ====================

	public function getVideos_by_tags(Request $request)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}

		$sql = "select * from re_s3buckets where CONCAT(',', tags, ',') like '%,$request->id,%'";

		$results = DB::select($sql);
		$response = array();
		foreach ($results as $result) {
			$response[] = array(
				"id" => $result->etag,
				"text" => $result->public_name
			);
		}
		return response()->json($response);
		// return response()->json($videos);
	}

	public function getEbooks_by_tags(Request $request)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}

		$sql = "select * from ebooks_mapping where CONCAT(',', tags, ',') like '%,$request->id,%'";

		$results = DB::select($sql);
		$response = array();
		foreach ($results as $result) {
			$response[] = array(
				"id" => $result->etag,
				"text" => $result->public_name
			);
		}
		return response()->json($response);
		// return response()->json($videos);
	}

	public function destroyVideo($id)
	{
		$delete = Content::where(['id' => $id])->first();
		Content::where(['id' => $id])->delete();
		return back()->with('success', 'Video content deleted successfully');
	}

	// Add Ebook
	public function createEbook(Request $request, $prod_id, $cat_id)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}
		$data['mainMenu'] = 'productManagement';
		$data['subMenu'] = 'productList';

		$category = Category::find($cat_id);
		$info = Product::find($prod_id);
		$data['category'] = $category;
		$data['info'] = $info;

		// Tags
		$data['videoTags'] = Videotag::get();

		$data['ebook_content'] = Content::where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id, 'contents.type' => 'ebook'])
			->leftjoin('ebooks_mapping', 'contents.video_id', '=', 'ebooks_mapping.etag')
			->paginate(10, ['ebooks_mapping.*', 'contents.id as content_id', 'contents.sort_order']);

		$data['ebooks'] = DB::table('ebooks_mapping')->where(['admin_id' => $admin_id])->get();
		return view('admin.content.add-ebook-content', $data);
	}

	public function createPractice(Request $request, $prod_id, $cat_id)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}
		$data['mainMenu'] = 'productManagement';
		$data['subMenu'] = 'productList';

		$category = Category::find($cat_id);
		$info = Product::find($prod_id);
		$data['category'] = $category;
		$data['info'] = $info;

		$data['pdfs'] = Content::where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id, 'contents.type' => 'pdf'])
			->join('pdf_tests', 'contents.video_id', '=', 'pdf_tests.etag')
			->paginate(10, ['pdf_tests.*', 'contents.id as content_id', 'contents.sort_order']);

		$data['pdf_tests'] = Pdf_test::where(['admin_id' => $admin_id])->get();

		//dd($data['pdfs']);
		return view('admin.content.add-practice-content', $data);
	}

	public function createMcq(Request $request, $prod_id, $cat_id)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}
		$data['mainMenu'] = 'productManagement';
		$data['subMenu'] = 'productList';

		$category = Category::find($cat_id);
		$info = Product::find($prod_id);
		$data['category'] = $category;
		$data['info'] = $info;

		$data['mcqs'] = Content::where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id])
			->join('mcqs', 'contents.video_id', '=', 'mcqs.id')
			->paginate(10, ['mcqs.*', 'contents.id as content_id', 'contents.sort_order']);

		$data['videos'] = Re_s3bucket::where(['admin_id' => $admin_id])->get();
		$data['mcq'] = Mcq::where(['admin_id' => $admin_id])->get();
		$data['pdf_tests'] = Pdf_test::where(['admin_id' => $admin_id])->get();
		$data['ebooks'] = Ebook::where(['admin_id' => $admin_id])->get();
		return view('admin.content.add-mcq-content', $data);
	}

	public function create(Request $request)
	{
		$admin_id = $request->session()->get('loggedIn')['id'];
		$data['mainMenu'] = 'productManagement';
		$data['subMenu'] = 'productList';
		$data['videos'] = Re_s3bucket::where(['admin_id' => $admin_id])->get();
		$data['mcqs'] = Mcq::where(['admin_id' => $admin_id])->get();
		$data['pdf_tests'] = Pdf_test::where(['admin_id' => $admin_id])->get();
		$data['ebooks'] = Ebook::where(['admin_id' => $admin_id])->get();
		return view('admin.content.add-content', $data);
	}

	public function store(Request $request, $prod_id, $cat_id)
	{

		$admin_id = $request->session()->get('loggedIn')['id'];
		$parent_id = $request->session()->get('loggedIn')['parent_id'];
		if ($parent_id > 0) {
			$admin_id = $parent_id;
		}
		$request->validate([
			'video_tag' => 'required',
		]);

		$video_tags =  $request->video_tag;
		$type =  $request->type;

		if (!empty($video_tags)) {
			foreach ($video_tags as $video_tag) {
				$_sortOrder = Content::get()->last();
				if (empty($_sortOrder)) {
					$sort_order = 1;
				} else {
					$sort_order =  $_sortOrder->sort_order + 1;
				}

				$data = array(
					'product_id' => $prod_id,
					'cat_id' => $cat_id,
					'admin_id' => $admin_id,
					'type' => $type,
					'video_id' => $video_tag,
					'sort_order' => $sort_order,

				);
				$res = Content::create($data);
				if ($res->save()) {
					$this->sendPushNoti($prod_id, $cat_id, $video_tag, $type);
				}
			}
		}

		return back()
			->with('success', 'Content Has Been Added!.');
	}

	public function sendPushNoti($prod_id, $cat_id, $video_id, $type)
	{
		$findUsers = Orderproductgroup::select('users.fcm_token', 'products.name')
			->join('products', 'products.id', '=', 'orderproductgroups.product_id')
			->join('users', 'users.user_unique_id', '=', 'orderproductgroups.user_unique_id')
			->groupBy('orderproductgroups.user_unique_id')
			->where('users.fcm_token', '<>', '', 'and')
			->where(['orderproductgroups.product_id' => $prod_id])->get();



		$findCategoryName = Category::where(['id' => $cat_id])->first();

		if (count($findUsers) > 0) {
			$length = 1000;
			$total = count($findUsers);
			$pages = ceil($total / $length);

			for ($i = 1; $i <= $pages; $i++) {
				$a_token = array();
				$offset = $i == 1 ? 0 : (($i - 1) * $length);
				$find_limited_Users = Orderproductgroup::select('users.fcm_token', 'products.name')
					->join('products', 'products.id', '=', 'orderproductgroups.product_id')
					->join('users', 'users.user_unique_id', '=', 'orderproductgroups.user_unique_id')
					->groupBy('orderproductgroups.user_unique_id')
					->where('users.fcm_token', '<>', '', 'and')
					->where(['orderproductgroups.product_id' => $prod_id])
					->skip($offset)->take($length)->get();

				foreach ($find_limited_Users as $find_limited_User) {
					$a_token[] = $find_limited_User->fcm_token;
				}


				$contentName = "";
				$_type = ucfirst(str_replace("_", " ", $type));


				if ($type == "video") {
					$contentData = DB::table('re_s3buckets')->where(['etag' => $video_id])->first();
					$contentName = $contentData->public_name;
					$_type = "Video";
				} else if ($type == "practice_test") {
					$contentData = DB::table('mcqs')->where(['id' => $video_id])->first();
					$contentName = $contentData->name;
					$_type = "Pratice Test";
				} else if ($type == "ebook") {
					$contentData = DB::table('ebooks_mapping')->where(['etag' => $video_id])->first();
					$contentName = $contentData->public_name;
					$_type = "Ebook";
				} else if ($type == "pdf") {
					$contentData = DB::table('pdf_tests')->where(['etag' => $video_id])->first();
					$contentName = $contentData->filename;
					$_type = "Test";
				} else {
					$contentName = $type;
				}

				$productName = $findUsers[0]->name;
				$message = $contentName . " $_type added in chapter " . $findCategoryName->name;
				Frontend::PushNotification($a_token, $productName, $message);
			}

			$data = array(
				'title' => $productName,
				'notification' => $message,
				'public'    => 0,
				'product_id'    => $prod_id,
				'created_at' => date('Y-m-d H:i:s')
			);
			Notification::create($data);
		}
	}

	public function destroy($id)
	{
		$delete = Content::where(['id' => $id])->first();
		Content::where(['id' => $id])->delete();
		return back()->with('success', 'Content deleted successfully');
	}
}

Anon7 - 2021