|
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/navinclasses.studylms.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\Log;
use App\Models\Product;
use App\Models\Orderproductgroup;
use App\Models\Notification;
use Illuminate\Support\Facades\Session;
class ContentController extends Controller
{
public function index(Request $request, $prod_id, $cat_id)
{
$admin_id = $request->session()->get('loggedIn')['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);
}
public function createVideo(Request $request, $prod_id, $cat_id)
{
$admin_id = $request->session()->get('loggedIn')['id'];
$data['mainMenu'] = 'productManagement';
$data['subMenu'] = 'productList';
$category = Category::find($cat_id);
$info = Product::find($prod_id);
$data['category'] = $category;
$data['info'] = $info;
$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')
->where('contents.type', 'video')
->orderBy('contents.sort_order', 'asc')
->paginate(10, ['re_s3buckets.*', 'contents.id as content_id', 'contents.sort_order']);
$data['videos'] = Re_s3bucket::where(['admin_id' => $admin_id])->get();
return view('admin.content.add-video-content', $data);
}
public function destroyVideo($id)
{
Content::where(['id' => $id])->delete();
// Log Data Entry
$logData = array(
'user_id' => Session::get('loggedIn')['id'],
'activity' => 'Content ID: ' . $id . ', deleted!',
'created_at' => date('Y-m-d H:i:s')
);
Log::create($logData);
return back()->with('success', 'Video content deleted successfully');
}
public function createEbook(Request $request, $prod_id, $cat_id)
{
$admin_id = $request->session()->get('loggedIn')['id'];
$data['mainMenu'] = 'productManagement';
$data['subMenu'] = 'productList';
$category = Category::find($cat_id);
$info = Product::find($prod_id);
$data['category'] = $category;
$data['info'] = $info;
$data['ebook_content'] = Content::where(['contents.admin_id' => $admin_id, 'contents.product_id' => $prod_id, 'contents.cat_id' => $cat_id])
->join('ebooks_mapping', 'contents.video_id', '=', 'ebooks_mapping.etag')
->where('contents.type', 'ebook')
->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'];
$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])
->join('pdf_tests', 'contents.video_id', '=', 'pdf_tests.etag')
->where('contents.type', 'pdf')
->paginate(10, ['pdf_tests.*', 'contents.id as content_id', 'contents.sort_order']);
$data['pdf_tests'] = Pdf_test::where(['admin_id' => $admin_id])->get();
return view('admin.content.add-practice-content', $data);
}
public function createMcq(Request $request, $prod_id, $cat_id)
{
$admin_id = $request->session()->get('loggedIn')['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')
->where('contents.type', 'practice_test')
->paginate(10, ['mcqs.*', 'contents.id as content_id', 'contents.sort_order']);
//dd($data['mcqs']);
$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'];
$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()) {
$content = Content::with('product')->find($res->id);
$MSG = "Product: " . $content->product->name . ", CatID $cat_id, Type $type, VideoEtag $video_tag content added in product";
if (!empty($content)) {
if ($request->type == 'video') {
$query = Content::select('contents.id', 'contents.type', 's3buckets.filename as content_name', 'products.name as p_name');
$query->join('s3buckets', 's3buckets.etag', 'contents.video_id');
$query->join('products', 'products.id', 'contents.product_id');
}
if ($request->type == 'pdf') {
$query = Content::select('contents.id', 'contents.type', 'pdf_tests.filename as content_name', 'products.name as p_name');
$query->join('pdf_tests', 'pdf_tests.etag', 'contents.video_id');
$query->join('products', 'products.id', 'contents.product_id');
}
if ($request->type == 'practice_test') {
$query = Content::select('contents.id', 'contents.type', 'mcqs.name as content_name', 'products.name as p_name');
$query->join('mcqs', 'mcqs.id', 'contents.video_id');
$query->join('products', 'products.id', 'contents.product_id');
}
if ($request->type == 'ebook') {
$query = Content::select('contents.id', 'contents.type', 'ebooks.filename as content_name', 'products.name as p_name');
$query->join('ebooks', 'ebooks.etag', 'contents.video_id');
$query->join('products', 'products.id', 'contents.product_id');
}
$contentData = $query->where('contents.id', $res->id)->first();
$MSG = "Content Name: " . $contentData->content_name . ", Type: " . $contentData->type . ", from Product: " . $contentData->p_name . " Added";
}
// Log Data Entry
$logData = array(
'user_id' => Session::get('loggedIn')['id'],
'activity' => $MSG,
'created_at' => date('Y-m-d H:i:s')
);
Log::create($logData);
$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;
}
// dd($video_id);
$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)
{
$content = Content::where('contents.id', $id)->first();
$MSG = "Content ID: " . $content->etag . ", " . $content->filename . " deleted from product";
if (!empty($content)) {
if ($content->type == 'video') {
$query = Content::select('contents.id', 'contents.type', 's3buckets.filename as content_name', 'products.name as p_name');
$query->join('s3buckets', 's3buckets.etag', 'contents.video_id');
$query->join('products', 'products.id', 'contents.product_id');
}
if ($content->type == 'pdf') {
$query = Content::select('contents.id', 'contents.type', 'pdf_tests.filename as content_name', 'products.name as p_name');
$query->join('pdf_tests', 'pdf_tests.etag', 'contents.video_id');
$query->join('products', 'products.id', 'contents.product_id');
}
if ($content->type == 'practice_test') {
$query = Content::select('contents.id', 'contents.type', 'mcqs.name as content_name', 'products.name as p_name');
$query->join('mcqs', 'mcqs.id', 'contents.video_id');
$query->join('products', 'products.id', 'contents.product_id');
}
if ($content->type == 'ebook') {
$query = Content::select('contents.id', 'contents.type', 'ebooks.filename as content_name', 'products.name as p_name');
$query->join('ebooks', 'ebooks.etag', 'contents.video_id');
$query->join('products', 'products.id', 'contents.product_id');
}
$contentData = $query->where('contents.id', $id)->first();
$MSG = "Content Name: " . $contentData->content_name . ", Type: " . $contentData->type . ", from Product: " . $contentData->p_name . " deleted";
}
Content::where(['id' => $id])->delete();
// Log Data Entry
$logData = array(
'user_id' => Session::get('loggedIn')['id'],
'activity' => $MSG,
'created_at' => date('Y-m-d H:i:s')
);
Log::create($logData);
return back()->with('success', 'Content deleted successfully');
}
// update order
public function order_update(Request $request)
{
$request->validate([
'id' => 'required',
'sort_order' => 'required'
]);
$data = array(
'sort_order' => $request->sort_order
);
Content::where('id', $request->id)->update($data);
return back()
->with('success', 'Content Order Has Been Added!.');
}
}