From 66c8094dbb87308b33c4c0ad21fb463849142b46 Mon Sep 17 00:00:00 2001 From: Harish Durga Date: Sun, 5 Jun 2022 19:05:24 +0530 Subject: [PATCH] Enable negative marking setting column made null and defined an accessor --- ..._marks_columns_to_quiz_questions_table.php | 6 +----- src/Models/Quiz.php | 21 +++++++++++++++++-- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/database/migrations/2022_05_27_163432_add_negative_marks_columns_to_quiz_questions_table.php b/database/migrations/2022_05_27_163432_add_negative_marks_columns_to_quiz_questions_table.php index 7645e2b..82eafb3 100644 --- a/database/migrations/2022_05_27_163432_add_negative_marks_columns_to_quiz_questions_table.php +++ b/database/migrations/2022_05_27_163432_add_negative_marks_columns_to_quiz_questions_table.php @@ -19,11 +19,7 @@ public function __construct() public function up() { Schema::table($this->tableNames['quizzes'], function (Blueprint $table) { - $table->json('negative_marking_settings')->default(json_encode([ - 'enable_negative_marks' => true, - 'negative_marking_type' => 'fixed', - 'negative_mark_value' => 0, - ]))->after('pass_marks'); + $table->json('negative_marking_settings')->nullable()->after('pass_marks'); }); } diff --git a/src/Models/Quiz.php b/src/Models/Quiz.php index 7a00430..382a27e 100644 --- a/src/Models/Quiz.php +++ b/src/Models/Quiz.php @@ -2,10 +2,11 @@ namespace Harishdurga\LaravelQuiz\Models; -use Harishdurga\LaravelQuiz\Database\Factories\QuizFactory; -use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Database\Eloquent\Casts\Attribute; +use Illuminate\Database\Eloquent\Factories\HasFactory; +use Harishdurga\LaravelQuiz\Database\Factories\QuizFactory; class Quiz extends Model { @@ -54,4 +55,20 @@ public function attempts() { return $this->hasMany(QuizAttempt::class); } + + /** + * Interact with the user's address. + * + * @return \Illuminate\Database\Eloquent\Casts\Attribute + */ + protected function negativeMarkingSettings(): Attribute + { + return Attribute::make( + get: fn ($value) => empty($value) ? [ + 'enable_negative_marks' => true, + 'negative_marking_type' => Quiz::FIXED_NEGATIVE_TYPE, + 'negative_mark_value' => 0 + ] : json_decode($value, true), + ); + } }