diff --git a/app/Http/Controllers/QuestionController.php b/app/Http/Controllers/QuestionController.php
index de4f848..7c51eb4 100644
--- a/app/Http/Controllers/QuestionController.php
+++ b/app/Http/Controllers/QuestionController.php
@@ -8,6 +8,7 @@ use App\Models\SingleChoiceAnswer;
use App\Models\SingleQuestionAnswers;
use App\Models\Test;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
class QuestionController extends Controller
{
@@ -32,45 +33,68 @@ class QuestionController extends Controller
*/
public function store(Request $request)
{
- $validated = $request->validate([
+ $validation_rules = [
"question" => "required|string",
"points" => "required|integer|min:1",
"test_id" => "required|integer",
"answer_type" => "required|string",
- ]);
+ ];
if ($request->answer_type == "single_answer") {
- $validated_answer = $request->validate([
- "answer" => "required|string",
- ]);
+ $validation_rules["answer"] = "required|string";
} else if ($request->answer_type == "single_choice") {
- $validated_answer = $request->validate([
- "correct_answer" => "required|string",
- "incorrect_answer1" => "required|string",
- "incorrect_answer2" => "nullable|string",
- "incorrect_answer3" => "nullable|string",
- ]);
+ $validation_rules["correct_answer"] = "required|string";
+ $validation_rules["incorrect_answer1"] = "required|string";
+ $validation_rules["incorrect_answer2"] = "nullable|string";
+ $validation_rules["incorrect_answer3"] = "nullable|string";
} else if ($request->answer_type == "multiple_choice") {
- $validated_answer = $request->validate([
- "answer1" => "required|string",
- "answer2" => "required|string",
- "answer3" => "nullable|string",
- "answer4" => "nullable|string",
- "is_answer1_correct" => "nullable|boolean",
- "is_answer2_correct" => "nullable|boolean",
- "is_answer3_correct" => "nullable|boolean",
- "is_answer4_correct" => "nullable|boolean",
- ]);
+ $validation_rules["answer1"] = "required|string";
+ $validation_rules["answer2"] = "required|string";
+ $validation_rules["answer3"] = "nullable|string";
+ $validation_rules["answer4"] = "nullable|string";
+ $validation_rules["is_answer1_correct"] = "nullable|string";
+ $validation_rules["is_answer2_correct"] = "nullable|string";
+ $validation_rules["is_answer3_correct"] = "nullable|string";
+ $validation_rules["is_answer4_correct"] = "nullable|string";
}
- $question = Question::create($validated);
- $validated_answer["question_id"] = $question->id;
+ $validated = $request->validate($validation_rules);
+ $question = Question::create([
+ "question" => $validated["question"],
+ "points" => $validated["points"],
+ "test_id" => $validated["test_id"],
+ "answer_type" => $validated["answer_type"],
+ ]);
if ($request->answer_type == "single_answer") {
- SingleQuestionAnswers::create($validated_answer);
+ SingleQuestionAnswers::create([
+ "question_id" => $question->id,
+ "answer" => $validated["answer"],
+ ]);
} else if ($request->answer_type == "single_choice") {
- SingleChoiceAnswer::create($validated_answer);
+ SingleChoiceAnswer::create([
+ "question_id" => $question->id,
+ "correct_answer" => $validated["correct_answer"],
+ "incorrect_answer1" => $validated["incorrect_answer1"],
+ "incorrect_answer2" => $validated["incorrect_answer2"],
+ "incorrect_answer3" => $validated["incorrect_answer3"],
+ ]);
} else if ($request->answer_type == "multiple_choice") {
- MultipleChoiceAnswers::create($validated_answer);
+ $validated["is_answer1_correct"] = !empty($validated["is_answer1_correct"]) && $validated["is_answer1_correct"] == "on";
+ $validated["is_answer2_correct"] = !empty($validated["is_answer2_correct"]) && $validated["is_answer2_correct"] == "on";
+ $validated["is_answer3_correct"] = !empty($validated["is_answer3_correct"]) && $validated["is_answer3_correct"] == "on";
+ $validated["is_answer4_correct"] = !empty($validated["is_answer4_correct"]) && $validated["is_answer4_correct"] == "on";
+
+ MultipleChoiceAnswers::create([
+ "question_id" => $question->id,
+ "answer1" => $validated["answer1"],
+ "answer2" => $validated["answer2"],
+ "answer3" => $validated["answer3"],
+ "answer4" => $validated["answer4"],
+ "is_answer1_correct" => $validated["is_answer1_correct"],
+ "is_answer2_correct" => $validated["is_answer2_correct"],
+ "is_answer3_correct" => $validated["is_answer3_correct"],
+ "is_answer4_correct" => $validated["is_answer4_correct"],
+ ]);
}
return redirect(route("tests.edit", [
diff --git a/resources/views/components/question-fields.blade.php b/resources/views/components/question-fields.blade.php
index 5841325..8882cd4 100644
--- a/resources/views/components/question-fields.blade.php
+++ b/resources/views/components/question-fields.blade.php
@@ -52,7 +52,7 @@
@for ($idx = 1; $idx <= 3; $idx++)