|
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 : |
<?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');
}
}