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/parasoffline.edukrypt.in/apinew/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //var/www/parasoffline.edukrypt.in/apinew/index.php
<?php
date_default_timezone_set('Asia/Kolkata');
define('BUNNY_CDN_HOSTNAME', 'https://vz-febe1fff-0d2.b-cdn.net');
require 'flight/Flight.php';
require("../application/third_party/vendor/autoload.php");

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;


// Reginster Client By ID AND RegCode
Flight::route('/', function () {
    echo 'EduKrypt App API New v2.0';
});

Flight::route('GET|POST /test', function () {
    print_r('test');
});

Flight::register('db', 'PDO', array("mysql:host=localhost;port=3306;dbname=parasoffline_app;", 'root', 'the@interactive123'), function ($db) {
    $db->exec("SET CHARACTER SET utf8");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
});

define('APP_BASE', 'https://parasoffline.edukrypt.in/');

header('Content-Type: application/json');


// Reginster Client By ID AND RegCode
Flight::route('POST /register', function () {

    //echo '<pre>'.json_encode($_POST).'</pre>';
    if (!empty($_POST['id']) && !empty($_POST['regcode'])) {

        $db = Flight::db();
        $result = $db->query("SELECT * FROM users WHERE id='" . $_POST['id'] . "' AND registration_code='" . $_POST['regcode'] . "' LIMIT 0, 1");
        if ($result->rowCount() >= 1) {

            $query = $db->query("select users.*,admin_users.institute,admin_users.userfile,admin_users.mobile,admin_users.email as adminemail from users join admin_users ON admin_users.id=users.admin_id WHERE users.id='" . $_POST['id'] . "' AND users.registered=0");
            if ($query->rowCount() >= 1) {

                // if registered is inactive(0)
                foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
                    echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"register successfull",
                            "data":';
                    print_r(json_encode($row));
                    echo '}';
                }
                //change value of registered column to 1
                $db->query("UPDATE users SET registered=1 WHERE id='" . $_POST['id'] . "'");
            } else {
                // if registered is inactive(0)
                echo '{"status":"fail","statuscode":201,"data":{},"message":"User already registered!"}';
            }
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid entry!"}';
    }
});

// fetch user TB Into App 
Flight::route('GET /fetch_popups', function () {
    $db = Flight::db();
    $result = $db->query("SELECT id,sort,name,CONCAT('https://parasoffline.edukrypt.in/uploads/',image) as img from popups order by sort asc");
    if ($result->rowCount() >= 1) {
        echo '{  
				"status":"success",
				"statuscode":200,
				"message":"Fetch successfully",
				"data":';
        echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
        echo '}';
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
    }
});


// fetch user TB Into App 
Flight::route('POST /fetch_user_tb', function () {

    if (!empty($_POST['id']) && !empty($_POST['admin_id'])) {
        $db = Flight::db();
        $result = $db->query("SELECT users.*,admin_users.institute,admin_users.userfile,admin_users.mobile,admin_users.email as adminemail from users join admin_users ON admin_users.id=users.admin_id WHERE users.id='" . $_POST['id'] . "' AND users.admin_id='" . $_POST['admin_id'] . "' LIMIT 0, 1");
        if ($result->rowCount() >= 1) {
            //$db->query("UPDATE users SET registered=1 WHERE id='".$_POST['id']."'"); 
            //$query = $db->query("select * from users WHERE id='".$_POST['id']."'"); 
            foreach ($result->fetchAll(PDO::FETCH_ASSOC) as $row) {
                echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"Fetch successfully",
                            "data":';
                echo json_encode($row);
                echo '}';
            }
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid entry!"}';
    }
});

// Update user TB Into App 
Flight::route('POST /update_user_tb', function () {

	if (!empty($_POST['id']) && !empty($_POST['admin_id']) && !empty($_POST['first_name']) && !empty($_POST['last_name']) && !empty($_POST['admission_code'])) {

		$db = Flight::db();
		$result = $db->query("SELECT users.*,admin_users.institute,admin_users.userfile,admin_users.mobile,admin_users.email as adminemail from users join admin_users ON admin_users.id=users.admin_id WHERE users.id='" . $_POST['id'] . "' AND users.admin_id='" . $_POST['admin_id'] . "' LIMIT 0, 1");
		if ($result->rowCount() >= 1) {

			// Update First Name & Admission Code
			$first_name = $_POST['first_name'];
			$last_name = $_POST['last_name'];
			$admission_code = $_POST['admission_code'];

			$db->query("UPDATE users SET first_name='$first_name',last_name='$last_name',admission_code='$admission_code' WHERE id='" . $_POST['id'] . "'");

			$_result = $db->query("SELECT users.*,admin_users.institute,admin_users.userfile,admin_users.mobile,admin_users.email as adminemail from users join admin_users ON admin_users.id=users.admin_id WHERE users.id='" . $_POST['id'] . "' AND users.admin_id='" . $_POST['admin_id'] . "' LIMIT 0, 1");

			foreach ($_result->fetchAll(PDO::FETCH_ASSOC) as $row) {
				echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"Fetch successfully",
                            "data":';
				echo json_encode($row);
				echo '}';
			}
		} else {
			echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
		}
	} else {
		echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid entry!"}';
	}
});

// fetch Course TB Into App 
Flight::route('POST /fetch_course_tb', function () {

    if (!empty($_POST['admin_id'])) {
        $db = Flight::db();
        $date = date('Y-m-d');
        if (!empty($_POST['user_id'])) {
            $result = $db->prepare("SELECT courses.* FROM courses JOIN subjects ON subjects.course_id=courses.id JOIN chapters ON chapters.subject_id=subjects.id JOIN lectures ON lectures.chapter_id=chapters.id JOIN regfiles ON regfiles.lecture_id=lectures.id WHERE regfiles.user_id='" . $_POST['user_id'] . "' AND regfiles.admin_id='" . $_POST['admin_id'] . "' AND DATE(str_dt) <='$date' AND DATE(end_dt) >='$date' group by courses.id");
        } else {
            $result = $db->prepare("SELECT * FROM courses WHERE ADMIN_ID='" . $_POST['admin_id'] . "'");
        }

        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"Courses fetch Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid entry!"}';
    }
});



