|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/parassaas.edukrypt.in/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Mcq_question;
use App\Models\Upload_mcq_file;
use App\Models\Mcq_option;
use App\Models\Mcq_ques_gp;
use File;
use Aws\S3\S3Client as S3S3Client;
use Aws\CognitoIdentity\CognitoIdentityClient;
use Aws\Exception\AwsException;
use Aws\S3\Exception\S3Exception;
use Aws\S3\PostObjectV4;
class McqController extends Controller
{
public function mcqQuestionList()
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
if (isset($_GET['query']) && strlen($_GET['query']) > 1) {
$search_text = $_GET['query'];
$data['mcq_questions'] = Mcq_question::where('mcq_questions.question', 'LIKE', '%' . $search_text . '%')
->join('mcq_options', 'mcq_questions.correct_option_id', '=', 'mcq_options.id')
->paginate(10, ['mcq_questions.*', 'mcq_options.options']);
return view('admin.mcq.mcq-question-list', $data);
} else {
$data['mcq_questions'] = Mcq_question::leftjoin('mcq_options', 'mcq_questions.correct_option_id', '=', 'mcq_options.id')
->paginate(10, ['mcq_questions.*', 'mcq_options.options']);
return view('admin.mcq.mcq-question-list', $data);
}
}
public function uploadQuestion(Request $request)
{
$admin_id = $request->session()->get('loggedIn')['id'];
$name = basename(__FILE__, '.php');
$ext = $request->doc_file->extension();
if ($ext != 'docx') {
return back()->with('error', 'File Should Be Docs Only!');
}
$imageName = time() . rand() . '.' . $ext;
$request->doc_file->move(public_path('uploads/quiz'), $imageName);
$thumb_url = base_path() . "/public/uploads/quiz/" . $imageName;
$data = array(
'filename' => $thumb_url,
);
$res = Upload_mcq_file::create($data);
$insert_id = $res->id;;
$file_url = Upload_mcq_file::where(['id' => $insert_id])->first();
$path = $file_url->filename;
// $phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord = \PhpOffice\PhpWord\IOFactory::load($path);
// $phpWord = \PhpOffice\PhpWord\IOFactory::load($path);
$section = $phpWord->addSection();
$_file_name = explode(".", $imageName);
$orig_name = $_file_name[0];
$source = base_path() . "/public/uploads/quiz/{$orig_name}.html";
// Saving the document as HTML file...
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');
$objWriter->save($source);
$all_data = array(
'questions' => array()
);
// $path = base_url()."uploads/quiz/www.html";
$file_name = asset('/') . "public/uploads/quiz/{$orig_name}.html";
$pagecontents = file_get_contents($file_name);
preg_match_all('#<table (.*?)</table>#is', $pagecontents, $_all_functions);
$function_keys = $_all_functions[1];
foreach ($function_keys as $key => $value) {
preg_match_all('#<tr>(.*?)</tr>#is', $value, $match);
$matches = $match[1];
$data = array(
'admin_id' => $admin_id,
'no_of_option' => trim(strip_tags($matches[0])),
'question' => trim(strip_tags($matches[1], '<img>')),
'solution' => trim(strip_tags($matches[2], '<img>')),
'correct_ans' => trim(strip_tags($matches[3])),
'code' => trim(strip_tags($matches[4])),
'level' => trim(strip_tags($matches[5]))
);
$mcqQues = Mcq_question::create($data);
$question_id = $mcqQues->id;
$i = 1;
foreach ($matches as $key => $matche) {
if (($key == 0) || ($key == 1) || ($key == 2) || ($key == 3) || ($key == 4) || ($key == 5)) {
} else {
$content = str_replace(" ", "", trim(strip_tags($matche, '<img>')));
$content = html_entity_decode($content);
if (!empty($content)) {
$option_data = array(
'question_id' => $question_id,
'no_of_options' => $i,
'options' => trim(strip_tags($matche, '<img>')),
);
$mcqQues = Mcq_option::create($option_data);
$i++;
}
}
}
$get_quest = Mcq_question::where(['id' => $question_id])->first();
$correct_opt = $get_quest->correct_ans;
$a = strip_tags($correct_opt);
$c = preg_replace("/\r|\n/", "", $a);
$practice_quiz = Mcq_option::where(['no_of_options' => $c, 'question_id' => $question_id])->first();
$update_data = array(
'correct_option_id' => trim($practice_quiz->id)
);
Mcq_question::where(['id' => $question_id])->update($update_data);
}
return back()->with('success', ' Question Has Been Uploaded Successfully!.');
}
public function editMcqQuestion(Request $request, $id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$data['mcq_questions'] = Mcq_question::Where(['id' => $id])->first();
$data['mcq_options'] = Mcq_option::where(['question_id' => $id])->get();
return view('admin.mcq.edit-mcq-question', $data);
}
public function updateMcqQuestion(Request $request, $id)
{
$admin_id = $request->session()->get('loggedIn')['id'];
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$request->validate([
'question' => 'required',
'solution' => 'required',
'level' => 'required',
'code' => 'required',
'numberofop' => 'required'
]);
$data = array(
'question' => $request->question,
'solution' => $request->solution,
'no_of_option' => $request->numberofop,
'level' => $request->level,
'code' => $request->code
);
// $data = array(
// 'admin_id' => $admin_id,
// 'question' => $request->question,
// 'solution' => $request->solution,
// 'conceptual_type' => $request->conceptual_type,
// 'level' => $request->level,
// 'code' => $request->code,
// 'correct_option_id' => $request->correct_option,
// );
$res = Mcq_question::where(['id' => $id])->update($data);
if ($res) {
return back()
->with('success', ' Question Updated!.');
} else {
return back()
->with('error', 'Something Went Wrong!');
}
}
public function viewMcqQuestion(Request $request, $id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$data['mcq_questions'] = Mcq_question::Where(['id' => $id])->first();
$data['mcq_options'] = Mcq_option::where(['question_id' => $id])->get();
return view('admin.mcq.view-mcq-question', $data);
}
public function deleteMcqQuestion(Request $request, $id)
{
Mcq_question::where(['id' => $id])->delete();
Mcq_option::where(['question_id' => $id])->delete();
return back()->with('success', 'Post deleted successfully');
}
// Mcq Option
public function mcqOptionList(Request $request, $id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
if (isset($_GET['query']) && strlen($_GET['query']) > 1) {
$search_text = $_GET['query'];
$data['mcq_question'] = Mcq_question::where(['id' => $id])->first();
$data['mcq_options'] = Mcq_option::where(['question_id' => $id])->where('options', 'LIKE', '%' . $search_text . '%')
->paginate(10);
return view('admin.mcq.mcq-options-list', $data);
} else {
$data['mcq_question'] = Mcq_question::where(['id' => $id])->first();
$data['mcq_options'] = Mcq_option::where(['question_id' => $id])->paginate(10);
return view('admin.mcq.mcq-options-list', $data);
}
}
public function viewMcqOption(Request $request, $id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$data['Mcq_option'] = Mcq_option::Where(['id' => $id])->first();
return view('admin.mcq.view-mcq-option', $data);
}
public function deleteMcqOption(Request $request, $id)
{
// Mcq_question::where(['id'=>$id])->delete();
Mcq_option::where(['id' => $id])->delete();
return back()->with('success', 'Post deleted successfully');
}
// Add Questions Seperate =========================================================
public function uploadQuestionImage(Request $request)
{
// $accessKey = env('AWS_S3_ACCESS_KEY');
// $secretKey = env('AWS_S3_SECRET_KEY');
// $region = env('AWS_REGION');
// $host = env('AWS_HOST');
// $bucket = env('AWS_BUCKET');
// $s3 = new S3S3Client([
// 'version' => 'latest',
// 'region' => $region,
// 'endpoint' => $host,
// 'credentials' => [
// 'key' => $accessKey,
// 'secret' => $secretKey
// ]
// ]);
// $s3->putBucketCors([
// 'Bucket' => $bucket, // REQUIRED
// 'CORSConfiguration' => [ // REQUIRED
// 'CORSRules' => [ // REQUIRED
// [
// 'AllowedMethods' => ['POST', 'GET', 'HEAD', 'DELETE', 'PUT'], // REQUIRED
// 'AllowedHeaders' => ['*'],
// 'AllowedOrigins' => ['*'], // REQUIRED
// 'ExposeHeaders' => ['ETag'],
// 'MaxAgeSeconds' => 0
// ],
// ],
// ]
// ]);
//dd($request->file('file'));
$fileName = $request->file('file')->getClientOriginalName();
$fileType = $request->file('file')->getMimeType();
$filePath = $request->file('file')->getPathName();
//dd($request->file('file'));
// Upload a file.
// $result = $s3->putObject(array(
// 'Bucket' => $bucket,
// 'Key' => "upload/mcq/" . $fileName,
// 'SourceFile' => $request->file('file')->getRealPath(),
// 'ContentType' => $fileType,
// 'ACL' => 'public-read',
// 'StorageClass' => 'REDUCED_REDUNDANCY'
// ));
$data = file_get_contents($filePath);
$base64 = 'data:' . $fileType . ';base64,' . base64_encode($data);
//dd($request->file('file'));
return response()->json(['location' => $base64]);
}
public function addQuestion(Request $request)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
// $data['mcq_questions'] = Mcq_question::Where(['id' => $id])->first();
// $data['mcq_options'] = Mcq_option::where(['question_id' => $id])->get();
return view('admin.mcq.add-mcq-question', $data);
}
public function saveQuestion(Request $request)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$admin_id = $request->session()->get('loggedIn')['id'];
$request->validate([
'question' => 'required',
'solution' => 'required',
'level' => 'required',
'code' => 'required',
'numberofop' => 'required'
]);
$data = array(
'admin_id' => $admin_id,
'question' => $request->question,
'solution' => $request->solution,
'no_of_option' => $request->numberofop,
'level' => $request->level,
'code' => $request->code,
'created_at' => date('Y-m-d H:i:s')
);
//dd($request);
$res = Mcq_question::insert($data);
if ($res) {
return back()
->with('success', 'Question Saved!.');
} else {
return back()
->with('error', 'Something Went Wrong!');
}
}
// Options New =============================================================
public function addNewOption(Request $request, $id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$mcq_questions = Mcq_question::Where(['id' => $id])->first();
$no_of_options_allowed = $mcq_questions->no_of_option;
$mcq_options = Mcq_option::where(['question_id' => $id])->get();
$total_no_of_options = $mcq_options->count();
$data['note'] = "Note: $total_no_of_options out of $no_of_options_allowed option in this question.";
// if ($total_no_of_options >= $no_of_options_allowed) {
// return back()
// ->with('error', 'Only ' . $no_of_options_allowed . ' options allowed in this question.');
// }
$data['next_number'] = $total_no_of_options + 1;
$data['mcq_questions'] = $mcq_questions;
return view('admin.mcq.add-new-option', $data);
}
public function saveNewOption(Request $request, $question_id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
//$admin_id = $request->session()->get('loggedIn')['id'];
$request->validate([
'option' => 'required'
]);
$data = array(
'question_id' => $question_id,
'no_of_options' => $request->no_of_options,
'options' => $request->option,
'created_at' => date('Y-m-d H:i:s')
);
//dd($request);
$res = Mcq_option::insert($data);
if ($res) {
return back()
->with('success', 'Question Saved!.');
} else {
return back()
->with('error', 'Something Went Wrong!');
}
}
public function editMcqOption(Request $request, $id, $qid)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$mcq_questions = Mcq_question::Where(['id' => $qid])->first();
$no_of_options_allowed = $mcq_questions->no_of_option;
$mcq_options = Mcq_option::where(['question_id' => $qid])->get();
$total_no_of_options = $mcq_options->count();
$data['note'] = "Note: $total_no_of_options out of $no_of_options_allowed option in this question.";
// if ($total_no_of_options >= $no_of_options_allowed) {
// return back()
// ->with('error', 'Only ' . $no_of_options_allowed . ' options allowed in this question.');
// }
$data['mcq_questions'] = $mcq_questions;
$data['next_number'] = $total_no_of_options + 1;
$data['Mcq_option'] = Mcq_option::Where(['id' => $id])->first();
return view('admin.mcq.edit-mcq-option', $data);
}
public function updateMcqOption(Request $request, $id, $qid)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$request->validate([
'option' => 'required',
'no_of_options' => 'required'
]);
$data = array(
'options' => $request->option,
'no_of_options' => $request->no_of_options
);
$res = Mcq_option::where(['id' => $id])->update($data);
if ($res) {
return back()
->with('success', ' Question Has Been Updated!.');
} else {
return back()
->with('error', 'Something Went Wrong!');
}
}
public function changeMcqOption(Request $request)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$option_id = $request->option_id;
$question_id = $request->question_id;
$serial = $request->serial;
$data = array(
'correct_ans' => $serial,
'correct_option_id' => $option_id
);
$res = Mcq_question::where(['id' => $question_id])->update($data);
if ($res) {
return json_encode(['code' => 200, 'status' => true]);
} else {
return json_encode(['code' => 404, 'status' => false]);
}
}
}