From d07e24e39b3d15befc8736d77da2c971e5ffafe7 Mon Sep 17 00:00:00 2001 From: Mahayoga Date: Wed, 20 May 2026 12:25:14 +0700 Subject: [PATCH] WIP: perbaikan reverse soal dan jawaban --- .../Controllers/FinishUjianController.php | 54 +++++++++++++++---- ..._20_112703_change_column_in_soal_table.php | 30 +++++++++++ .../user/pages/finish_ujian/index.blade.php | 40 +++++++++----- 3 files changed, 101 insertions(+), 23 deletions(-) create mode 100644 database/migrations/2026_05_20_112703_change_column_in_soal_table.php diff --git a/app/Http/Controllers/FinishUjianController.php b/app/Http/Controllers/FinishUjianController.php index dd954ec..7eb5ec1 100644 --- a/app/Http/Controllers/FinishUjianController.php +++ b/app/Http/Controllers/FinishUjianController.php @@ -28,6 +28,7 @@ public function getNotAnswered(Request $request) { $data_ujian[] = [ 'id_soal' => $detail->id_soal, 'soal' => $detail->pertanyaan, + 'skor' => 0 ]; } } @@ -58,22 +59,40 @@ public function getAllAnswer(Request $request) { foreach($detail_test as $detail) { $data_soal = DataSoalModel::where('id_soal', $detail->id_soal)->first(); $data_jawaban = $detail->jawaban; + $skor = null; if($data_jawaban == 'a') { $data_jawaban = $data_soal->jawaban_a; + $skor = 1; } else if($data_jawaban == 'b') { $data_jawaban = $data_soal->jawaban_b; + $skor = 2; } else if($data_jawaban == 'c') { $data_jawaban = $data_soal->jawaban_c; + $skor = 3; } else if($data_jawaban == 'd') { $data_jawaban = $data_soal->jawaban_d; + $skor = 4; } else if($data_jawaban == 'e') { $data_jawaban = $data_soal->jawaban_e; } else { $data_jawaban = 'Tidak menjawab'; } + + if($detail->jawaban == 'a' && $data_soal->is_reverse == 1) { + $skor = 4; + } else if($detail->jawaban == 'b' && $data_soal->is_reverse == 1) { + $skor = 3; + } else if($detail->jawaban == 'c' && $data_soal->is_reverse == 1) { + $skor = 2; + } else if($detail->jawaban == 'd' && $data_soal->is_reverse == 1) { + $skor = 1; + } + $data_ujian[] = [ 'id_soal' => $detail->id_soal, 'jawaban' => $data_jawaban, + 'is_reverse' => $data_soal->is_reverse, + 'skor' => $skor, 'jawaban_key' => $detail->jawaban, 'soal' => $data_soal->pertanyaan ]; @@ -134,17 +153,32 @@ public function index(Request $request) foreach($detail_test as $detail) { $data_soal = DataSoalModel::where('id_soal', $detail->id_soal)->first(); $data_jawaban = $detail->jawaban; - if($data_jawaban == 'a') { - $totalScore += 1; - } else if($data_jawaban == 'b') { - $totalScore += 2; - } else if($data_jawaban == 'c') { - $totalScore += 3; - } else if($data_jawaban == 'd') { - $totalScore += 4; - } else if($data_jawaban == 'e') { - $totalScore += 5; + if($data_soal->is_reverse == 1) { + if($data_jawaban == 'a') { + $totalScore += 4; + } else if($data_jawaban == 'b') { + $totalScore += 3; + } else if($data_jawaban == 'c') { + $totalScore += 2; + } else if($data_jawaban == 'd') { + $totalScore += 1; + } else if($data_jawaban == 'e') { + $totalScore += 0; + } + } else { + if($data_jawaban == 'a') { + $totalScore += 1; + } else if($data_jawaban == 'b') { + $totalScore += 2; + } else if($data_jawaban == 'c') { + $totalScore += 3; + } else if($data_jawaban == 'd') { + $totalScore += 4; + } else if($data_jawaban == 'e') { + $totalScore += 5; + } } + } $data_aswered = [ 'total_question' => $question_count, diff --git a/database/migrations/2026_05_20_112703_change_column_in_soal_table.php b/database/migrations/2026_05_20_112703_change_column_in_soal_table.php new file mode 100644 index 0000000..71f1341 --- /dev/null +++ b/database/migrations/2026_05_20_112703_change_column_in_soal_table.php @@ -0,0 +1,30 @@ +enum('jawaban_benar', [0, 1])->default(0)->change(); + $table->renameColumn('jawaban_benar', 'is_reverse'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('soal', function (Blueprint $table) { + $table->renameColumn('is_reverse', 'jawaban_benar'); + $table->enum('jawaban_benar', ['a', 'b', 'c', 'd', 'e'])->change(); + }); + } +}; diff --git a/resources/views/user/pages/finish_ujian/index.blade.php b/resources/views/user/pages/finish_ujian/index.blade.php index ef06004..7860182 100644 --- a/resources/views/user/pages/finish_ujian/index.blade.php +++ b/resources/views/user/pages/finish_ujian/index.blade.php @@ -81,7 +81,7 @@

Tingkat Kecemasan

- @if ($data_aswered['totalScore'] >= 20) + @if ($data_aswered['totalScore'] <= 20)

Normal

@@ -295,6 +295,7 @@ No Pertanyaan Jawaban + Skor @@ -530,18 +531,31 @@ function showInsight(type) { data: null, render: function(data, type, row) { let renderedJawaban = null; + if(row.jawaban_key == 'a') { - renderedJawaban = `${row.jawaban}`; - score = 1; + if(row.is_reverse == 1) { + renderedJawaban = `${row.jawaban}`; + } else { + renderedJawaban = `${row.jawaban}`; + } } else if(row.jawaban_key == 'b') { - renderedJawaban = `${row.jawaban}`; - score = 2; + if(row.is_reverse == 1) { + renderedJawaban = `${row.jawaban}`; + } else { + renderedJawaban = `${row.jawaban}`; + } } else if(row.jawaban_key == 'c') { - renderedJawaban = `${row.jawaban}`; - score = 3; + if(row.is_reverse == 1) { + renderedJawaban = `${row.jawaban}`; + } else { + renderedJawaban = `${row.jawaban}`; + } } else if(row.jawaban_key == 'd') { - renderedJawaban = `${row.jawaban}`; - score = 4; + if(row.is_reverse == 1) { + renderedJawaban = `${row.jawaban}`; + } else { + renderedJawaban = `${row.jawaban}`; + } } else if(row.jawaban_key == 'e') { renderedJawaban = `${row.jawaban}`; score = 5; @@ -552,10 +566,7 @@ function showInsight(type) { } }, { - data: null, - render: function(data, type, row) { - return `${score}`; - } + data: 'skor', } ] }); @@ -582,6 +593,9 @@ function showInsight(type) { render: function(data, type, row, meta) { return `Tidak dijawab`; } + }, + { + data: 'skor' } ] });