// fetch Subject TB Into App 
Flight::route('POST /fetch_subject_tb', function () {

    if (!empty($_POST['admin_id'])) {
        $db = Flight::db();
        $date = date('Y-m-d');
        if (!empty($_POST['user_id'])) {
            $result = $db->prepare("SELECT subjects.* FROM subjects JOIN chapters ON chapters.subject_id=subjects.id JOIN lectures ON lectures.chapter_id=chapters.id JOIN regfiles ON regfiles.lecture_id=lectures.id WHERE regfiles.user_id='" . $_POST['user_id'] . "' AND regfiles.admin_id='" . $_POST['admin_id'] . "' AND DATE(str_dt) <='$date' AND DATE(end_dt) >='$date' group by subjects.id");
        } else {
            $result = $db->prepare("SELECT * FROM subjects WHERE ADMIN_ID='" . $_POST['admin_id'] . "'");
        }

        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"Subjects fetch Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid entry!"}';
    }
});


// fetch Subject TB Into App 
Flight::route('POST /fetch_chapter_tb', function () {

    if (!empty($_POST['admin_id'])) {
        $db = Flight::db();
        $date = date('Y-m-d');
        if (!empty($_POST['user_id'])) {
            $result = $db->prepare("SELECT chapters.* FROM chapters JOIN lectures ON lectures.chapter_id=chapters.id JOIN regfiles ON regfiles.lecture_id=lectures.id WHERE regfiles.user_id='" . $_POST['user_id'] . "' AND regfiles.admin_id='" . $_POST['admin_id'] . "' AND DATE(str_dt) <='$date' AND DATE(end_dt) >='$date' group by chapters.id");
        } else {
            $result = $db->prepare("SELECT * FROM chapters WHERE ADMIN_ID='" . $_POST['admin_id'] . "'");
        }

        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"Chapters fetch Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid entry!"}';
    }
});



