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/ApiMcqController_old.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Tymon\JWTAuth\Exceptions\JWTException;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB;

use App\Models\Mcq;
use App\Models\Billing;
use App\Models\Admin_user;
use App\Models\Mcq_question;
use App\Models\Mcq_option;
use App\Models\Mcq_history;
use App\Models\Mcq_user_answer;
use App\Models\Mcq_ques_gp;
use App\Models\Student_test_upload;

use AWS\S3\S3Client;
use Aws\S3\S3Client as S3S3Client;

class ApiMcqController extends Controller
{
    public function getInstruction(Request $request)
    {
        $admin_id = 2;
        $credentials = $request->only('mcq_id', 'product_id', 'user_unique_id');

        //valid credential
        $validator = Validator::make($credentials, [
            'mcq_id' => 'required',
            'product_id' => 'required',
            'user_unique_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);
        }

        $mcq = Mcq::where(['admin_id' => $admin_id, 'id' => $request->mcq_id])->first();
        if (!empty($mcq)) {
            if ($mcq->retake_attempt == 'limited') {
                $total_history = Mcq_history::where(['mcq_id' => $request->mcq_id, 'product_id' => $request->product_id, 'user_unique_id' => $request->user_unique_id])->count();
                if ($total_history > $mcq->nooftimes) {
                    return response()->json([
                        'status' => 0,
                        'success' => false,
                        'message' => 'You Have Crossed Maximum Attempt!',
                        'data' => '{}'
                    ], 200);
                }
            }
            // dd($total_history);

            $mcq_ques_gp =  Mcq_ques_gp::where(['admin_id' => $admin_id, 'mcq_id' => $request->mcq_id])->count();
            // $totalQues = $mcq_ques_gp->count();
            $data = array(
                'id' => $mcq->id,
                'name' => $mcq->name,
                'instruction' => $mcq->instruction,
                'retake_attempt' => $mcq->retake_attempt,
                'nooftimes' => $mcq->nooftimes,
                'time_limit' => $mcq->time_limit,
                'correct_marks' => $mcq->correct_marks,
                'negative_marks' => $mcq->negative_marks,
                'total_ques' => $mcq_ques_gp
            );

            return response()->json([
                'status' => 1,
                'success' => true,
                'message' => 'Insturction Fetch Success',
                'data' => $data
            ], 200);
        } else {
            return response()->json([
                'status' => 0,
                'success' => false,
                'message' => 'Mcq Not Found!',
                'data' => '{}'
            ], 200);
        }
    }

    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 = Billing::where(['billings.admin_id' => $admin_id, 'billings.user_unique_id' => $request->user_unique_id, 'billings.payment_status' => 'Credit', 'orderproductgroups.product_id' => $request->product_id])
            ->join('orderproductgroups', 'orderproductgroups.billing_id', '=', 'billings.id')
            ->join('products', 'products.id', '=', 'orderproductgroups.product_id')
            ->first(['orderproductgroups.*', 'products.name', 'products.teacher_id']);


        if (!empty($billings)) {
            $teacher_name = '';

            if (!empty($billings->teacher_id)) {

                $teacher =  Admin_user::where(['id' => $billings->teacher_id])->first();
                $teacher_name = $teacher->username;
            }

            $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 = strtotime($billings->expire_date); //Future date.
                $timefromdb = strtotime(date('Y-m-d')); //source time
                $timeleft = $future - $timefromdb;
                $daysleft = round((($timeleft / 24) / 60) / 60);

                $__mcq_data = array(
                    'product_name' => $billings->name,
                    'teacher_name' => $billings->teacher_name,
                    'expire_on' => $billings->expire_date,
                    '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);
        }
    }

    public function saveUserAns(Request $request)
    {
        $admin_id = 2;



        if (!$request->user_unique_id || !$request->product_id || !$request->mcq_id || !$request->mcqresults) {
            return response()->json([
                'status' => 0,
                'success' => false,
                'message' => 'Please insert All Required Field',
                'data' => '{}'
            ], 200);
        }


        $data = array(
            'mcq_id' => $request->mcq_id,
            'product_id' => $request->product_id,
            'user_unique_id' => $request->user_unique_id,
            'percentage' => $request->percentage,
            'correct' => $request->correct,
            'wrong' => $request->wrong,
            'attempt' => $request->attempt,
            'lefts' => $request->lefts,
            'marks' => $request->marks,
            'total_ques' => $request->total_ques,

        );

        $res = Mcq_history::create($data);
        $mcq_hist_id = $res->id;
        $mcqresults = $request->mcqresults;
        if (!empty($mcqresults)) {
            foreach ($mcqresults as $mcqresult) {
                $result = array(
                    'mcq_id' => $request->mcq_id,
                    'mcq_hist_id' => $mcq_hist_id,
                    'user_unique_id' => $request->user_unique_id,
                    'ques_id' => $mcqresult['ques_id'],
                    'option_id' => $mcqresult['option_id'],
                );

                $_result = Mcq_user_answer::create($result);
            }

            // $this->updateQuizHistory($request->mcq_id,$mcq_hist_id,$request->user_unique_id,$admin_id);

            $returnData = array(
                'mcq_hist_id' => $mcq_hist_id
            );

            return response()->json([
                'status' => '1',
                'success' => true,
                'message' => 'mcq answer saved',
                'data' => $returnData
            ], Response::HTTP_OK);
        }
    }

    // public function updateQuizHistory($mcq_id,$mcq_hist_id,$user_unique_id,$admin_id)
    // {
    //     $correctOpt = [];

    //     $inCorrectOpt = [];
    //    $mcq_user_answer =  Mcq_user_answer::where(['mcq_id'=>$mcq_id,'mcq_hist_id'=>$mcq_hist_id,'user_unique_id'=>$user_unique_id])->get();

    //    if($mcq_user_answer->count()>0)
    //    {
    //         foreach($mcq_user_answer as $mcq_user_answ)
    //         {
    //             $checkCorrectOpt = Mcq_question::where(['id'=>$mcq_user_answ->ques_id,'correct_option_id'=>$mcq_user_answ->option_id])->first();

    //             if(!empty($checkCorrectOpt))
    //             {

    //                 $correctOpt[] = $mcq_user_answ->ques_id;
    //             }else{

    //                 $inCorrectOpt[] = $mcq_user_answ->ques_id;
    //             }

    //         }
    //    }

    //    $mcq_ques_gp =  Mcq_ques_gp::where(['admin_id'=>$admin_id,'mcq_id'=>$mcq_id])->get();
    //    $totalUserAns = $mcq_user_answer->count();
    //    $totalMcqQues = $mcq_ques_gp->count();

    //    $lefts = $totalMcqQues - $totalUserAns;
    //    $totalQues = $totalMcqQues;
    //    $correctQues = count($correctOpt);
    //    $inCorrectQues = count($inCorrectOpt);

    //    $mcq = Mcq::where(['admin_id'=>$admin_id,'id'=>$mcq_id])->first();
    //    $correct_marks = $mcq->correct_marks;
    //    $negative_marks = $mcq->negative_marks;

    //    $totalCorrectMark = $correctQues * $correct_marks;
    //    $totalInCorrectMark = $inCorrectQues * $negative_marks;

    //    $totalMarks = $totalCorrectMark - $totalInCorrectMark;
    //    $totalPercentage = ($totalMarks * 100)/$totalMcqQues;

    //    $data = array(
    //        'percentage'=>$totalPercentage,
    //        'correct'=>$correctQues,
    //        'wrong'=>$inCorrectQues,
    //        'attempt'=>$totalUserAns,
    //        'lefts'=>$lefts,
    //        'marks'=>$totalMarks,
    //        'total_ques'=>$totalMcqQues,
    //    );

    //    Mcq_history::where(['id'=>$mcq_hist_id])->update($data);

    // //    dd($totalPercentage);


    // }

    public function mcqResult(Request $request)
    {
        $admin_id = 2;
        $data = $request->only('mcq_id', 'user_unique_id', 'product_id', 'mcq_hist_id');
        $validator = Validator::make($data, [

            // 'admin_id' => 'required',
            'product_id' => 'required',
            'user_unique_id' => 'required',
            'mcq_id' => 'required',
            'mcq_hist_id' => 'required',


        ]);

        if (!$request->user_unique_id || !$request->product_id || !$request->mcq_id || !$request->mcq_hist_id) {
            return response()->json([
                'status' => 0,
                'success' => false,
                'message' => 'Please insert All Required Field',
                'data' => '{}'
            ], 200);
        }
        // DB::enableQueryLog();

        $mcq_questions = Mcq_history::where(['MU.mcq_hist_id' => $request->mcq_hist_id])
            ->join('mcq_user_answers as MU', 'MU.mcq_hist_id', '=', 'mcq_histories.id')
            ->join('mcq_questions as MQ', 'MQ.id', '=', 'MU.ques_id')
            ->get(['MQ.*', 'MU.ques_id', 'MU.option_id']);

        // dd($mcq_questions);

        // dd(DB::getQueryLog());


        if (!empty($mcq_questions)) {
            $mcq_data = array();
            foreach ($mcq_questions as $mcq_question) {
                $user_option = Mcq_option::where(['MQ.id' => $mcq_question->option_id])
                    ->join('mcq_questions as MQ', 'MQ.id', '=', 'mcq_options.question_id')
                    ->first('mcq_options.*');

                $correct_option = Mcq_option::where(['MQ.id' => $mcq_question->correct_option_id])
                    ->join('mcq_questions as MQ', 'MQ.id', '=', 'mcq_options.question_id')
                    ->first('mcq_options.*');


                $data = array(
                    'question' => $mcq_question->question,
                    'user_ans' => (!empty($user_option->options)) ? $user_option->options : "",
                    'correct_option' => $correct_option->options,
                    'solution' => $mcq_question->solution,
                );

                // dd($data);


                array_push($mcq_data, $data);
            }

            return response()->json([
                'status' => '1',
                'success' => true,
                'message' => 'Data Found',
                'data' => $mcq_data
            ], Response::HTTP_OK);
        } else {

            return response()->json([
                'status' => '0',
                'success' => false,
                'message' => 'No Data Found',
                'data' => '{}'
            ], Response::HTTP_OK);
        }
    }



    public function uploadStudentTestPdf(Request $request)
    {
        // print_r($_FILES);exit;

        if ($_FILES['file']['size'] == 0 && $_FILES['file']['error'] == 0) {
            echo json_encode(['code' => 201, 'status' => false]);
            exit;
        }

        $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
            ]
        ]);





        $s3->putBucketCors([
            'Bucket' => $bucket, // REQUIRED
            'CORSConfiguration' => [ // REQUIRED
                'CORSRules' => [ // REQUIRED
                    [
                        'AllowedMethods' => ['POST', 'GET', 'HEAD', 'DELETE', 'PUT'], // REQUIRED
                        'AllowedHeaders' => ['*'],
                        'AllowedOrigins' => ['*'], // REQUIRED
                        'ExposeHeaders' => ['ETag'],
                        'MaxAgeSeconds' => 0
                    ],
                ],
            ]
        ]);


        $fileName = $_FILES['file']['name'];
        $fileTmp = $_FILES['file']['tmp_name'];
        $fileType = $_FILES['file']['type'];


        // $formInputs = ['acl' => 'private'];    

        // $fileKeyVal = 'navinclassess/' . $fileName;


        // for data upload 

        $result =  $s3->putObject(array(
            'Bucket' => $bucket,
            'Key'    => "testupload/" . $fileName,
            'SourceFile' => $fileTmp,
            'ContentType' => $fileType,
            'ACL' => 'public-read',
            'StorageClass' => 'REDUCED_REDUNDANCY',
        ));

        if ($result['@metadata']['statusCode'] == 200) {
            $imagUrl = $result['@metadata']['effectiveUri'];
            $etag = str_replace('"', " ", $result['@metadata']['headers']['etag']);

            $data = array(
                'student_id' => $request->user_unique_id,
                'image_url' => $imagUrl,
                'etag' => $etag,
            );

            $insert =  Student_test_upload::create($data);

            if ($insert) {
                return json_encode(['code' => 200, 'status' => true, 'message' => 'document Upload Successfully']);
            } else {
                return json_encode(['code' => 500, 'status' => false, 'message' => 'something went wrong']);
            }
        } else {
            return json_encode(['code' => 200, 'status' => false, 'message' => 'document Not Upload Successfully']);
        }
    }
}

Anon7 - 2021