|
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 File;
use Nette\Utils\Json;
use Aws\S3\PostObjectV4;
use App\Models\Mcq_option;
use App\Models\Mcq_ques_gp;
use App\Models\Mcq_question;
use Illuminate\Http\Request;
use App\Models\Upload_mcq_file;
use Aws\Exception\AwsException;
use Aws\S3\Exception\S3Exception;
use Aws\S3\S3Client as S3S3Client;
use Illuminate\Support\Facades\DB;
use Illuminate\Filesystem\Filesystem;
use Aws\CognitoIdentity\CognitoIdentityClient;
class McqController extends Controller
{
public function mcqQuestionList()
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
// MCQ Questions ==========================
$query = Mcq_question::select();
// $query->leftJoin('subcategories', 'categories.id', 'subcategories.category_id')
if (isset($_GET['query']) && !empty($_GET['query'])) {
$query->where('mcq_questions.question', 'LIKE', '%' . $_GET['query'] . '%');
}
$query->where('mcq_questions.parent_id', '<=', '0');
$data['mcq_questions'] = $query->paginate(10, ['mcq_questions.*']);
// dd($data['mcq_questions']);
return view('admin.mcq.mcq-question-list', $data);
}
// Add Question
public function addQuestion()
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
return view('admin.mcq.add-mcq-question', $data);
}
public function saveQuestion(Request $request, $parent_id = NULL)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
// Admin ID ====================
$admin_id = $request->session()->get('loggedIn')['id'];
$validationArray = [];
if ($request->gp_checkbox == "1") {
$validationArray['gp_text'] = "required";
}
// Common Validation ====================
$validationArray['tags'] = "required";
$validationArray['code'] = "required";
$validationArray['question'] = "required";
$validationArray['mark'] = "required";
$validationArray['penalty'] = "required";
// Question Type ========================
if ($request->type == "mcq") {
$validationArray['choice_1'] = "required";
$validationArray['choice_2'] = "required";
} else if ($request->type == "single_mcq") {
$validationArray['schoice_1'] = "required";
$validationArray['schoice_2'] = "required";
} else if ($request->type == "fill") {
$validationArray['answer_type'] = "required";
if ($request->answer_type == "fixed") {
$validationArray['fixed'] = "required";
} else {
$validationArray['min'] = "required";
$validationArray['max'] = "required";
}
} else {
$validationArray['boolean'] = "required";
}
$request->validate($validationArray);
switch ($request->type) {
case 'single_mcq':
return $this->save_single_mcq_question($request->all(), $admin_id);
break;
case 'mcq':
return $this->save_mcq_question($request->all(), $admin_id);
break;
case 'fill':
return $this->save_fill_question($request->all(), $admin_id);
break;
default:
return $this->save_true_false_question($request->all(), $admin_id);
break;
}
}
// Single MCQ Question Creation
public function save_single_mcq_question($arr, $admin_id)
{
$data = array(
"admin_id" => $admin_id,
"type" => $arr['type'],
"group_question" => isset($arr['gp_checkbox']) ? $arr['gp_checkbox'] : '0',
"group_text" => isset($arr['gp_checkbox']) ? $arr['gp_text'] : NULL,
"question" => $arr['question'],
"solution" => $arr['solution'],
"tags" => $arr['tags'],
"code" => $arr['code'],
"mark" => $arr['mark'],
"penalty" => $arr['penalty']
);
$res = Mcq_question::create($data);
if (isset($res->id)) {
$questionID = $res->id;
// Insert choices ===============
$choiceData = [];
for ($i = 1; $i <= 6; $i++) {
# code...
if (isset($arr['schoice_' . $i])) {
$_choice = [
'question_id' => $questionID,
'sort_order' => $i,
'options' => $arr['schoice_' . $i],
'correct' => isset($arr['scorrect_' . $i]) ? '1' : '0',
'created_at' => date('Y-m-d H:i:s')
];
array_push($choiceData, $_choice);
}
}
Mcq_option::insert($choiceData);
return redirect('admin/add-mcq-question')->with('success', 'MCQ Question Saved!.');
}
return redirect('admin/add-mcq-question')->with('error', 'Question not saved, please try again!');
}
// MCQ Question Creation
public function save_mcq_question($arr, $admin_id)
{
$data = array(
"admin_id" => $admin_id,
"type" => $arr['type'],
"group_question" => isset($arr['gp_checkbox']) ? $arr['gp_checkbox'] : '0',
"group_text" => isset($arr['gp_checkbox']) ? $arr['gp_text'] : NULL,
"question" => $arr['question'],
"solution" => $arr['solution'],
"tags" => $arr['tags'],
"code" => $arr['code'],
"mark" => $arr['mark'],
"penalty" => $arr['penalty']
);
$res = Mcq_question::create($data);
if (isset($res->id)) {
$questionID = $res->id;
// Insert choices ===============
$choiceData = [];
for ($i = 1; $i <= 6; $i++) {
# code...
if (isset($arr['choice_' . $i])) {
$_choice = [
'question_id' => $questionID,
'sort_order' => $i,
'options' => $arr['choice_' . $i],
'correct' => isset($arr['correct_' . $i]) ? '1' : '0',
'created_at' => date('Y-m-d H:i:s')
];
array_push($choiceData, $_choice);
}
}
Mcq_option::insert($choiceData);
return redirect('admin/add-mcq-question')->with('success', 'MCQ Question Saved!.');
}
return redirect('admin/add-mcq-question')->with('error', 'Question not saved, please try again!');
}
// Fill Question Creation
public function save_fill_question($arr, $admin_id)
{
$data = array(
"admin_id" => $admin_id,
"type" => $arr['type'],
"group_question" => isset($arr['gp_checkbox']) ? $arr['gp_checkbox'] : '0',
"group_text" => isset($arr['gp_checkbox']) ? $arr['gp_text'] : NULL,
"question" => $arr['question'],
"solution" => $arr['solution'],
"tags" => $arr['tags'],
"code" => $arr['code'],
"mark" => $arr['mark'],
"penalty" => $arr['penalty'],
"answer" => empty($arr['fixed']) ? '0' : $arr['fixed'],
"min" => empty($arr['min']) ? '0' : $arr['min'],
"max" => empty($arr['max']) ? '0' : $arr['max'],
);
$res = Mcq_question::create($data);
if (isset($res->id)) {
return redirect('admin/add-mcq-question')->with('success', 'Fill in the blank Question Saved!.');
}
return redirect('admin/add-mcq-question')->with('error', 'Question not saved, please try again!');
}
// T/F Question Creation
public function save_true_false_question($arr, $admin_id)
{
$data = array(
"admin_id" => $admin_id,
"type" => $arr['type'],
"group_question" => isset($arr['gp_checkbox']) ? $arr['gp_checkbox'] : '0',
"group_text" => isset($arr['gp_checkbox']) ? $arr['gp_text'] : NULL,
"question" => $arr['question'],
"solution" => $arr['solution'],
"tags" => $arr['tags'],
"code" => $arr['code'],
"mark" => $arr['mark'],
"penalty" => $arr['penalty']
);
$res = Mcq_question::create($data);
if (isset($res->id)) {
$questionID = $res->id;
// Insert choices ===============
$_choice = array([
'question_id' => $questionID,
'sort_order' => 1,
'options' => 'True',
'correct' => $arr['boolean'] == "true" ? '1' : '0',
'created_at' => date('Y-m-d H:i:s')
], [
'question_id' => $questionID,
'sort_order' => 2,
'options' => 'False',
'correct' => $arr['boolean'] == "false" ? '1' : '0',
'created_at' => date('Y-m-d H:i:s')
]);
Mcq_option::insert($_choice);
return redirect('admin/add-mcq-question')->with('success', 'True/False Question Saved!.');
}
return redirect('admin/add-mcq-question')->with('error', 'Question not saved, please try again!');
}
// Sub Questions list =========================================
public function subMcqQuestionList($parent_id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
// MCQ Questions ==========================
$query = Mcq_question::select();
if (isset($_GET['query']) && !empty($_GET['query'])) {
$query->where('mcq_questions.question', 'LIKE', '%' . $_GET['query'] . '%');
}
$query->where('mcq_questions.id', $parent_id);
$data['mcq_questions'] = $query->paginate(10, ['mcq_questions.*']);
// dd($data['mcq_questions']);
return view('admin.mcq_sub.sub-mcq-question-list', $data);
}
// Add Sub Question
public function addSubQuestion($parent_id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$data['parent_id'] = $parent_id;
return view('admin.mcq_sub.add-sub-question', $data);
}
// Post save sub question
public function saveSubQuestion(Request $request, $parent_id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
// Admin ID ====================
$admin_id = $request->session()->get('loggedIn')['id'];
$validationArray = [];
// Common Validation ====================
$validationArray['tags'] = "required";
$validationArray['code'] = "required";
$validationArray['question'] = "required";
$validationArray['mark'] = "required";
$validationArray['penalty'] = "required";
// Question Type ========================
if ($request->type == "mcq") {
$validationArray['choice_1'] = "required";
$validationArray['choice_2'] = "required";
} else if ($request->type == "single_mcq") {
$validationArray['schoice_1'] = "required";
$validationArray['schoice_2'] = "required";
} else if ($request->type == "fill") {
$validationArray['answer_type'] = "required";
if ($request->answer_type == "fixed") {
$validationArray['fixed'] = "required";
} else {
$validationArray['min'] = "required";
$validationArray['max'] = "required";
}
} else {
$validationArray['boolean'] = "required";
}
$request->validate($validationArray);
switch ($request->type) {
case 'single_mcq':
return $this->save_sub_single_mcq_question($request->all(), $admin_id, $parent_id);
break;
case 'mcq':
return $this->save_sub_mcq_question($request->all(), $admin_id, $parent_id);
break;
case 'fill':
return $this->save_sub_fill_question($request->all(), $admin_id, $parent_id);
break;
default:
return $this->save_sub_true_false_question($request->all(), $admin_id, $parent_id);
break;
}
}
// Sub Single MCQ Question Creation
public function save_sub_single_mcq_question($arr, $admin_id, $parent_id)
{
$data = array(
"admin_id" => $admin_id,
"parent_id" => $parent_id,
"type" => $arr['type'],
"question" => $arr['question'],
"solution" => $arr['solution'],
"tags" => $arr['tags'],
"code" => $arr['code'],
"mark" => $arr['mark'],
"penalty" => $arr['penalty']
);
$res = Mcq_question::create($data);
if (isset($res->id)) {
$questionID = $res->id;
// Insert choices ===============
$choiceData = [];
for ($i = 1; $i <= 6; $i++) {
# code...
if (isset($arr['schoice_' . $i])) {
$_choice = [
'question_id' => $questionID,
'sort_order' => $i,
'options' => $arr['schoice_' . $i],
'correct' => isset($arr['scorrect_' . $i]) ? '1' : '0',
'created_at' => date('Y-m-d H:i:s')
];
array_push($choiceData, $_choice);
}
}
Mcq_option::insert($choiceData);
return redirect('admin/sub-mcq-questions/' . $parent_id)->with('success', 'Sub Question Saved!.');
}
return redirect('admin/add-sub-question/' . $parent_id)->with('error', 'Question not saved, please try again!');
}
// Sub MCQ Question Creation
public function save_sub_mcq_question($arr, $admin_id, $parent_id)
{
$data = array(
"admin_id" => $admin_id,
"parent_id" => $parent_id,
"type" => $arr['type'],
"question" => $arr['question'],
"solution" => $arr['solution'],
"tags" => $arr['tags'],
"code" => $arr['code'],
"mark" => $arr['mark'],
"penalty" => $arr['penalty']
);
$res = Mcq_question::create($data);
if (isset($res->id)) {
$questionID = $res->id;
// Insert choices ===============
$choiceData = [];
for ($i = 1; $i <= 6; $i++) {
# code...
if (isset($arr['choice_' . $i])) {
$_choice = [
'question_id' => $questionID,
'sort_order' => $i,
'options' => $arr['choice_' . $i],
'correct' => isset($arr['correct_' . $i]) ? '1' : '0',
'created_at' => date('Y-m-d H:i:s')
];
array_push($choiceData, $_choice);
}
}
Mcq_option::insert($choiceData);
return redirect('admin/sub-mcq-questions/' . $parent_id)->with('success', 'Sub Question Saved!.');
}
return redirect('admin/add-sub-question/' . $parent_id)->with('error', 'Question not saved, please try again!');
}
// Sub Fill Question Creation
public function save_sub_fill_question($arr, $admin_id, $parent_id)
{
$data = array(
"admin_id" => $admin_id,
"parent_id" => $parent_id,
"type" => $arr['type'],
"question" => $arr['question'],
"solution" => $arr['solution'],
"tags" => $arr['tags'],
"code" => $arr['code'],
"mark" => $arr['mark'],
"penalty" => $arr['penalty'],
"answer" => empty($arr['fixed']) ? '0' : $arr['fixed'],
"min" => empty($arr['min']) ? '0' : $arr['min'],
"max" => empty($arr['max']) ? '0' : $arr['max'],
);
$res = Mcq_question::create($data);
if (isset($res->id)) {
return redirect('admin/sub-mcq-questions/' . $parent_id)->with('success', 'Sub Question Saved!.');
}
return redirect('admin/add-sub-question/' . $parent_id)->with('error', 'Question not saved, please try again!');
}
// Sub T/F Question Creation
public function save_sub_true_false_question($arr, $admin_id, $parent_id)
{
$data = array(
"admin_id" => $admin_id,
"parent_id" => $parent_id,
"type" => $arr['type'],
"question" => $arr['question'],
"solution" => $arr['solution'],
"tags" => $arr['tags'],
"code" => $arr['code'],
"mark" => $arr['mark'],
"penalty" => $arr['penalty']
);
$res = Mcq_question::create($data);
if (isset($res->id)) {
$questionID = $res->id;
// Insert choices ===============
$_choice = array([
'question_id' => $questionID,
'sort_order' => 1,
'options' => 'True',
'correct' => $arr['boolean'] == "true" ? '1' : '0',
'created_at' => date('Y-m-d H:i:s')
], [
'question_id' => $questionID,
'sort_order' => 2,
'options' => 'False',
'correct' => $arr['boolean'] == "false" ? '1' : '0',
'created_at' => date('Y-m-d H:i:s')
]);
Mcq_option::insert($_choice);
return redirect('admin/sub-mcq-questions/' . $parent_id)->with('success', 'Sub Question Saved!.');
}
return redirect('admin/add-sub-question/' . $parent_id)->with('error', 'Question not saved, please try again!');
}
// Word File Import Questions
public function uploadQuestion(Request $request)
{
$admin_id = $request->session()->get('loggedIn')['id'];
$file = new Filesystem;
$file->cleanDirectory(public_path('uploads/quiz'));
$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 = \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];
$questionData = array();
$optionDatas = array();
$correctOption = array();
$j = 1;
foreach ($matches as $rawQuestion) {
preg_match_all('/{(.*?)}/', trim(strip_tags($rawQuestion)), $question);
$key = $question[1][0];
$questionData[$key] = trim(preg_replace('/\s\s+/', ' ', str_replace("{{$key}}", "", trim(strip_tags($rawQuestion)))));
// Question ================
if ($key == "question") {
$questionData[$key] = trim(preg_replace('/\s\s+/', ' ', str_replace("{{$key}}", "", trim(strip_tags($rawQuestion, '<div><p><img><br>')))));
}
// Solution ================
if ($key == "solution") {
$questionData[$key] = trim(preg_replace('/\s\s+/', ' ', str_replace("{{$key}}", "", trim(strip_tags($rawQuestion, '<div><p><img><br>')))));
}
// Correct =================
if (str_contains($key, 'correct')) {
$correctOption = trim(preg_replace('/\s\s+/', ' ', str_replace("{{$key}}", "", trim(strip_tags($rawQuestion)))));
}
// Options =================
if (str_contains($key, 'option')) {
$valueQ = trim(preg_replace('/\s\s+/', ' ', str_replace("{{$key}}", "", trim(strip_tags($rawQuestion)))));
if (!empty($valueQ)) {
$optionQ = array(
'options' => trim(preg_replace('/\s\s+/', ' ', str_replace("{{$key}}", "", trim(strip_tags($rawQuestion, '<div><p><img><br>'))))),
'question_id' => "",
'sort_order' => $j,
'correct' => ""
);
array_push($optionDatas, $optionQ);
$j++;
}
}
}
// dd($questionData);
$questionMCQ = array();
if ($questionData['type'] == "fill") {
$questionMCQ = array(
'admin_id' => $admin_id,
'type' => trim(strip_tags($questionData['type'])),
'question' => trim($questionData['question']),
'solution' => trim($questionData['solution']),
'answer' => trim(strip_tags($questionData['answer'])),
'min' => trim(strip_tags($questionData['min'])),
'max' => trim(strip_tags($questionData['max'])),
'code' => trim(strip_tags($questionData['code'])),
'tags' => trim(strip_tags($questionData['tags'])),
'mark' => trim(strip_tags($questionData['mark'])),
'penalty' => trim(strip_tags($questionData['penalty'])),
'created_at' => date('Y-m-d H:i:s')
);
} else {
$questionMCQ = array(
'admin_id' => $admin_id,
'type' => $questionData['type'],
'question' => trim($questionData['question']),
'solution' => trim($questionData['solution']),
'code' => trim(strip_tags($questionData['code'])),
'tags' => trim(strip_tags($questionData['tags'])),
'mark' => trim(strip_tags($questionData['mark'])),
'penalty' => trim(strip_tags($questionData['penalty'])),
'created_at' => date('Y-m-d H:i:s')
);
}
$checkQ = Mcq_question::where('code', $questionMCQ['code'])->first();
if (empty($checkQ)) {
$mcqQues = Mcq_question::firstOrCreate($questionMCQ);
$question_id = $mcqQues->id;
if (!empty($question_id)) {
foreach ($optionDatas as $optionData) {
$flag = 0;
foreach (explode(',', $correctOption) as $cops) {
if ($cops == $optionData['sort_order']) {
$flag = 1;
break;
}
}
$option_data = array(
'question_id' => $question_id,
'options' => $optionData['options'],
'correct' => $flag,
'sort_order' => $optionData['sort_order'],
'created_at' => date('Y-m-d H:i:s')
);
Mcq_option::create($option_data);
}
}
}
}
return back()->with('success', ' Question Has Been Uploaded Successfully!.');
}
// Edit MCQ
public function editMcqQuestion(Request $request, $id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$mcq_questions = Mcq_question::with('options')->where('id', $id)->first();
$data['mcq_questions'] = $mcq_questions;
$data['mcq_options'] = $mcq_questions->options()->get();
return view('admin.mcq.edit-mcq-question', $data);
}
public function updateMcqQuestion(Request $request, $id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
// Admin ID ====================
$validationArray = [];
if ($request->gp_checkbox == "1") {
$validationArray['gp_text'] = "required";
}
// Common Validation ====================
$validationArray['tags'] = "required";
$validationArray['code'] = "required";
$validationArray['question'] = "required";
$validationArray['mark'] = "required";
$validationArray['penalty'] = "required";
// Question Type ========================
if ($request->type == "fill") {
$validationArray['answer_type'] = "required";
if ($request->answer_type == "fixed") {
$validationArray['fixed'] = "required";
} else {
$validationArray['min'] = "required";
$validationArray['max'] = "required";
}
}
$request->validate($validationArray);
$data = array(
"group_question" => isset($request->gp_checkbox) ? $request->gp_checkbox : '0',
"group_text" => isset($request->gp_text) ? $request->gp_text : NULL,
"question" => $request->question,
"solution" => $request->solution,
"tags" => $request->tags,
"code" => $request->code,
"mark" => $request->mark,
"penalty" => $request->penalty,
"answer" => $request->fixed,
"min" => $request->min,
"max" => $request->max,
);
$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';
$mcq_questions = Mcq_question::with('options')->where('id', $id)->first();
// dd($mcq_questions);
$data['mcq_questions'] = $mcq_questions;
$data['mcq_options'] = $mcq_questions->options()->get();
return view('admin.mcq.view-mcq-question', $data);
}
public function deleteMcqQuestion(Request $request, $id)
{
Mcq_option::where(['question_id' => $id])->delete();
Mcq_question::where(['parent_id' => $id])->delete();
Mcq_question::where(['id' => $id])->delete();
return back()->with('success', 'Question deleted successfully');
}
// Mcq Option list
public function mcqOptionList(Request $request, $id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$data['mcq_question'] = Mcq_question::where(['id' => $id])->first();
$data['mcq_options'] = Mcq_option::where(['question_id' => $id])->orderBy('sort_order', 'ASC')->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_option::where(['id' => $id])->delete();
return back()->with('success', 'Option 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]);
}
// Tags Json
public function tagsJson(Request $request)
{
$tags = Mcq_question::where('tags', 'like', '%' . $request->term . '%')->groupBy('tags')->get(['id', 'tags as text']);
return response()->json($tags);
}
// Options New =============================================================
public function addNewOption(Request $request, $id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$mcq_questions = Mcq_question::Where(['id' => $id])->first();
$data['mcq_questions'] = $mcq_questions;
$mcq_option = Mcq_option::Where(['question_id' => $id])->orderBy('id', "desc")->first();
$data['mcq_option'] = $mcq_option;
return view('admin.mcq.add-new-option', $data);
}
public function saveNewOption(Request $request, $question_id)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$request->validate([
'option' => 'required'
]);
$lastOption = Mcq_option::where('question_id', $question_id)->orderBy('sort_order', 'DESC')->first();
$data = array(
'question_id' => $question_id,
'sort_order' => (empty($lastOption) ? 1 : ($lastOption->sort_order + 1)),
'options' => $request->option,
'correct' => '0',
'created_at' => date('Y-m-d H:i:s')
);
//dd($request);
$res = Mcq_option::insert($data);
if ($res) {
return back()
->with('success', 'New option added in question successfully!.');
} 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();
$data['mcq_questions'] = $mcq_questions;
$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',
]);
$data = array(
'options' => $request->option
);
$res = Mcq_option::where(['id' => $id])->update($data);
if ($res) {
return back()
->with('success', ' Question option has been updated!.');
} else {
return back()
->with('error', 'Something Went Wrong!');
}
}
public function changeMcqOption(Request $request)
{
$data['mainMenu'] = 'databaseManagement';
$data['subMenu'] = 'mcqQuestList';
$correct = $request->correct;
$type = $request->type;
$option_id = $request->option_id;
$question_id = $request->question_id;
// Single choice MCQ
if ($type == "single_mcq" || $type == "true_false") {
$data = array(
'correct' => '0'
);
Mcq_option::where('question_id', $question_id)->update($data);
}
// Update
$_data = array(
'correct' => $correct
);
$res = Mcq_option::where(['id' => $option_id, 'question_id' => $question_id])->update($_data);
if ($res) {
return true;
}
return false;
}
}