// fetch Subject TB Into App 
Flight::route('POST /fetch_lecture_tb', function () {

    if (!empty($_POST['admin_id'])) {
        $db = Flight::db();
        $adminID = $_POST['admin_id'];


        $querySQL = "SELECT * FROM lectures WHERE ADMIN_ID=$adminID";
        if (!empty($_POST['user_id'])) {
            $userID = $_POST['user_id'];
            $date = date('Y-m-d H:i:s');
            $querySQL = "SELECT lectures.* from lectures JOIN regfiles ON regfiles.lecture_id=lectures.id WHERE lectures.admin_id=$adminID AND regfiles.user_id=$userID AND TIMESTAMPDIFF(SECOND, regfiles.str_dt, now())>1 AND TIMESTAMPDIFF(SECOND, regfiles.end_dt, now())<1";

            //print_r($querySQL);exit;
        }

        $result = $db->prepare($querySQL);
        $result->execute();
        if ($result->rowCount() >= 1) {
            $return_results = $result->fetchAll(PDO::FETCH_ASSOC);


            if ($return_results) {


                foreach ($return_results as $__key => $return_result) {
                    $return_results[$__key]['e_type'] = ($return_result['e_type']) ? $return_result['e_type'] : "";

                    if (empty($return_result['quiz_id'])) {
                        $return_results[$__key]['quiz_id'] = "";
                    }

                    $return_results[$__key]['file_name'] = $return_result['name'];


                    // Dropbox File Size get
                    if (empty($return_results[$__key]['is_download']) && $return_results[$__key]['e_type'] == 'video') {
                        $drobbox_video_id = $return_results[$__key]['drobbox_video_id'];
                        $dropbox_file_name = $return_results[$__key]['dropbox_file_name'];

                        //print_r($return_results[$__key]['storage']);exit;

                        $querySQL11 = "SELECT * from dropbox_album where BINARY id='$drobbox_video_id' AND name='$dropbox_file_name' limit 1";
                        if ($return_results[$__key]['storage'] == 'do') {
                            $querySQL11 = "SELECT path as id, filename as name, size from s3bucket where BINARY path='$drobbox_video_id' AND filename='$dropbox_file_name' limit 1";
                        }

                        $result11 = $db->prepare($querySQL11);
                        $result11->execute();
                        if ($result11->rowCount() >= 1) {
                            $return_results11 = $result11->fetchAll(PDO::FETCH_ASSOC);
                            $return_results[$__key]['is_download'] = $return_results11[0]['size'];
                        }
                    }


                    if (empty($return_result['file_name'])) {
                        $return_results[$__key]['file_name'] = $return_result['name'];
                    }



                    if ($return_result['e_type'] == 'doc') {
                        $return_results[$__key]['pdf_url'] = "";
                    } else {
                        $return_results[$__key]['pdf_url'] = "";
                    }
                }
            }

            header('Content-type: application/json');
            echo '{
                            "status":"success",
                            "statuscode":200,
                            "message":"Lectures fetch Successfully!",
                            "data":';
            echo json_encode($return_results);
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":200,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid Entry!"}';
    }
});



// fetch Subject TB Into App
Flight::route('POST /fetch_regfile_tb', function () {

    if (!empty($_POST['admin_id']) && !empty($_POST['user_id'])) {
        $date = date('Y-m-d H:i:s');
        $db = Flight::db();
        $result = $db->prepare("SELECT * FROM regfiles WHERE user_id='" . $_POST['user_id'] . "' AND ADMIN_ID='" . $_POST['admin_id'] . "' AND TIMESTAMPDIFF(SECOND, regfiles.str_dt, now())>1 AND TIMESTAMPDIFF(SECOND, regfiles.end_dt, now())<1");
        $result->execute();
        //print_r($result->rowCount());exit;
        if ($result->rowCount() >= 1) {

            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"Regfiles fetch Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid Entry!"}';
    }
});

// fetch Course TB Into App BY ID And Admin_id
Flight::route('POST /fetch_course_tb_by_id', function () {

    if (!empty($_POST['admin_id']) && !empty($_POST['id'])) {
        $db = Flight::db();
        $result = $db->prepare("SELECT * FROM courses WHERE admin_id='" . $_POST['admin_id'] . "' AND id='" . $_POST['id'] . "' LIMIT 0, 1 ");
        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"course fetch Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid Entry!"}';
    }
});


// fetch Subject TB Into App BY ID And Admin_id
Flight::route('POST /fetch_subject_tb_by_id', function () {

    if (!empty($_POST['admin_id']) && !empty($_POST['id'])) {
        $db = Flight::db();
        $result = $db->prepare("SELECT * FROM subjects WHERE admin_id='" . $_POST['admin_id'] . "' AND id='" . $_POST['id'] . "' LIMIT 0, 1 ");
        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"subject fetch Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid Entry!"}';
    }
});

//  Count  Users
Flight::route('GET /checkfornewapp', function () {
    $obj = json_decode(file_get_contents("php://input"));

    header('Content-type: application/json');
    echo '{  
		"status":"success",
		"statuscode":200,
		"message":"New updated version found!",
		"data":{
			"version":"19",
			"link":"https://play.google.com/store/apps/details?id=com.globalexcell.parasinstitute&hl=en"
		}
	}';
});

// fetch Chapter TB Into App BY ID And Admin_id
Flight::route('POST /fetch_chapter_tb_by_id', function () {

    if (!empty($_POST['admin_id']) && !empty($_POST['id'])) {
        $db = Flight::db();
        $result = $db->prepare("SELECT * FROM chapters WHERE ADMIN_ID='" . $_POST['admin_id'] . "' AND ID='" . $_POST['id'] . "' LIMIT 0, 1 ");
        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"chapter fetch Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid Entry!"}';
    }
});


