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/application/modules/admin/controllers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //var/www/parasoffline.edukrypt.in/application/modules/admin/controllers/Quiz.php
<?php
defined('BASEPATH') or exit('No direct script access allowed');

require APPPATH . 'third_party/pword/vendor/autoload.php';

class Quiz extends Admin_Controller
{

    public function __construct()
    {
        parent::__construct();
        $this->load->library(array('form_builder', 'pdf'));
        $this->load->model(['lecture_model', 'Main_model']);
    }

    public function mcq_subjects()
    {
        $crud = $this->generate_crud('mcq_subjects');

        if ($this->session->userdata('user_id') == 1) {
            //$crud->where('admin_id',$this->session->userdata('user_id'));
        } else {
            $crud->where('mcq_subjects.admin_id', $this->session->userdata('user_id'));
        }

        $crud->columns('id', 'subject', 'created');
        $crud->display_as('subject', 'MCQ Subject');

        if ($this->session->userdata('user_id') == 1) {
        } else {
            $crud->callback_add_field('admin_id', function () {
                return '<select id="admin_id" name="admin_id" class="chosen-select chzn-done" data-placeholder="Select Course" style="width: 300px; ">
                        <option  value="">--select--</option>
                        <option selected value="' . $this->session->userdata('user_id') . '">' . $this->session->userdata('username') . '</option>
                        
                        </select>';
            });
            $crud->callback_before_insert(array($this, 'course_callback'));
        }

        $this->unset_crud_fields('created');

        $this->mTitle = 'MCQ Subjects';
        $this->render_crud();
    }

    function course_callback($post_array)
    {
        $post_array['admin_id'] = $post_array['admin_id'];
        return $post_array;
    }

    // MCQ ===============================================================
    public function mcq()
    {
        $crud = $this->generate_crud('mcq');

        if ($this->session->userdata('user_id') == 1) {
            //$crud->where('admin_id',$this->session->userdata('user_id'));
        } else {
            $crud->where('mcq.admin_id', $this->session->userdata('user_id'));
        }

        $crud->columns('title', 'tquestion', 'duration', 'correct_marks', 'wrong_marks', 'max_attempt', 'admin_id');
        $crud->display_as('title', 'MCQ');
        $crud->display_as('tquestion', 'Total Question');
        $crud->display_as('admin_id', 'Admin');

        $crud->set_relation('admin_id', 'admin_users', 'username');

        $crud->set_rules('admin_id', 'Admin', 'required');
        $crud->set_rules('title', 'MCQ Title', 'required');
        $crud->set_rules('tquestion', 'Total Question', 'required');
        $crud->set_rules('duration', 'Duration', 'required');
        $crud->set_rules('correct_marks', 'Correcr Marks', 'required');
        $crud->set_rules('wrong_marks', 'Wrong Marks', 'required');

        if ($this->session->userdata('user_id') == 1) {
        } else {
            $crud->add_action('Add Question', base_url('assets/grocery_crud/themes/flexigrid/css/images/add.png'), 'admin/quiz/questions', 'pull-left');
            // Add Field Admin
            $crud->callback_add_field('admin_id', function () {
                return '<select id="admin_id" name="admin_id" class="chosen-select chzn-done" data-placeholder="Select Course" style="width: 300px; ">
                        <option  value="">--select--</option>
                        <option selected value="' . $this->session->userdata('user_id') . '">' . $this->session->userdata('username') . '</option>
                        </select>';
            });
            $crud->callback_add_field('updated_at', function () {
                return '<input name="last_update" type="text" value="' . uniqid() . '" readonly /><br>'
                    . '<i style="color:red;">auto generated field plz refresh if its blank!!!</i>';
            });

            $crud->callback_edit_field('updated_at', function () {
                return '<input name="last_update" type="text" value="' . uniqid() . '" readonly /><br>'
                    . '<i style="color:red;">auto generated field plz refresh if its blank!!!</i>';
            });
            // Edit Field Admin
            $crud->callback_edit_field('admin_id', function () {
                return '<select id="admin_id" name="admin_id" class="chosen-select chzn-done" data-placeholder="Select Course" style="width: 300px; ">
                        <option  value="">--select--</option>
                        <option selected value="' . $this->session->userdata('user_id') . '">' . $this->session->userdata('username') . '</option>
                        </select>';
            });

            $crud->callback_before_insert(array($this, 'chapter_callback'));
        }

        $this->mTitle = 'MCQ';
        $this->render_crud();
    }

    public function result()
    {
        $this->mViewData['p_type']  = "list";
        $this->mViewData['message'] = $this->session->flashdata('upload_success');

        $admin_id = $this->session->userdata('user_id');
        $query_c  = $this->db->where('admin_id', $admin_id)->get('mcq');
        $courses = [];

        if ($query_c->num_rows() > 0) {
            $courses  = $query_c->result();
        }

        $query_u  = $this->db->select('id,username')->where('admin_id', $admin_id)->get('users');
        $users = [];

        if ($query_u->num_rows() > 0) {
            $users  = $query_u->result();
        }

        $query2 = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('tags');
        $this->mViewData['groups']  = $query2->result();

        $query_2 = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('courses');
        $this->mViewData['courses'] = $query_2->result();

        // Quiz list 
        $query_3 = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('mcq');
        $this->mViewData['quizs'] = $query_3->result();

        // Quiz list 
        $query_4 = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('mcq_subjects');
        $this->mViewData['quiz_subjects'] = $query_4->result();


        $this->mViewData['users']   = $users;
        $this->mTitle              .= 'Quiz | Result Export';

        $this->render('quiz/result_list');
    }


