<?php
namespace App\Imports;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Modules\Quiz\Entities\QuestionBank;
use Modules\Quiz\Entities\QuestionBankMuOption;
class QuestionBankImport implements ToModel, WithHeadingRow
{
public $group, $category, $subcategory;
public function __construct($group, $category, $subcategory = null)
{
$this->group = $group;
$this->category = $category;
$this->subcategory = $subcategory;
}
public function model(array $row)
{
$options = [];
$regex = 'option_';
foreach ($row as $key => $value) {
if (str_starts_with($key, $regex)) {
$options[str_replace($regex, '', $key)] = $value;
}
}
$correct = trim($row['correct_ans'] ?? '');
$correct_options = explode('|', $correct);
$total = 0;
$question = new QuestionBank([
'question' => $row['question'],
'marks' => $row['mark'],
'type' => $row['type'],
'q_group_id' => $this->group,
'category_id' => $this->category,
'sub_category_id' => $this->subcategory,
'user_id' => Auth::user()->id,
'number_of_option' => $total,
]);
$question->save();
if ($row['type'] == "M") {
$i = 1;
foreach ($options as $key => $option) {
if (!empty($option)) {
$online_question_option = new QuestionBankMuOption();
$online_question_option->question_bank_id = $question->id;
$online_question_option->title = $option;
if (in_array($key, $correct_options)) {
$online_question_option->status = 1;
} else {
$online_question_option->status = 0;
}
$online_question_option->save();
$question->number_of_option = $i;
$question->save();
$i++;
}
}
}
}
public function headingRow(): int
{
return 1;
}
}