// fetch Lecture TB Into App BY ID And Admin_id
Flight::route('POST /fetch_lecture_tb_by_id', function () {

    if (!empty($_POST['admin_id']) && !empty($_POST['id'])) {
        $db = Flight::db();
        $result = $db->prepare("SELECT * FROM lectures WHERE admin_id='" . $_POST['admin_id'] . "' AND id='" . $_POST['id'] . "' LIMIT 0, 1 ");
        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"lecture fetch Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid Entry!"}';
    }
});

// fetch Regfiles TB Into App BY ID And Admin_id
Flight::route('POST /fetch_regfile_tb_by_id', function () {

    if (!empty($_POST['admin_id']) && !empty($_POST['id'])) {
        $db = Flight::db();
        $result = $db->prepare("SELECT * FROM regfiles WHERE admin_id='" . $_POST['admin_id'] . "' AND id='" . $_POST['id'] . "' LIMIT 0, 1 ");
        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"regfile fetch Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid Entry!"}';
    }
});


// fetch MediaPlay History TB Into App BY ID And Admin_id
Flight::route('POST /fetch_upload_playHistory', function () {

	$_posts = json_decode(file_get_contents("php://input"));
	$db = Flight::db();


	if (!empty($_posts->data)) {
		foreach ($_posts->data as $_post) {
			$lecture_id = $_post->lecture_id;
			$user_id = $_post->user_id;
			$reg_id = $_post->reg_id;
			$admin_id = $_post->admin_id;
			$noofplay = $_post->noofplay;
			$duration = $_post->duration;
			$lecture = $_post->lecture;
			$datetime = date('Y-m-d H:i:s');
			$last_update = uniqid();


			$resultQ = $db->prepare("INSERT INTO mediarecords (lid, user_id, reg_id, admin_id, duration, lecture, datetime, last_update) VALUES ('$lecture_id','$user_id','$reg_id','$admin_id','$duration','$lecture','$datetime','$last_update')");
			$resultQ->execute();

			if ($db->lastInsertId() > 0) {
				// reduce remaining duration in regfiles
				$query_one = $db->query("select * from regfiles where id='" . $reg_id . "'");
				if ($query_one->rowCount() >= 1) {
					$regfiles_data = $query_one->fetchAll(PDO::FETCH_ASSOC);
					$remain_duration = $regfiles_data[0]['remain_duration'];
					$updated_duration = $remain_duration - round($duration);
					$db->query("UPDATE regfiles SET remain_duration='" . $updated_duration . "' WHERE id='" . $reg_id . "'");
				}


				
			}
		}

		$arr = array(
			"status"        => "success",
			"statuscode"    => "200",
			"message"        => "Regfile fetch successfully!",
			"data"            => ""
		);
		echo json_encode($arr);
		exit;
	}

	$arr = array(
		"status"        => "fail",
		"statuscode"    => "201",
		"message"        => "All fields are required!",
		"data"            => ""
	);
	echo json_encode($arr);
	exit;
});
/* MCQ ............................................................................................*/

//  Get quiz_details
Flight::route('POST /quiz_details', function () {

    $db = Flight::db();

    $mcq_id = (isset($_POST['mcq_id']) && !empty($_POST['mcq_id'])) ? $_POST['mcq_id'] : NULL;

    if (!$mcq_id) {
        echo '{"status":"Not Fount","statuscode":401,"data":"{}","message":"All input fields are required!"}';
        exit;
    }

    $result1 = $db->query("SELECT id as mcq_id, title, tquestion as total_question, duration, correct_marks, wrong_marks, description FROM mcq WHERE id = " . $mcq_id);

    if ($result1->rowCount() > 0) {
        echo '{"status":"success","statuscode":200,"data":' . json_encode($result1->fetchAll(PDO::FETCH_ASSOC)) . ',"message":"Fetch succesfully !"}';
    } else {
        echo '{"status":"Not Fount","statuscode":402,"data":' . json_encode($result1->fetchAll(PDO::FETCH_ASSOC)) . ',"message":"Not Found !"}';
    }
});