    public function upload_file()
    {

        $quiz_id = $this->input->post('quiz_id');
        $subject_id = $this->input->post('subject');
        $name = basename(__FILE__, '.php');
        // $name="www";
        // $source = __DIR__ . "/{$name}.docx";
        $upload_folder = "uploads/quiz/";
        $files = $_FILES['questions_upload'];
        $upload_image = $this->upload_single_image($files, $upload_folder);
        $thumb_url = FCPATH . "uploads/quiz/" . $upload_image;
        // chmod($thumb_url,0777);
        $data = array(
            'quiz_id' => $quiz_id,
            'file_name' => $thumb_url,
            'type' => 'quiz',

        );

        $this->db->insert('upload_mcq_file', $data);
        $insert_id = $this->db->insert_id();
        $file_url  =  $this->Main_model->get_where('upload_mcq_file', 'id', $insert_id, 'id,file_name');

        $path = $file_url[0]->file_name;
        $phpWord = \PhpOffice\PhpWord\IOFactory::load($path);
        // Adding an empty Section to the document...
        $section = $phpWord->addSection();

        // Adding Text element to the Section having font styled by default...
        // $section->addText($data);


        // $name=basename(__FILE__, '.php');

        $_file_name = explode(".", $upload_image);
        $orig_name = $_file_name[0];
        $source = FCPATH . "/uploads/quiz/{$orig_name}.html";

        // Saving the document as HTML file...
        $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');
        $objWriter->save($source);


        // $path = base_url()."uploads/quiz/www.html";
        $file_name = base_url() . "uploads/quiz/{$orig_name}.html";
        $pagecontents = file_get_contents($file_name);

        // $a = htmlspecialchars($pagecontents);

        preg_match_all('#<table (.*?)</table>#is', $pagecontents, $_all_functions);
        $function_keys = $_all_functions[1];

        foreach ($function_keys as $key => $value) {
            // print_r($value);
            preg_match_all('#<tr>(.*?)</tr>#is', $value, $match);
            $matches = $match[1];
            // print_r($matches);exit;
            # print_r(preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[3]));exit;
            $data = array(
                'quiz_id' => $quiz_id,
                'subject_id' => $subject_id,
                'no_of_options' => preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[0]),
                'question' => preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[1]),
                'correct_ans' => html_entity_decode(preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[2])),
                // 'level'=>html_entity_decode(preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matches[4])),
                'question_uid' => uniqid(),
            );

            $this->db->insert('quiz_questions', $data);
            $insert_id = $this->db->insert_id();
            // print_r($matches);exit;

            $i = 1;
            foreach ($matches as $key => $matche) {
                // print_r($key);
                // var_dump($key);exit;
                if (($key == 0) || ($key == 1) || ($key == 2)) {
                } else {


                    $option_data = array(
                        'quiz_question_id' => $insert_id,
                        'no_of_options' => $i,
                        'options' => preg_replace("/<td(.+?)>(.+?)<\/td>/is", "<b>$2</b>", $matche),
                        // 'practice_question_id'=>$insert_id,
                        // 'practice_question_id'=>$insert_id,
                    );
                    $this->db->insert('quiz_options', $option_data);
                    $i++;
                }
            }

            $get_quest = $this->Main_model->get_where('quiz_questions', 'id', $insert_id, 'correct_ans');
            $correct_opt = $get_quest[0]->correct_ans;

            $a = strip_tags($correct_opt);
            $c =  preg_replace("/\r|\n/", "", $a);
            // print_r($c);exit;
            $practice_quiz = $this->Main_model->get_where_as('quiz_options', ['no_of_options' => $c, 'quiz_question_id' => $insert_id], 'id,options');
            $update_data = array(
                'correct_option_id' => trim($practice_quiz[0]->id)
            );
            $this->db->where('id', $insert_id);
            $this->db->update('quiz_questions', $update_data);
        }


        $this->session->set_flashdata('alert', '<div class="alert alert-success" role="alert">Uploaded Successfully.</div>');
        // redirect('admin/quiz');   
        redirect('admin/quiz/questions/' . $quiz_id);
    }

    public function questions($mcq_id = null)
    {
        if (empty($mcq_id)) {
            redirect('admin/quiz/mcq', 'refresh');
        }

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        $mid = $this->security->xss_clean($this->input->post('mid'));

        $this->form_validation->set_rules('questions', 'Question', 'required');
        $this->form_validation->set_rules('ansa', 'Answer A', 'required');
        $this->form_validation->set_rules('ansb', 'Answer B', 'required');
        $this->form_validation->set_rules('ansc', 'Answer C', 'required');
        $this->form_validation->set_rules('ansd', 'Answer D', 'required');
        $this->form_validation->set_rules('correct_ans', 'Correct Answer', 'required');

        if ($this->form_validation->run() == FALSE) {
            $this->mViewData['mcq_id'] = $mcq_id;
            $this->mViewData['mcqSubjects'] = false;
            $mcqSubjectsQry = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('mcq_subjects');
            if ($mcqSubjectsQry->num_rows() > 0) {
                $this->mViewData['mcqSubjects'] = $mcqSubjectsQry->result();
            }

            $this->mViewData['mcq_id'] = $mcq_id;

            $this->mTitle .= 'MCQ questions';

            $this->render('quiz/mcq_questions');
        } else {
            $questions   = $this->input->post('questions');
            $ansa        = $this->input->post('ansa');
            $ansb        = $this->input->post('ansb');
            $ansc        = $this->input->post('ansc');
            $ansd        = $this->input->post('ansd');
            $correct_ans = $this->input->post('correct_ans');

            $ans_aray = array($ansa, $ansb, $ansc, $ansd);

            $val = 0;

            foreach ($ans_aray as $ans) {
                if (!empty($ans)) {
                    $val++;
                }
            }

            $ques_uid = uniqid();

            $oaid = uniqid();
            $obid = uniqid();
            $ocid = uniqid();
            $odid = uniqid();

            $data_question = array(
                'mcq_id'        => $mcq_id,
                'questions'     => $questions,
                'choices'       => $val,
                'questions_uid' => $ques_uid,
                'qcode'         => NULL,
                'created_at'    => date('Y-m-d H:i:s')
            );

            $this->db->insert('mcq_questions', $data_question);

            switch ($val) {
                case 1:
                    $data_options1 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansa,
                        'option_uid' => $oaid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options1);
                    break;

                case 2:
                    $data_options1 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansa,
                        'option_uid' => $oaid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options1);
                    $data_options2 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansb,
                        'option_uid' => $obid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options2);
                    break;

                case 3:
                    $data_options1 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansa,
                        'option_uid' => $oaid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options1);
                    $data_options2 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansb,
                        'option_uid' => $obid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options2);
                    $data_options3 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansc,
                        'option_uid' => $ocid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options3);
                    break;

                case 4:
                    $data_options1 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansa,
                        'option_uid' => $oaid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options1);
                    $data_options2 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansb,
                        'option_uid' => $obid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options2);
                    $data_options3 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansc,
                        'option_uid' => $ocid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options3);
                    $data_options4 = array(
                        'questions_uid' => $ques_uid,
                        'choices' => $ansd,
                        'option_uid' => $odid,
                        'created_at' => date('Y-m-d H:i:s')
                    );
                    $this->db->insert('mcq_options', $data_options4);
                    break;

                default:
                    break;
            }

            switch ($correct_ans) {
                case "a":
                    $data_answer = array(
                        'questions_uid' => $ques_uid,
                        'option_uid' => $oaid
                    );
                    $this->db->insert('mcq_answers', $data_answer);
                    break;

                case "b":
                    $data_answer = array(
                        'questions_uid' => $ques_uid,
                        'option_uid' => $obid
                    );
                    $this->db->insert('mcq_answers', $data_answer);
                    break;

                case "c":
                    $data_answer = array(
                        'questions_uid' => $ques_uid,
                        'option_uid' => $ocid
                    );
                    $this->db->insert('mcq_answers', $data_answer);
                    break;

                case "d":
                    $data_answer = array(
                        'questions_uid' => $ques_uid,
                        'option_uid' => $odid
                    );
                    $this->db->insert('mcq_answers', $data_answer);
                    break;

                default:
                    break;
            }

            $this->session->set_flashdata('message', '<div class="alert alert-success background-success">' . $questions . '  Added Successfully</div>');
            redirect('admin/quiz/questions/' . $mcq_id . '', 'refresh');
        }
    }

    public function mcquestionsposts()
    {
        $mcq_id   = $this->input->post('mcq_id');
        $columns = array(
            0 => 'id',
            1 => 'questions',
        );
        $limit = $this->input->post('length');
        $start = $this->input->post('start');
        $order = $columns[$this->input->post('order')[0]['column']];
        $dir   = $this->input->post('order')[0]['dir'];
        $table = "quiz_questions";
        $title = "questions";
        $cid   = $this->input->post('mcq_id');
        $fid   = "quiz_id";

        $totalData     = $this->Main_model->all_subject_posts_count($table, $cid, $fid);
        $totalFiltered = $totalData;

        if (empty($this->input->post('search')['value'])) {
            $posts = $this->Main_model->all_subject_posts($limit, $start, $order, $dir, $table, $cid, $fid);
        } else {
            $search = $this->input->post('search')['value'];
            $posts = $this->Main_model->posts_subj_search($limit, $start, $search, $order, $dir, $table, $title, $cid, $fid);
            $totalFiltered = $this->Main_model->posts_subj_search_count($search, $table, $title, $cid, $fid);
        }

        $data = array();

        if (!empty($posts)) {
            $i = 1;
            foreach ($posts as $post) {
                $nestedData['id']               = $i;
                $nestedData['questions']        = $post->question;
                $nestedData['mcq_subject']         = $post->m_subject;
                // $nestedData['correct_answers']  = "<label class='text-c-blue label label-info'>" .  $correct_answer  . "</label>";
                $nestedData['Actions']          = "<a class='btn btn-primary btn-sm' href='" . base_url() . "admin/quiz/edit_questions/" . $mcq_id . "/" . $post->id . "'><i class='fa fa-edit'></i></a>&nbsp;&nbsp;&nbsp;&nbsp;<a class='btn btn-danger btn-sm' href='" . base_url() . "admin/quiz/question_delete/" . $mcq_id . "/" . $post->id . "'><i class='fa fa-trash'></i></a>";

                $i++;

                $data[] = $nestedData;
            }
        }

        $json_data = array(
            "draw" => intval($this->input->post('draw')),
            "recordsTotal" => intval($totalData),
            "recordsFiltered" => intval($totalFiltered),
            "data" => $data
        );

        echo json_encode($json_data);
    }

    public function edit_questions($mcq_id, $q_id)
    {
        // echo "helo";exit;
        if (empty($mcq_id)) {
            redirect('admin/quiz/mcq', 'refresh');
        }

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        $mid = $this->security->xss_clean($this->input->post('mid'));

        $this->form_validation->set_rules('questions', 'Question', 'required');
        $this->form_validation->set_rules('correct_opt', 'correct opt', 'required');


        if ($this->form_validation->run() == FALSE) {

            $this->mViewData['mcq_id'] = $mcq_id;

            $this->mTitle .= 'MCQ questions';
            $this->mViewData['quiz_questions'] = $this->Main_model->get_where('quiz_questions', 'id', $q_id, 'id,question,correct_ans');
            $this->mViewData['quiz_options'] = $this->Main_model->get_where('quiz_options', 'quiz_question_id', $q_id, 'id,options');
            $this->render('quiz/edit_questions');
        } else {
            $questions = $this->input->post('questions');
            $correct_opt = $this->input->post('correct_opt');
            $data = array(
                'question' => $questions,
                'correct_ans' => $correct_opt,
            );

            $this->Main_model->update('quiz_questions', $data, ['id' => $q_id]);
            $this->session->set_flashdata('message', '<div class="alert alert-success background-danger" role="alert">Questions Updated Successfully!</div>');
            redirect('admin/quiz/edit_questions/' . $mcq_id . '/' . $q_id, 'refresh');
        }
    }

    public function edit_option($opton_id)
    {
        // echo "helo";exit;


        // $mid = $this->security->xss_clean($this->input->post('mid'));

        $this->form_validation->set_rules('option', 'option', 'required');
        // $this->form_validation->set_rules('correct_opt', 'correct opt', 'required');


        if ($this->form_validation->run() == FALSE) {

            $this->mTitle .= 'Edit Option';

            $this->mViewData['quiz_options'] = $this->Main_model->get_where('quiz_options', 'id', $opton_id, 'id,options');
            $this->render('quiz/edit_option');
        } else {
            $option = $this->input->post('option');

            $data = array(
                'options' => $option,

            );

            $this->Main_model->update('quiz_options', $data, ['id' => $opton_id]);
            $this->session->set_flashdata('message', '<div class="alert alert-success background-danger" role="alert">Questions Updated Successfully!</div>');
            redirect('admin/quiz/edit_option/' . $opton_id, 'refresh');
        }
    }

    public function question_delete($mcq_id = NULL, $q_id = NULL)
    {
        if (!$mcq_id && !$q_id) {
            redirect('admin/quiz/mcq', 'refresh');
        }

        if (!$q_id) {
            redirect('admin/quiz/questions/' . $mcq_id . '', 'refresh');
        }

        $uploads = $this->Main_model->get_where('quiz_options', 'quiz_question_id', $q_id, 'id,options');
        if (!empty($uploads)) {
            $this->Main_model->delete('quiz_options', ['quiz_question_id' => $q_id]);
        }

        $upload1 = $this->Main_model->get_where('quiz_questions', 'id', $q_id, 'id');
        if (!empty($upload1)) {
            $this->Main_model->delete('quiz_questions', ['id' => $q_id]);
        }
        redirect('admin/quiz/questions/' . $mcq_id . '', 'refresh');
    }
    // MCQ ===============================================================




    function upload_single_image($files, $upload_folder)
    {

        $data = array();
        // If file upload form submitted
        if (!empty($files['name'])) {

            $_FILES['file']['name']     = time() . $files['name'];
            $_FILES['file']['type']     = $files['type'];
            $_FILES['file']['tmp_name'] = $files['tmp_name'];
            $_FILES['file']['error']     = $files['error'];
            $_FILES['file']['size']     = $files['size'];

            $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); //get extension

            if (!file_exists($upload_folder)) {

                mkdir($upload_folder, 0777, true);
            }

            $uploadPath = $upload_folder;
            move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath . $_FILES['file']['name']);

            return $_FILES['file']['name'];
        }

        return false;
    }


    public function index()
    {
        $this->mViewData['p_type']  = "list";
        $this->mViewData['message'] = $this->session->flashdata('upload_success');

        $admin_id = $this->session->userdata('user_id');
        $query_c  = $this->db->where('admin_id', $admin_id)->get('courses');

        $courses = [];

        if ($query_c->num_rows() > 0) {
            $courses  = $query_c->result();
        }

        $this->mViewData['courses'] = $courses;
        $this->mTitle              .= ' | Upload Lectures List';

        $this->render('quiz/list');
    }

    public function get_chapter()
    {
        if ($this->input->post('subject_id') != '') {
            $sid = $this->input->post('subject_id');
            $this->db->where('subject_id', $sid);
            $this->db->where('admin_id', $this->session->userdata('user_id'));
            $query = $this->db->get('chapters');

            foreach ($query->result() as $result) {
                echo '<option value="' . $result->id . '">' . $result->chapter . '</option>';
            }
        }
    }

    public function get_subject()
    {
        if ($this->input->post('course_id') != '') {
            $cid = $this->input->post('course_id');
            $this->db->where('course_id', $cid);
            $this->db->where('admin_id', $this->session->userdata('user_id'));
            $query = $this->db->get('subjects');

            foreach ($query->result() as $result) {
                echo '<option value="' . $result->id . '">' . $result->subject . '</option>';
            }
        }
    }

    function delete_selection()
    {
        $id_array = array();
        $selection = $this->input->post("selection", TRUE);
        $id_array = explode("|", $selection);

        foreach ($id_array as $item) :
            if ($item != '') :
                //DELETE ROW
                $this->db->where('id', $item);
                $this->db->delete('lectures');
            endif;
        endforeach;
    }

    public function upload1()
    {
        $arr = $this->input->post('files');
        $chapter = $this->input->post('chapter');

        $this->db->order_by("id", "desc");
        $query = $this->db->get('lectures', 1);

        if (isset($query->result_array()[0])) {
            $pos = $query->result_array()[0]['pos'] + 0;
        } else {
            $pos = 0;
        }

        foreach ($arr as $r) {
            $name = preg_replace('/\s+/', '', $r);
            $pos = $pos + 1;
            $data = array(
                'file_name' => $this->input->post('file_name') . '_' . $pos,
                'name' => $name,
                'chapter_id' => $chapter,
                'pos' => $pos,
                'last_update' => uniqid(),
                'admin_id' => $this->session->userdata('user_id')
            );

            $result = $this->db->insert('lectures', $data);
        }
        if ($result) {
            echo true;
        }
    }

    // public function upload()
    // {
    //     if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    //         // $total_file = count($_FILES['upload_file']['name']);
    //         $chapter = $this->input->post('chapter');
    //         $mcq_id  = $this->input->post('mcq_id');

    //         if (!$chapter && !$mcq_id) {
    //             $this->session->set_flashdata('upload_success', 'Chapter & MCQ both are required!');

    //             redirect('admin/quiz/upload');
    //         }

    //         $this->db->order_by("id", "desc");
    //         $query = $this->db->get('lectures', 1);

    //         if (isset($query->result_array()[0])) {
    //             $pos = $query->result_array()[0]['pos'] + 0;
    //         } else {
    //             $pos = 0;
    //         }
    //         // echo '<pre>';
    //         // print_r($mcq_id);exit;
    //         for ($i = 0; $i < count($mcq_id); $i++) {
    //             // $name = preg_replace('/\s+/', '', $_FILES['upload_file']['name'][$i]);
    //             $__exp = explode('|', $mcq_id[$i]);

    //             $quiz_id  = $__exp[0];
    //             $name     = $__exp[1];

    //             $pos = $pos + 1;

    //             $data = array(
    //                 'quiz_id'     => $quiz_id,
    //                 'name'        => $name,
    //                 'chapter_id'  => $chapter,
    //                 'pos'         => $pos,
    //                 'last_update' => uniqid(),
    //                 'admin_id'    => $this->session->userdata('user_id'),
    //                 'e_type'      => 'mcq'
    //             );

    //             $result = $this->db->insert('lectures', $data);
    //         }

    //         if ($result) {
    //             $this->session->set_flashdata('upload_success', 'Well done! You successfully Uploaded Files.');

    //             redirect('admin/quiz/upload');
    //         }
    //     } else {
    //         $this->mViewData['message'] = $this->session->flashdata('upload_success');

    //         $courses = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('courses');
    //         $this->mViewData['course'] = $courses->result();

    //         $quiz = $this->db->select('id, title')->where('admin_id', $this->session->userdata('user_id'))->get('mcq');
    //         $this->mViewData['quiz'] = $quiz->result();

    //         $this->mTitle .= 'Upload Quiz';
    //         $this->render('quiz/upload');
    //     }
    // }

    public function pdf_upload()
    {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $chapter = $this->input->post('chapter');
            $doc_id  = $_FILES['doc_id'];

            $total_file = count($_FILES['doc_id']['name']);
            // echo '<pre>';
            // print_r($mcq_id);exit;
            if (!$chapter || !$_FILES['doc_id'] || $total_file == 0) {
                $this->session->set_flashdata('e_message', '<div class="alert alert-danger">Chapter & MCQ both are required!</div>');

                redirect('admin/quiz/pdf_upload');
            }

            $this->db->order_by("id", "desc");
            $query = $this->db->get('lectures', 1);

            if (isset($query->result_array()[0])) {
                $pos = $query->result_array()[0]['pos'] + 0;
            } else {
                $pos = 0;
            }

            $aff_r = 0;
            $upload_error = NULL;

            for ($i = 0; $i < $total_file; $i++) {
                $name = NULL;

                $_FILES['userfile']['name'] = $doc_id['name'][$i];
                $_FILES['userfile']['type'] = $doc_id['type'][$i];
                $_FILES['userfile']['tmp_name'] = $doc_id['tmp_name'][$i];
                $_FILES['userfile']['error'] = $doc_id['error'][$i];
                $_FILES['userfile']['size'] = $doc_id['size'][$i];

                $config['upload_path']   = './assets/uploads/document/';
                $config['allowed_types'] = 'pdf';

                $this->load->library('upload', $config);

                if (!$this->upload->do_upload('userfile')) {
                    $upload_error = $this->upload->display_errors();

                    goto R_Error;
                } else {
                    $upload_success = $this->upload->data();

                    $name = $upload_success['file_name'];
                }

                $pos = $pos + 1;

                $data = array(
                    'name'        => $name,
                    'chapter_id'  => $chapter,
                    'pos'         => $pos,
                    'last_update' => uniqid(),
                    'admin_id'    => $this->session->userdata('user_id'),
                    'e_type'      => 'doc'
                );

                $result = $this->db->insert('lectures', $data);
                $aff_r += $this->db->affected_rows();
            }

            if ($result) {
                $this->session->set_flashdata('e_message', '<div class="alert alert-success">Total ' . $aff_r . ' PDF file successfully Uploaded</div>');

                redirect('admin/quiz/pdf_upload');
            }

            R_Error:
            if ($upload_error) {
                $this->session->set_flashdata('e_message', '<div class="alert alert-danger">Total ' . $aff_r . ' <br/>Error: ' . $upload_error . '</div>');

                redirect('admin/quiz/pdf_upload');
            }
        } else {
            $this->mViewData['message'] = $this->session->flashdata('upload_success');

            $courses = $this->db->where('admin_id', $this->session->userdata('user_id'))->get('courses');
            $this->mViewData['course'] = $courses->result();

            $quiz = $this->db->select('id, title')->where('admin_id', $this->session->userdata('user_id'))->get('mcq');
            $this->mViewData['quiz'] = $quiz->result();

            $this->mTitle .= 'Upload Pdf';
            $this->render('quiz/pdf_upload');
        }
    }

    public function lecture_posts()
    {
        $columns = array(
            0 => 'id',
            1 => 'file_name',
            2 => 'name',
            3 => 'admin',
            4 => 'pos',
            5 => 'course',
            6 => 'subject',
            7 => 'chapter',
            8 => 'uploaded',
            9 => 'last_update',
        );

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        $course_id  = $this->input->post('course_id');
        $subject_id = $this->input->post('subject_id');
        $chapter_id = $this->input->post('chapter_id');

        $limit = $this->input->post('length');
        $start = $this->input->post('start');
        $order = $columns[$this->input->post('order')[0]['column']];
        $dir   = $this->input->post('order')[0]['dir'];

        $totalData     = $this->lecture_model->lecture_posts_count($course_id, $subject_id, $chapter_id, $admin_id);
        $totalFiltered = $totalData;

        if (empty($this->input->post('search')['value'])) {
            $posts = $this->lecture_model->lecture_posts($limit, $start, $order, $dir, $course_id, $subject_id, $chapter_id, $admin_id);
        } else {
            $search = $this->input->post('search')['value'];
            $posts =  $this->lecture_model->lecture_posts_search($limit, $start, $search, $order, $dir, $course_id, $subject_id, $chapter_id, $admin_id);
            $totalFiltered = $this->lecture_model->lecture_posts_search_count($search, $course_id, $subject_id, $chapter_id, $admin_id);
        }

        $data = array();

        if (!empty($posts)) {
            $i = 1;

            foreach ($posts as $post) {
                $nestedData['id'] = '<input type="checkbox" class="_check_in" value="' . $post->id . '">';
                $i++;

                $nestedData['file_name']     = '<span style="font-size: 12px;">' . $post->file_name . '</span>';
                $nestedData['name'] = '<span style="font-size: 12px;">' . $post->name . '</span>';
                $nestedData['admin']         = '<span style="font-size: 12px;">' . $post->admin . '</span>';
                $nestedData['pos']           = '<span style="font-size: 12px;">' . $post->pos . '</span>';
                $nestedData['course']        = '<span style="font-size: 12px;">' . $post->course . '</span>';
                $nestedData['subject']       = '<span style="font-size: 12px;">' . $post->subject . '</span>';
                $nestedData['chapter']       = '<span style="font-size: 12px;">' . $post->chapter . '</span>';

                $nestedData['uploaded']    = '<span style="font-size: 12px;">' . date('m F Y', strtotime($post->uploaded_at)) . '</span>';
                $nestedData['last_update'] = '<span style="font-size: 12px;">' . $post->last_update . '</span>';

                $nestedData['Actions'] = "<a class='btn btn-primary btn-sm' href='" . base_url('admin/lecture/edit_lecture/' . $post->id) . "' title='Delete'>Edit</a>&nbsp;&nbsp;&nbsp;";

                $nestedData['Actions'] .= "<a class='btn btn-danger btn-sm' href='" . base_url('admin/lecture/delete_lecture/' . $post->id) . "' title='Delete'>Trash</a>";

                $data[] = $nestedData;
            }
        }

        $json_data = array(
            "draw"            => intval($this->input->post('draw')),
            "recordsTotal"    => intval($totalData),
            "recordsFiltered" => intval($totalFiltered),
            "data"            => $data
        );

        echo json_encode($json_data);
    }

    public function delete_lecture($lec_id = null)
    {
        if (empty($lec_id)) {
            redirect('admin/lecture/index', 'refresh');
        }

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        $this->db->where('lectures.id', $lec_id);

        if (!empty($admin_id)) {
            $this->db->where('lectures.admin_id', $admin_id);
        }

        $query = $this->db->get('lectures', 1);

        if ($query->num_rows() > 0) {
            $this->db->where('lectures.id', $lec_id);

            if (!empty($admin_id)) {
                $this->db->where('lectures.admin_id', $admin_id);
            }

            $this->db->delete('lectures');

            if ($this->db->affected_rows() > 0) {
                $this->session->set_flashdata('message', '<div class="alert alert-success" role="alert">Record deleted!</div>');
                redirect('admin/lecture/index', 'refresh');
            }
        }

        $this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Record did not found!</div>');
        redirect('admin/lecture/index', 'refresh');
    }

    public function delete_lecture_all()
    {
        $arr = [];

        if (empty($this->session->userdata('user_id'))) {
            $arr['status']      = 0;
            $arr['message']     = '<div class="alert alert-danger" role="alert">You session has expired!,/div>';
            $arr['redirect_to'] = base_url('admin/login');

            goto D_L_A;
        }

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        $lectures = $this->input->post('lectures');

        if ($lectures) {
            $affected_rows = 0;

            foreach ($lectures as $lecture) {
                $this->db->where('lectures.id', $lecture);

                if (!empty($admin_id)) {
                    $this->db->where('lectures.admin_id', $admin_id);
                }

                $this->db->delete('lectures');

                $affected_rows += $this->db->affected_rows();
            }

            if ($affected_rows > 0) {
                $arr['status']      = 1;
                $arr['message']     = '';

                $this->session->set_flashdata('message', '<div class="alert alert-success" role="alert">' . $affected_rows . ' record successfully deleted!</div>');

                goto D_L_A;
            }

            $arr['status']      = 0;
            $arr['message']     = '<div class="alert alert-danger" role="alert">Something went wrong!/div>';
        }

        D_L_A:
        echo json_encode($arr);
    }

    public function edit_lecture($lec_id = null)
    {
        if (empty($lec_id)) {
            redirect('admin/lecture/index', 'refresh');
        }

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        if (isset($_POST) && !empty($_POST)) {
            $file_name = $this->input->post('file_name');

            if (empty($file_name)) {
                $this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Kindly enter file name!</div>');
                redirect('admin/lecture/edit_lecture/' . $lec_id, 'refresh');
            }

            $this->db->where('lectures.id !=', $lec_id);
            $this->db->where('lectures.file_name', $file_name);

            if (!empty($admin_id)) {
                $this->db->where('lectures.admin_id', $admin_id);
            }

            $query_c = $this->db->get('lectures', 1);

            if ($query_c->num_rows() == 0) {
                $u_data['file_name']   = $file_name;
                $u_data['last_update'] = uniqid();

                $this->db->where('lectures.id', $lec_id);

                if (!empty($admin_id)) {
                    $this->db->where('lectures.admin_id', $admin_id);
                }

                $this->db->set($u_data);
                $this->db->update('lectures');

                if ($this->db->affected_rows() > 0) {
                    $this->session->set_flashdata('message', '<div class="alert alert-success" role="alert">Record updated successfully!</div>');
                    redirect('admin/lecture/index', 'refresh');
                } else {
                    $this->session->set_flashdata('message', '<div class="alert alert-info" role="alert">You have made no changes!</div>');
                    redirect('admin/lecture/edit_lecture/' . $lec_id, 'refresh');
                }
            } else {
                $this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">This file name is duplicate, Kindly enter different file name!</div>');
                redirect('admin/lecture/edit_lecture/' . $lec_id, 'refresh');
            }
        } else {
            $this->db->select('lectures.*, chapters.chapter, subjects.subject, courses.course');
            $this->db->where('lectures.id', $lec_id);
            $this->db->join('chapters', 'chapters.id = lectures.chapter_id');
            $this->db->join('subjects', 'subjects.id = chapters.subject_id');
            $this->db->join('courses', 'courses.id = subjects.course_id');

            if (!empty($admin_id)) {
                $this->db->where('lectures.admin_id', $admin_id);
            }

            $query = $this->db->get('lectures', 1);

            if ($query->num_rows() > 0) {
                $this->mViewData['p_type']   = "edit";
                $this->mViewData['lecture']  = $query->row();
                $this->mTitle               .= ' | Edit Lecture';

                $this->render('lecture/list');
            } else {
                $this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Record did not found!</div>');
                redirect('admin/lecture/index', 'refresh');
            }
        }
    }

    public function get_subject_by_id()
    {
        $arr = [];

        if (empty($this->session->userdata('user_id'))) {
            $arr['status']      = 0;
            $arr['message']     = '<span class="text-danger">You session has expired!,</span>';
            $arr['redirect_to'] = base_url('admin/login');

            goto GSBI;
        }

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        $course_id = $this->input->post('course_id');

        if ($course_id) {
            $this->db->select('subjects.id, subjects.subject');
            $this->db->where('subjects.course_id', $course_id);

            if (!empty($admin_id)) {
                $this->db->where('subjects.admin_id', $admin_id);
            }

            $query_c = $this->db->get('subjects');

            if ($query_c->num_rows() > 0) {
                $results = $query_c->result();

                $arr['status']      = 1;
                $arr['return_data'] = $results;
                $arr['message']     = '<span class="text-success">Subjects feched successfully!</span>';

                goto GSBI;
            }

            $arr['status']      = 1;
            $arr['message']     = '<span class="text-danger">Records did not found!</span>';
            $arr['return_data'] = [];
        }

        GSBI:
        echo json_encode($arr);
    }

    public function get_chapter_by_id()
    {
        $arr = [];

        if (empty($this->session->userdata('user_id'))) {
            $arr['status']      = 0;
            $arr['message']     = '<span class="text-danger">You session has expired!,</span>';
            $arr['redirect_to'] = base_url('admin/login');

            goto GCBI;
        }

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        $subject_id = $this->input->post('subject_id');

        if ($subject_id) {
            $this->db->select('chapters.id, chapters.chapter');
            $this->db->where('chapters.subject_id', $subject_id);

            if (!empty($admin_id)) {
                $this->db->where('chapters.admin_id', $admin_id);
            }

            $query_c = $this->db->get('chapters');

            if ($query_c->num_rows() > 0) {
                $results = $query_c->result();

                $arr['status']      = 1;
                $arr['return_data'] = $results;
                $arr['message']     = '<span class="text-success">Chapters feched successfully!</span>';

                goto GCBI;
            }

            $arr['status']      = 0;
            $arr['message']     = '<span class="text-danger">Records did not found!</span>';
            $arr['return_data'] = [];
        }

        GCBI:
        echo json_encode($arr);
    }


    public function mcq_result_posts()
    {
        $columns = array(
            0 => 'id',
            1 => 'pos',
            2 => 'lecture',
            3 => 'e_type',
            4 => 'admin',
            5 => 'course',
            6 => 'subject',
            7 => 'chapter',
            8 => 'str_date',
            9 => 'end_date',
            10 => 'noplay',
            11 => 'user_id',
            12 => 'reg_date',
        );

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        $search_array = array(
            'user_id' => $this->input->post('user_id'),
            'tag_id' => $this->input->post('tag_id'),
            'mcq_id' => $this->input->post('mcq_id'),
        );
        // $user_id    = $this->input->post('user_id');
        // $tag_id    = $this->input->post('tag_id');
        // $quiz_id    = $this->input->post('quizs_id');
        // var_dump($tag_id . '-' . $quiz_id);
        // exit;

        $limit = $this->input->post('length');
        $start = $this->input->post('start');
        $order = $columns[$this->input->post('order')[0]['column']];
        $dir   = $this->input->post('order')[0]['dir'];

        $totalData     = $this->lecture_model->check_result_posts_count($search_array, $admin_id);
        // print_r($totalData);exit;
        $totalFiltered = $totalData;

        if (empty($this->input->post('search')['value'])) {
            $posts = $this->lecture_model->check_result_posts($limit, $start, $order, $dir, $search_array, $admin_id);
        } else {
            $search = $this->input->post('search')['value'];
            $posts =  $this->lecture_model->check_result_posts_search($limit, $start, $search, $order, $dir, $search_array, $admin_id);
            $totalFiltered = $this->lecture_model->check_result_posts_search_count($search, $search_array, $admin_id);
        }

        $data = array();

        if (!empty($posts)) {
            $i = 1;
            // print_r($posts);exit;
            foreach ($posts as $post) {

                $nestedData['id'] = '<input type="checkbox" class="_check_in" value="' . $post->id . '">';
                $i++;

                $nestedData['username']     = '<span style="font-size: 12px;">' . $post->username . '</span>';
                $nestedData['title'] = '<span style="font-size: 12px;">' . $post->title . '</span>';
                $nestedData['total_time'] = '<span style="font-size: 12px;">' . $post->total_time . '</span>';
                $nestedData['accuracy']         = '<span style="font-size: 12px;">' . $post->accuracy . '</span>';

                $nestedData['reg_date']    = '<span style="font-size: 12px;">' . date('jS F, Y', strtotime($post->created_at)) . '</span>';

                $nestedData['Actions'] = "<a class='btn btn-sucess btn-sm result_view' data-id=" . $post->id . " href='javascript:;' title='view'><i class='fa fa-eye fa-lg'></i></a>&nbsp;<a class='btn btn-danger btn-sm dtldata' data-id=" . $post->id . " href='" . base_url('admin/quiz/delete_result/' . $post->id) . "' title='view'><i class='fa fa-trash'></i></a>";

                $data[] = $nestedData;
            }
        }



        $json_data = array(
            "draw"            => intval($this->input->post('draw')),
            "recordsTotal"    => intval($totalData),
            "recordsFiltered" => intval($totalFiltered),
            "data"            => $data
            // "data"            => $this->db->last_query()
        );

        echo json_encode($json_data);
    }


    public function pdf_result($id)
    {

        $query_u  = $this->db->select('*')->where('mcq_result_id', $id)->get('mcq_results_gp');
        $query  = $this->db->select('*')->where('id', $id)->get('mcq_results')->row();
        $user  = $this->db->select('*')->where('id', $query->user_id)->get('users')->row();

        // print_r($users);exit;

        $html_content = '<div style="width:100%;"><div style="max-width: 1160px; margin: auto; margin-top: 30px; margin-bottom: 30px;"><b>Name:' . $user->username . "</b>";
        $html_content .= '<table style=" font-family: arial, sans-serif;
      border-collapse: collapse;
      width: 100%;">';
        $html_content .= '<tr>
                            <th>Subjects</th>
                            <th>Max. Marks</th>
                            <th>Obtained Marks</th>
                            <th>Percentage</th>
                          </tr>';





        if ($query_u->num_rows() > 0) {
            $users  = $query_u->result();
            $total_mark = 0;
            $correct_marks = 0;
            foreach ($users as $user) {
                $total_mark = $total_mark + $user->total_marks;
                $correct_marks = $correct_marks + $user->correct_marks;

                $html_content .= '  <tr>
                                        <td>' . $user->subject_name . '</td>
                                        <td>' . $user->total_marks . '</td>
                                        <td>' . $user->correct_marks . '</td>
                                        <td>' . (($user->correct_marks * 100) / $user->total_marks) . '</td>
                                      </tr>
                                ';


                // $html_content .= 'subject name:'.$user->subject_name;
            }

            $html_content .= '<hr></hr>';
            $html_content .= '<tr><td></td><td> Total- ' . $total_mark . '</td><td> Total- ' . $correct_marks . '</td><td> Total- ' . (($correct_marks * 100) / $total_mark) . '</td></tr>';
            $html_content .= '</table>';
        }


        // $customer_id = $this->uri->segment(3);
        // $html_content = '<h3 align="center">Convert HTML to PDF in CodeIgniter using Dompdf</h3>';
        // $html_content .= $this->htmltopdf_model->fetch_single_details($customer_id);
        $this->pdf->loadHtml($html_content);
        $this->pdf->render();
        //$this->pdf->stream("" . $customer_id . ".pdf", array("Attachment" => 0));
    }


    public function delete_result($id)
    {
        $this->db->where('id', $id);
        $this->db->delete('mcq_results');

        $this->db->where('mcq_result_id', $id);
        $this->db->delete('mcq_results_gp');

        $this->session->set_flashdata('message', '<div class="alert alert-danger" role="alert">Delete Successfully!</div>');
        redirect('admin/quiz/result', 'refresh');
    }


    public function delete_result_all()
    {
        $arr = [];

        if (empty($this->session->userdata('user_id'))) {
            $arr['status']      = 0;
            $arr['message']     = '<div class="alert alert-danger" role="alert">You session has expired!,/div>';
            $arr['redirect_to'] = base_url('admin/login');

            goto D_L_A;
        }

        if ($this->session->userdata('user_id') == 1) {
            $admin_id = null;
        } else {
            $admin_id = $this->session->userdata('user_id');
        }

        $lectures = $this->input->post('lectures');

        if ($lectures) {
            $affected_rows = 0;

            foreach ($lectures as $lecture) {
                $this->db->where('mcq_results.id', $lecture);

                $this->db->delete('mcq_results');

                $affected_rows += $this->db->affected_rows();

                $this->db->where('mcq_results_gp.mcq_result_id', $lecture);

                $this->db->delete('mcq_results_gp');

                $affected_rows += $this->db->affected_rows();
            }

            if ($affected_rows > 0) {
                $arr['status']      = 1;
                $arr['message']     = '';

                $this->session->set_flashdata('message', '<div class="alert alert-success" role="alert">' . $affected_rows . ' record successfully deleted!</div>');

                goto D_L_A;
            }

            $arr['status']      = 0;
            $arr['message']     = '<div class="alert alert-danger" role="alert">Something went wrong!/div>';
        }

        D_L_A:
        echo json_encode($arr);
    }



    public function get_result_gp()
    {
        // print_r($_POST);exit;

        $mcq_result_id = $this->input->post('id');
        $query_u  = $this->db->select('*')->where('mcq_result_id', $mcq_result_id)->get('mcq_results_gp');

        $users = [];

        if ($query_u->num_rows() > 0) {
            $users  = $query_u->result();
        }

        echo json_encode($users);
    }

    public function get_group_users($tag_id)
    {
        $group_id = $tag_id;
        $this->db->select('users.id,users.username');
        $this->db->from('users');
        $this->db->where('admin_id', $this->session->userdata('user_id'));
        $this->db->where("CONCAT(',', tag_id, ',') LIKE '%,$group_id,%'");

        $query = $this->db->get();
        if ($query->num_rows() > 0) {
            return $query->result();
        }
        return false;
    }

    public function get_export_result()
    {
        $tag_id = $this->input->post('tag_id');
        $mcq_id = $this->input->post('mcq_id');
        $mcq_subject_id = $this->input->post('mcq_subject_id');
        $admin_id = $this->session->userdata('user_id');

        $query = $this->db->query("SELECT users.id,users.first_name,users.last_name,users.admission_code, mcq_results_gp.subject_name as subject, (mcq.tquestion*mcq.correct_marks) as max_marks, (mcq_results_gp.correct_marks) as right_ans, mcq_results_gp.wrong_marks as wrong_ans, (mcq.tquestion - (mcq_results_gp.correct_marks + mcq_results_gp.wrong_marks)) as drop_ques, (mcq.wrong_marks*mcq_results_gp.wrong_marks) as negative_marks, (mcq.correct_marks*mcq_results_gp.correct_marks)-(mcq.wrong_marks*mcq_results_gp.wrong_marks) as obtained_marks, mcq_results_gp.created_at as resultdate FROM mcq_results JOIN users ON users.id=mcq_results.user_id JOIN mcq ON mcq.id=mcq_results.mcq_id JOIN mcq_results_gp ON mcq_results_gp.mcq_result_id=mcq_results.id JOIN mcq_subjects ON mcq_subjects.id=mcq_results_gp.subject_id WHERE mcq_results.mcq_id=$mcq_id AND mcq_results_gp.subject_id=$mcq_subject_id AND mcq_results.user_id IN (SELECT users.id FROM users WHERE admin_id = $admin_id AND CONCAT(',', tag_id, ',') LIKE '%,$tag_id,%')");
		$dataResultArray =  $query->result_array();
        //echo $this->db->last_query();exit;
        $this->array_to_csv_download($dataResultArray);
    }

    function array_to_csv_download($array, $file_name = "assets/export.csv", $delimiter = ",")
    {
        // open raw memory as file so no temp files needed, you might run out of memory though
        $uid = uniqid();
        $filename = "assets/" . $uid . "export.csv";
        $f = fopen($filename, 'w+');

        
		
		
		$Head = ['id' => 'User ID', 'first_name' => 'Firstname', 'last_name' => 'Lastname', 'admission_code' => 'Admission Code', 'subject' => 'Subject', 'max_marks' => 'MAX Marks', 'right_ans' => 'Right Ans', 'wrong_ans' => 'Wrong Ans', 'drop_ques' => 'Drop Questions', 'negative_marks' => 'Nagetive Marks', 'obtained_marks' => 'Obtained Marks', 'resultdate' => 'Date'];
				
		fputcsv($f, $Head, $delimiter);
		
        // loop over the input array
        foreach ($array as $line) {
            // generate csv lines from the inner arrays
            fputcsv($f, $line, $delimiter);
        }
        fclose($f);
        $url = base_url() . $filename;
        echo $url;
    }
}

Anon7 - 2021