|
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\Models\Product;
use App\Models\Product;
use App\Models\Demo_product;
use App\Models\Billing;
use App\Models\Orderproductgroup;
use App\Models\Demo_category;
use App\Models\Category;
use App\Models\Content;
use App\Models\Demo_content;
use App\Models\S3bucket;
use App\Models\Re_s3bucket;
use App\Models\Schedule_live_product;
use App\Models\Video_history;
use App\Models\User;
use App\Models\Pdf_test;
use App\Models\Ebook;
use App\Models\Admin_user;
use App\Models\Mcq_option;
use Illuminate\Http\Request;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\Validator;
use AWS\S3\S3Client;
use Aws\S3\S3Client as S3S3Client;
use Aws\CognitoIdentity\CognitoIdentityClient;
use Aws\Exception\AwsException;
use Aws\S3\Exception\S3Exception;
use Aws\S3\PostObjectV4;
use App\Helpers\Frontend;
use Illuminate\Support\Facades\DB;
class ApiDemoProductController extends Controller
{
protected $user;
// public function __construct()
// {
// $this->user = JWTAuth::parseToken()->authenticate();
// }
public function demoProductList(Request $request)
{
$data = $request->only('user_unique_id', 'main_category_id');
$validator = Validator::make($data, [
'user_unique_id' => 'required|string',
'main_category_id' => 'required',
]);
$admin_id = 2;
if ($validator->fails()) {
// $msg = json_decode($validator->messages());
return response()->json([
'status' => 0,
'success' => false,
'message' => "All input fields are required",
'data' => '{}'
], 200);
}
$user = User::where(['user_unique_id' => $request->user_unique_id, 'status' => '1'])->first();
if (empty($user)) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'User Not Found!',
'data' => '{}'
], Response::HTTP_OK);
}
$billings = Product::where(['status' => '1', 'cat_id' => $request->main_category_id])
->orderBy('sort_order', 'asc')
->get();
$purchasedProduct = array();
if (!empty($billings)) {
foreach ($billings as $billing) {
$getTeacher = Frontend::getTeacher($billing->teacher_id);
$_purchasedProduct = array(
'product_id' => $billing->id,
'name' => $billing->name,
'teacher_name' => (!empty($getTeacher->username)) ? $getTeacher->username : "",
'type' => $billing->type,
'image' => asset('public/uploads/products/' . $billing->image),
);
array_push($purchasedProduct, $_purchasedProduct);
}
}
if (!empty($purchasedProduct)) {
return response()->json([
'status' => 1,
'success' => true,
'message' => 'Product Fetch successfully',
'data' => $purchasedProduct
], Response::HTTP_OK);
} else {
return response()->json([
'status' => 0,
'success' => true,
'message' => 'Data Not Found',
'data' => $purchasedProduct
], Response::HTTP_OK);
}
}
public function demoVideoDownload(Request $request)
{
$data = $request->only('user_unique_id', 'product_id', 'video_id');
$validator = Validator::make($data, [
'user_unique_id' => 'required',
// 'admin_id' => 'required',
'product_id' => 'required',
'video_id' => 'required'
]);
if (!$request->user_unique_id || !$request->product_id || !$request->video_id) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Please insert All Required Field',
'data' => '{}'
], 200);
}
$admin_id = 2;
$bucket = S3bucket::where(['etag' => $request->video_id])->first();
// dd($bucket);
if (!empty($bucket->path)) {
$path = $bucket->path;
$getLink = $this->getObjectlink($path);
return response()->json([
'status' => 1,
'success' => true,
'message' => 'Link Created',
'data' => $getLink
], Response::HTTP_OK);
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Video Not Found',
'data' => '{}'
], Response::HTTP_OK);
}
}
public function getObjectlink($path)
{
$accessKey = env('AWS_S3_ACCESS_KEY');
$secretKey = env('AWS_S3_SECRET_KEY');
$region = env('AWS_REGION');
$host = env('AWS_HOST');
$bucket = env('AWS_BUCKET');
$s3 = new S3S3Client([
'version' => 'latest',
'region' => $region,
'endpoint' => $host,
'credentials' => [
'key' => $accessKey,
'secret' => $secretKey
]
]);
// dd($s3);
$s3->putBucketCors([
'Bucket' => $bucket, // REQUIRED
'CORSConfiguration' => [ // REQUIRED
'CORSRules' => [ // REQUIRED
[
'AllowedMethods' => ['POST', 'GET', 'HEAD', 'DELETE', 'PUT'], // REQUIRED
'AllowedHeaders' => ['*'],
'AllowedOrigins' => ['*'], // REQUIRED
'ExposeHeaders' => ['ETag'],
'MaxAgeSeconds' => 0
],
],
]
]);
try {
//Creating a presigned URL
$cmd = $s3->getCommand('GetObject', [
'Bucket' => $bucket,
'Key' => $path
]);
$request = $s3->createPresignedRequest($cmd, '+55 minutes');
// Get the actual presigned-url
$presignedUrl = (string)$request->getUri();
$url = array(
'url' => $presignedUrl
);
return $url;
// echo json_encode(['code' => 200, 'status' => true, 'url' => $presignedUrl]);
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
}
public function democategorycontent(Request $request)
{
$data = $request->only('product_id', 'user_unique_id');
$validator = Validator::make($data, [
'product_id' => 'required',
'user_unique_id' => 'required'
]);
if ($validator->fails()) {
// $msg = json_decode($validator->messages());
return response()->json([
'status' => 0,
'success' => false,
'message' => "All input fields are required",
'data' => '{}'
], 200);
}
$admin_id = 2;
// $datacontent = [];
$user = User::where(['user_unique_id' => $request->user_unique_id, 'status' => '1'])->first();
if (empty($user)) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'User Not Found!',
'data' => '{}'
], Response::HTTP_OK);
}
// dd($billings);
$categories = Category::where(['product_id' => $request->product_id, 'admin_id' => $admin_id])
->orderby('sort_order', 'ASC')->get();
if (!empty($categories)) {
return response()->json([
'status' => 1,
'success' => true,
'message' => 'data Found',
'data' => $categories
], Response::HTTP_OK);
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'data Not Found',
'data' => '{}'
], Response::HTTP_OK);
}
}
public function demoVideoContent(Request $request)
{
$data = $request->only('product_id', 'user_unique_id', 'cat_id');
$validator = Validator::make($data, [
'product_id' => 'required',
'user_unique_id' => 'required',
'cat_id' => 'required'
]);
if (!$request->user_unique_id || !$request->product_id || !$request->cat_id) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Please insert All Required Field',
'data' => '{}'
], 200);
}
$admin_id = 2;
$user = User::where(['user_unique_id' => $request->user_unique_id, 'status' => '1'])->first();
if (empty($user)) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'User Not Found!',
'data' => '{}'
], Response::HTTP_OK);
}
$videos = Content::join('re_s3buckets', 're_s3buckets.etag', '=', 'contents.video_id')
->where(['contents.cat_id' => $request->cat_id])
->get(['contents.*', 're_s3buckets.filename', 're_s3buckets.public_name', 're_s3buckets.duration', 're_s3buckets.path', 're_s3buckets.size']);
if ($videos->count() > 0) {
$contentData = array();
foreach ($videos as $video) {
// dd($video);
$video_arr = array(
'id' => $video->id,
'type' => $video->type,
'admin_id' => $admin_id,
'product_id' => $video->product_id,
'cat_id' => $video->cat_id,
'video_id' => $video->video_id,
'public_name' => $video->public_name,
'duration' => $video->duration,
'demo_video_type' => $video->demo_video_type,
'filename' => $video->filename,
'path' => $video->path,
'size' => $video->size,
'totalTime' => 0,
'remainingTime' => 0,
);
array_push($contentData, $video_arr);
}
// $videos->data_video_type = "1";
return response()->json([
'status' => 1,
'success' => true,
'message' => 'data Found',
'data' => $contentData
], Response::HTTP_OK);
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'data Not Found',
'data' => '{}'
], Response::HTTP_OK);
}
}
public function mcqContent(Request $request)
{
$data = $request->only('product_id', 'user_unique_id', 'cat_id');
$validator = Validator::make($data, [
// 'admin_id' => 'required',
'product_id' => 'required',
'user_unique_id' => 'required',
'cat_id' => 'required'
]);
if (!$request->user_unique_id || !$request->product_id || !$request->cat_id) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Please insert All Required Field',
'data' => '{}'
], 200);
}
$admin_id = 2;
$videos = Content::join('mcqs', 'mcqs.id', '=', 'contents.video_id')
->where(['contents.cat_id' => $request->cat_id, 'contents.type' => 'practice_test'])
->get(['mcqs.id', 'mcqs.name', 'contents.type', 'contents.product_id', 'contents.cat_id', 'contents.video_id', 'contents.demo_video_type']);
if ($videos->count() > 0) {
return response()->json([
'status' => 1,
'success' => true,
'message' => 'data Found',
'data' => $videos
], Response::HTTP_OK);
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'data Not Found',
'data' => '{}'
], Response::HTTP_OK);
}
}
public function pdfContent(Request $request)
{
$data = $request->only('product_id', 'user_unique_id', 'cat_id');
$validator = Validator::make($data, [
// 'admin_id' => 'required',
'product_id' => 'required',
'user_unique_id' => 'required',
'cat_id' => 'required'
]);
if (!$request->user_unique_id || !$request->product_id || !$request->cat_id) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Please insert All Required Field',
'data' => '{}'
], 200);
}
$admin_id = 2;
$videos = Content::join('pdf_tests', 'pdf_tests.etag', '=', 'contents.video_id')
->where(['contents.cat_id' => $request->cat_id, 'contents.type' => 'pdf'])
->get(['contents.*', 'pdf_tests.filename', 'pdf_tests.filename as public_name', 'pdf_tests.etag']);
if ($videos->count() > 0) {
return response()->json([
'status' => 1,
'success' => true,
'message' => 'data Found',
'data' => $videos
], Response::HTTP_OK);
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'data Not Found',
'data' => '{}'
], Response::HTTP_OK);
}
}
public function pdfTestDownload(Request $request)
{
$data = $request->only('user_unique_id', 'product_id', 'video_id');
$validator = Validator::make($data, [
'user_unique_id' => 'required',
// 'admin_id' => 'required',
'product_id' => 'required',
'video_id' => 'required'
]);
if (!$request->user_unique_id || !$request->product_id || !$request->video_id) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Please insert All Required Field',
'data' => '{}'
], 200);
}
$admin_id = 2;
$bucket = Pdf_test::where(['etag' => $request->video_id])->first();
// dd($bucket);
if (!empty($bucket->path)) {
$path = $bucket->path;
$getLink = $this->getObjectlink($path);
return response()->json([
'status' => 1,
'success' => true,
'message' => 'Link Created',
'data' => $getLink
], Response::HTTP_OK);
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Video Not Found',
'data' => '{}'
], Response::HTTP_OK);
}
}
//Ebook
public function ebookContent(Request $request)
{
$data = $request->only('product_id', 'user_unique_id', 'cat_id');
$validator = Validator::make($data, [
'product_id' => 'required',
'user_unique_id' => 'required',
'cat_id' => 'required'
]);
if (!$request->user_unique_id || !$request->product_id || !$request->cat_id) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Please insert All Required Field',
'data' => '{}'
], 200);
}
$admin_id = 2;
$videos = Content::join('ebooks_mapping', 'ebooks_mapping.etag', '=', 'contents.video_id')
->where(['contents.cat_id' => $request->cat_id, 'contents.type' => 'ebook'])
->get(['contents.*', 'ebooks_mapping.filename', 'ebooks_mapping.etag', 'ebooks_mapping.public_name']);
if ($videos->count() > 0) {
return response()->json([
'status' => 1,
'success' => true,
'message' => 'data Found',
'data' => $videos
], Response::HTTP_OK);
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'data Not Found',
'data' => '{}'
], Response::HTTP_OK);
}
}
public function ebookDownload(Request $request)
{
$data = $request->only('user_unique_id', 'product_id', 'video_id');
$validator = Validator::make($data, [
'user_unique_id' => 'required',
// 'admin_id' => 'required',
'product_id' => 'required',
'video_id' => 'required'
]);
if (!$request->user_unique_id || !$request->product_id || !$request->video_id) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Please insert All Required Field',
'data' => '{}'
], 200);
}
$admin_id = 2;
$bucket = Ebook::where(['etag' => $request->video_id])->first();
// dd($bucket);
if (!empty($bucket->path)) {
$path = $bucket->path;
$getLink = $this->getObjectlink($path);
return response()->json([
'status' => 1,
'success' => true,
'message' => 'Link Created',
'data' => $getLink
], Response::HTTP_OK);
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Video Not Found',
'data' => '{}'
], Response::HTTP_OK);
}
}
public function getMcqQuestion(Request $request)
{
$admin_id = 2;
$data = $request->only('product_id', 'user_unique_id', 'mcq_id');
$validator = Validator::make($data, [
// 'admin_id' => 'required',
'product_id' => 'required',
'user_unique_id' => 'required',
'mcq_id' => 'required'
]);
if (!$request->user_unique_id || !$request->product_id || !$request->mcq_id) {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Please insert All Required Field',
'data' => '{}'
], 200);
}
$billings = Product::where(['id' => $request->product_id])->first();
if (!empty($billings)) {
$teacher_name = '';
if (!empty($billings->teacher_id)) {
$teacher = Admin_user::where(['id' => $billings->teacher_id])->first();
$teacher_name = $teacher->username;
}
// dd($teacher_name);
$mcq_questions = DB::table('mcq_questions as M')
->join('mcq_ques_gps as MQ', 'M.id', '=', 'MQ.mcq_ques_id')
->join('mcqs as MS', 'MS.id', '=', 'MQ.mcq_id')
->where(['MQ.admin_id' => $admin_id])
->select('M.*')
->get();
if (!empty($mcq_questions)) {
$future = ''; //Future date.
$timefromdb = strtotime(date('Y-m-d'));
$timeleft = '';
$daysleft = '';
$__mcq_data = array(
'product_name' => $billings->name,
'teacher_name' => $teacher_name,
'expire_on' => '',
'days_left' => $daysleft,
'question' => array()
);
foreach ($mcq_questions as $mcq_question) {
$mcq_data = array(
'id' => $mcq_question->id,
'question' => $mcq_question->question,
'solution' => $mcq_question->solution,
'correct_option_id' => $mcq_question->correct_option_id,
'option' => array()
);
$options = Mcq_option::where(['question_id' => $mcq_question->id])->get();
if (!empty($options)) {
foreach ($options as $option) {
$_option = array(
'q_id' => $option->question_id,
'id' => $option->id,
'options' => $option->options,
);
array_push($mcq_data['option'], $_option);
}
}
array_push($__mcq_data['question'], $mcq_data);
}
return response()->json([
'status' => 1,
'success' => true,
'message' => 'Question Found!',
'data' => $__mcq_data
], 200);
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'Question Not Found!',
'data' => '{}'
], 200);
}
} else {
return response()->json([
'status' => 0,
'success' => false,
'message' => 'data Not Found',
'data' => '{}'
], Response::HTTP_OK);
}
}
}