// Get Questions 
Flight::route('POST /get_questions_tb', function () {
    $db = Flight::db();

    $mcq_id = (isset($_POST['mcq_id']) && !empty($_POST['mcq_id'])) ? $_POST['mcq_id'] : NULL;

    if (!$mcq_id) {
        echo '{"status":"Not Fount","statuscode":401,"data":"{}","message":"All input fields are required!"}';
        exit;
    }

    $result1 = $db->query("SELECT quiz_questions.id,quiz_id,mcq_subjects.id as m_sub_id,mcq_subjects.subject as m_subject,question,no_of_options,correct_ans,correct_option_id,created_at,updated_at FROM quiz_questions join mcq_subjects ON mcq_subjects.id=quiz_questions.subject_id WHERE quiz_id = " . $mcq_id);
    //print_r($result1);exit;

    if ($result1->rowCount() > 0) {
        echo '{"status":"success","statuscode":200,"data":' . json_encode($result1->fetchAll(PDO::FETCH_ASSOC)) . ',"message":"Fetch succesfully !"}';
    } else {
        echo '{"status":"Not Fount","statuscode":402,"data":' . json_encode($result1->fetchAll(PDO::FETCH_ASSOC)) . ',"message":"Not Found !"}';
    }
});

// Get Options 
Flight::route('POST /get_options_tb', function () {

    $db = Flight::db();
    $mcq_id = (isset($_POST['mcq_id']) && !empty($_POST['mcq_id'])) ? $_POST['mcq_id'] : NULL;

    if (!$mcq_id) {
        echo '{"status":"Not Fount","statuscode":401,"data":"{}","message":"All input fields are required!"}';
        exit;
    }

    $result1 = $db->query(" SELECT o.id,o.quiz_question_id,o.no_of_options,o.options,o.created_at,o.updated_at FROM `quiz_questions` as q INNER JOIN quiz_options as o on q.id = o.quiz_question_id WHERE q.quiz_id = " . $mcq_id);

    if ($result1->rowCount() > 0) {
        echo '{"status":"success","statuscode":200,"data":' . json_encode($result1->fetchAll(PDO::FETCH_ASSOC)) . ',"message":"Fetch succesfully !"}';
    } else {
        echo '{"status":"Not Fount","statuscode":402,"data":' . json_encode($result1->fetchAll(PDO::FETCH_ASSOC)) . ',"message":"Not Found !"}';
    }
});

/**MCQ END*************************************************************************************/

// fetch faq's TB Into App 
Flight::route('POST /fetch_faq_tb', function () {


    $db = Flight::db();
    $result = $db->prepare("SELECT * FROM faqs");
    $result->execute();
    if ($result->rowCount() >= 1) {
        header('Content-type: application/json');
        echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"Faqs fetch Successfully!",
                            "data":';
        echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
        echo '}';
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
    }
});





Flight::route('POST /fetch_quiz_tb', function () {

    if (!empty($_POST['admin_id'])) {
        $db = Flight::db();
        $result = $db->prepare("SELECT id, admin_id, title, description FROM mcq WHERE ADMIN_ID='" . $_POST['admin_id'] . "'");
        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"Quiz fetched Successfully!",
                            "data":';
            echo json_encode($result->fetchAll(PDO::FETCH_ASSOC));
            echo '}';
        } else {
            echo '{"status":"fail","statuscode":201,"data":{},"message":"Data not found!"}';
        }
    } else {
        echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid Entry!"}';
    }
});

//  Get quiz
Flight::route('POST /get_quiz_tb', function () {
    header('Content-type: application/json');
    $post = json_decode(file_get_contents("php://input"));

    $db = Flight::db();

    $admin_id = (isset($post->admin_id) && !empty($post->admin_id)) ? $post->admin_id : NULL;
    $user_id = (isset($post->user_id) && !empty($post->user_id)) ? $post->user_id : NULL;

    if (!$admin_id && !$user_id) {
        echo '{"status":"Not Fount","statuscode":401,"data":"{}","message":"All input fields are required!"}';
        exit;
    }

    $result1 = $db->query("SELECT * FROM mcq WHERE admin_id = " . $admin_id);

    if ($result1->rowCount() > 0) {
        echo '{"status":"success","statuscode":200,"data":' . json_encode($result1->fetchAll(PDO::FETCH_ASSOC)) . ',"message":"Fetch succesfully !"}';
    } else {
        echo '{"status":"Not Fount","statuscode":402,"data":' . json_encode($result1->fetchAll(PDO::FETCH_ASSOC)) . ',"message":"Not Found !"}';
    }
});


