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/ApiDemoProductController.php
<?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);
        }
    }
}

Anon7 - 2021