//  Get quiz
Flight::route('POST /mcq_results', function () {

    header('Content-type: application/json');
    $post = json_decode(file_get_contents("php://input"));
    $db = Flight::db();

    $admin_id = (isset($post->admin_id) && !empty($post->admin_id)) ? $post->admin_id : NULL;
    $user_id = (isset($post->user_id) && !empty($post->user_id)) ? $post->user_id : NULL;
    $mcq_id = (isset($post->mcq_id) && !empty($post->mcq_id)) ? $post->mcq_id : NULL;
    $total_time = (isset($post->total_time) && !empty($post->total_time)) ? $post->total_time : NULL;
    $accuracy = (isset($post->accuracy) && !empty($post->accuracy)) ? $post->accuracy : NULL;
    $subjects = (isset($post->subjects) && !empty($post->subjects)) ? $post->subjects : NULL;

    /*     $subject_id = (isset($post->subject_id) && !empty($post->subject_id)) ? $post->subject_id : NULL;
    $subject_name = (isset($post->subject_name) && !empty($post->subject_name)) ? $post->subject_name : NULL;
    $correct_marks = (isset($post->correct_marks) && !empty($post->correct_marks)) ? $post->correct_marks : NULL;
    $wrong_marks = (isset($post->wrong_marks) && !empty($post->wrong_marks)) ? $post->wrong_marks : NULL;
    $total_marks = (isset($post->total_marks) && !empty($post->total_marks)) ? $post->total_marks : NULL; */

    if (!$admin_id && !$user_id && !$mcq_id && !$total_time && !$accuracy && !$subjects) {
        echo '{"status":"Not Fount","statuscode":401,"data":"{}","message":"All input fields are required!"}';
        exit;
    }


    // $result_test = $db->prepare("INSERT INTO mcq_res_data (text) 
    //    VALUES ('" . json_encode($post)  . "')");
    //    $result_test->execute();



    $checkExistresult = $db->prepare("SELECT * FROM mcq_results WHERE user_id = " . $user_id . " AND mcq_id = " . $mcq_id . "");
    $checkExistresult->execute();

    $checkExistresultdata = $checkExistresult->fetch(PDO::FETCH_ASSOC);

    $created_at = date('Y-m-d H:i:s');

    if ($checkExistresult->rowCount() < 5) {

        $result = $db->prepare("INSERT INTO mcq_results (admin_id, user_id, mcq_id, total_time, accuracy,created_at) 
            VALUES ('" . $admin_id . "','" . $user_id . "','" . $mcq_id . "','" . $total_time . "','" . $accuracy . "','" . $created_at . "')");
        $result->execute();

        $mcq_result_id =  $db->lastInsertId();

        if (!empty($subjects)) {
            foreach ($subjects as $subject) {
                $result1 = $db->prepare("INSERT INTO mcq_results_gp (mcq_result_id, subject_id, subject_name, correct_marks, wrong_marks,total_marks) 
					VALUES ('" . $mcq_result_id . "','" . $subject->subject_id . "','" . $subject->subject_name . "','" . $subject->correct_marks . "','" . $subject->wrong_marks . "','" . $subject->total_marks . "')");
                $result1->execute();
            }

            $data1['status']['status'] = "1";
            $data1['status']['statuscode'] = "200";
            $data1['data'] = '{}';
            $data1['message']['message'] = "Data Added Successfully!";

            echo json_encode($data1);
            exit;
        } else {

            $data1['status']['status'] = "0";
            $data1['status']['statuscode'] = "204";
            $data1['data'] = '{}';
            $data1['message']['message'] = "Data Not Found!";

            echo json_encode($data1);
            exit;
        }
    } else {
        $db->query("UPDATE mcq_results SET total_time='" . $total_time . "',accuracy='" . $accuracy . "' WHERE id='" . $checkExistresultdata['id'] . "'");



        if (!empty($subjects)) {
            foreach ($subjects as $subject) {
                $db->query("UPDATE mcq_results_gp SET correct_marks='" . $subject->correct_marks . "',wrong_marks='" . $subject->wrong_marks . "',total_marks='" . $subject->total_marks . "' WHERE mcq_result_id='" . $checkExistresultdata['id'] . "' AND subject_id='" . $subject->subject_id . "'");
            }

            $data1['status']['status'] = "1";
            $data1['status']['statuscode'] = "200";
            $data1['data'] = '{}';
            $data1['message']['message'] = "Data Updated Successfully!";

            echo json_encode($data1);
            exit;
        } else {
            $data1['status']['status'] = "0";
            $data1['status']['statuscode'] = "204";
            $data1['data'] = '{}';
            $data1['message']['message'] = "Data Not Found!";

            echo json_encode($data1);
            exit;
        }
    }
});



//update version_add_update token
Flight::route('GET /version_add_update', function () {

    $v = isset($_GET['v']) ? $_GET['v'] : null;

    if (!empty($v)) {
        $db = Flight::db();

        if (ctype_digit($v) == false) {
            $data1['status']['status'] = "0";
            $data1['status']['statuscode'] = "201";
            $data1['data']['default'] = "";
            $data1['message']['message'] = "You entered incorrect data parameter of 'v'!";
            echo json_encode($data1);
            exit;
        }

        $v = intval($v);

        $result = $db->prepare("SELECT version,link FROM version order by id desc limit 1 ");
        $result->execute();
        if ($result->rowCount() >= 1) {
            header('Content-type: application/json');
            $row = $result->fetch(PDO::FETCH_ASSOC);
            // print_r($row);exit;
            if ($v < $row['version']) {
                $data1['status']['status'] = "1";
                $data1['status']['statuscode'] = "200";
                $data1['data'] = $row;
                $data1['message']['message'] = "Version Updated!";
                echo json_encode($data1);
                exit;
            } else {
                $data1['status']['status'] = "0";
                $data1['status']['statuscode'] = "201";
                $data1['data']['default'] = "";
                $data1['message']['message'] = "No New Version Found!";
                echo json_encode($data1);
                exit;
            }
        } else {
            $data1['status']['status'] = "0";
            $data1['status']['statuscode'] = "201";
            $data1['data']['default'] = "";
            $data1['message']['message'] = "Record Did Not Found!";
            echo json_encode($data1);
            exit;
        }
    }
});




Flight::route('POST /getObjectlink', function () {

    $jsonPost = file_get_contents('php://input');

    $arrayPost = json_decode($jsonPost);
    //print_r($jsonPost);exit;

    if (!empty($arrayPost)) {

        $accessKey = "FE5BNXOOPWNOWFVTIC6A";
        $secretKey = "WHm2+naAHIISj2/B1dzKixvpZ+3smaJdmaGeohr0efI";
        $region = "sgp1";
        $host = "https://sgp1.digitaloceanspaces.com";
        $bucket = "paras-storage";

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

        try {
            //Creating a presigned URL
            $cmd = $s3->getCommand('GetObject', [
                'Bucket' => $bucket,
                'Key' => $arrayPost->path
            ]);


            $request = $s3->createPresignedRequest($cmd, '+55 minutes');

            // Get the actual presigned-url
            $presignedUrl = (string)$request->getUri();
            $_pathf = $arrayPost->path;
            $_urlf = "https://paras-storage.sgp1.cdn.digitaloceanspaces.com/" . $_pathf . "?" . parse_url($presignedUrl, PHP_URL_QUERY);

            //print_r($_urlf);exit;

            echo json_encode(['code' => 200, 'status' => true, 'url' => $_urlf]);
        } catch (S3Exception $e) {
            echo $e->getMessage() . PHP_EOL;
        }
    }
});


Flight::route('POST /getDownloadURL', function () {

    $jsonPost = file_get_contents('php://input');
    $arrayPost = json_decode($jsonPost);


    $db = Flight::db();

    if (!empty($arrayPost)) {

        if ($arrayPost->storage == 'do') {
            $accessKey = "FE5BNXOOPWNOWFVTIC6A";
            $secretKey = "WHm2+naAHIISj2/B1dzKixvpZ+3smaJdmaGeohr0efI";
            $region = "sgp1";
            $host = "https://sgp1.digitaloceanspaces.com";
            $bucket = "paras-storage";

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

            try {
                //Creating a presigned URL
                $cmd = $s3->getCommand('GetObject', [
                    'Bucket' => $bucket,
                    'Key' => $arrayPost->path
                ]);

                $request = $s3->createPresignedRequest($cmd, '+60 minutes');

                // Get the actual presigned-url

                $presignedUrl = (string)$request->getUri();
                $_pathf = $arrayPost->path;
                $_urlf = "https://paras-storage.sgp1.cdn.digitaloceanspaces.com/" . $_pathf . "?" . parse_url($presignedUrl, PHP_URL_QUERY);


                // print_r($arrayPost);exit;
                if (isset($arrayPost->user_id) && !empty($arrayPost->user_id)) {
                    $result = $db->prepare("SELECT *  FROM s3bucket where path = '" . $arrayPost->path . "' order by id desc limit 1 ");
                    $result->execute();
                    if ($result->rowCount() >= 1) {

                        $row = $result->fetch(PDO::FETCH_ASSOC);

                        $created_at = date('Y-m-d H:i:s');

                        $result = $db->prepare("INSERT INTO video_logs ( user_id,course_id, filename, path, size,created_at) 
                        VALUES ('" . $arrayPost->user_id . "','" . $arrayPost->course_id . "','" . $row['filename'] . "','" . $arrayPost->path . "','" . $row['size'] . "','" . $created_at . "')");
                        $result->execute();
                    }
                }

                $arrayRes = array(
                    "status" => "success",
                    "statuscode" => 200,
                    "message" => "Fetch successfully",
                    "data" => ['url' => $_urlf]
                );
                echo json_encode($arrayRes);
            } catch (S3Exception $e) {
                $arrayRes = array(
                    "status" => "fail",
                    "statuscode" => 201,
                    "message" => "Something went wrong!"
                );
                echo json_encode($arrayRes);
                //echo $e->getMessage() . PHP_EOL;
            }
        } else {
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => 'https://api.dropboxapi.com/2/files/get_temporary_link',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => json_encode(array("path" => $arrayPost->path)),
                CURLOPT_HTTPHEADER => array(
                    'Content-Type: application/json',
                    'Authorization: Bearer HkXug3yoWOAAAAAAAAAAJACxINAHcwUn3Typ0hnMDsZvBqMTvBpKTmfUwKvSXNWE'
                ),
            ));

            $response = curl_exec($curl);

            curl_close($curl);

            $resData = json_decode($response);

            $arrayRes = array(
                "status" => "success",
                "statuscode" => 200,
                "message" => "Fetch successfully",
                "data" => ['url' => $resData->link]
            );
            echo json_encode($arrayRes);
            exit;
        }
    }
});

Flight::route('POST /get_vodserver_url', function () {

    $db = Flight::db();
    $jsonPost = file_get_contents('php://input');
    $arrayPost = json_decode($jsonPost);

    if (!empty($arrayPost)) {
        $user_id = $arrayPost->user_id;
        $admin_id = $arrayPost->admin_id;
        $lecture_id = $arrayPost->lecture_id;


        $SQL = "SELECT * FROM regfiles WHERE permission_type='online' OR permission_type='both'  AND user_id='" . $user_id . "' AND admin_id='" . $admin_id . "' AND lecture_id='" . $lecture_id . "' LIMIT 0,1";
        $result = $db->prepare($SQL);
        $result->execute();
        if ($result->rowCount() > 0) {
            // Get Lecture name
            $SQL1 = "SELECT * FROM lectures WHERE id='" . $lecture_id . "' LIMIT 0,1";
            $result1 = $db->prepare($SQL1);
            $result1->execute();
            if ($result1->rowCount() > 0) {
                $lecture = $result1->fetch(PDO::FETCH_ASSOC);
                $filename_without_ext = pathinfo($lecture['name'], PATHINFO_FILENAME);

                // Get Bunny Video URL m3u8
                $SQL2 = "SELECT * FROM collection_album WHERE name='" . $filename_without_ext . "'";
                $result2 = $db->prepare($SQL2);
                $result2->execute();
                if ($result2->rowCount() > 0) {
                    $VOD_SERVER = $result2->fetch(PDO::FETCH_ASSOC);
                    $URL = BUNNY_CDN_HOSTNAME . '/' . $VOD_SERVER['video_id'] . '/playlist.m3u8';
                    echo json_encode(['code' => 200, 'status' => true, 'url' => base64_encode($URL)]);
                    exit;
                }
                echo json_encode(['code' => 201, 'status' => false]);
                exit;
            }
            echo json_encode(['code' => 201, 'status' => false]);
            exit;
        }
        echo json_encode(['code' => 201, 'status' => false]);
        exit;
    }
});


// fetch live schedules
Flight::route('POST /fetch_live_schedule_tb', function () {
	if (!empty($_POST['admin_id']) && !empty($_POST['user_id'])) {
		$date = date('Y-m-d H:i:s');
		$db = Flight::db();

		// Today
		$todayQuery = $db->prepare("SELECT * FROM live_schedule WHERE user_id='" . $_POST['user_id'] . "' AND ADMIN_ID='" . $_POST['admin_id'] . "' AND NOW() BETWEEN str_dt AND end_dt");
		$todayQuery->execute();

		// Upcomming
		$upcmingQuery = $db->prepare("SELECT * FROM live_schedule WHERE user_id='" . $_POST['user_id'] . "' AND ADMIN_ID='" . $_POST['admin_id'] . "' AND str_dt > NOW()");
		$upcmingQuery->execute();

		$data = array(
			'current' => $todayQuery->fetchAll(PDO::FETCH_ASSOC),
			'upcoming' => $upcmingQuery->fetchAll(PDO::FETCH_ASSOC),
		);

		if ($todayQuery->rowCount() >= 1) {
			echo '{  
                            "status":"success",
                            "statuscode":200,
                            "message":"Live Schedule fetch Successfully!",
                            "data":';
			echo json_encode($data);


			echo '}';
		} else {
			echo '{"status":"fail","statuscode":201,"data":{},"message":"data not found!"}';
		}
	} else {
		echo '{"status":"fail","statuscode":201,"data":{},"message":"Invalid Entry!"}';
	}
});


Flight::start();

Anon7 - 2021