diff --git a/app/Http/Controllers/SoalController.php b/app/Http/Controllers/SoalController.php index ea238ed..80df0bf 100644 --- a/app/Http/Controllers/SoalController.php +++ b/app/Http/Controllers/SoalController.php @@ -131,30 +131,30 @@ class SoalController extends Controller } } }); - $validated = $validator->validate(); - $jawabanUtama = $validated['jawaban'] ?? []; + $soalId = $validated['lms_mutu_soal_id']; - $detailIds = array_map('intval', array_keys($jawabanUtama)); - $detailMeta = SoalDetail::whereIn('id', $detailIds) + $allDetails = SoalDetail::where('lms_mutu_soal_id', $soalId) ->get(['id', 'soal']) ->keyBy('id'); - $jawabanBaru = null; + $jawabanUtama = $validated['jawaban'] ?? []; $jawabanLainnya = $validated['jawaban_lainnya'] ?? []; $namaResponden = null; + $jawabanBaru = null; $unitKerja = null; $pegawai = session('pegawai') ?? []; $pegawaiId = is_array($pegawai) ? ($pegawai['id'] ?? null) : 1; - - DB::connection('dbLmsMutu')->transaction(function () use (&$jawabanBaru, $validated, $jawabanUtama, $jawabanLainnya, $detailMeta, &$namaResponden, &$unitKerja, $pegawaiId) { + DB::connection('dbLmsMutu')->transaction(function () use (&$jawabanBaru, $validated, $jawabanUtama, $jawabanLainnya, $allDetails, &$namaResponden, &$unitKerja, $pegawaiId) { $jawabanBaru = Jawaban::create([ 'lms_mutu_soal_id' => $validated['lms_mutu_soal_id'], 'pegawai_id' => $pegawaiId, 'tanggal_isi' => Carbon::now()->addHour(7), ]); - foreach ($jawabanUtama as $detailId => $answer) { + foreach ($allDetails as $detailId => $detail) { + $answer = $jawabanUtama[$detailId] ?? null; + if (is_array($answer)) { $answer = json_encode($answer); } @@ -163,18 +163,12 @@ class SoalController extends Controller $answer = $jawabanLainnya[$detailId]; } - if ($answer === null || $answer === '') { - continue; - } - - $detailIdInt = (int) $detailId; $pertanyaan = null; - if ($detailMeta->has($detailIdInt)) { - $decoded = json_decode($detailMeta[$detailIdInt]->soal, true); - $pertanyaan = Str::lower(trim($decoded['soal'] ?? '')); - } + $decoded = json_decode($detail->soal, true); + $pertanyaan = Str::lower(trim($decoded['soal'] ?? '')); - if ($pertanyaan) { + + if ($pertanyaan && $answer) { if (Str::contains($pertanyaan, 'nama/inisial responden')) { $namaResponden = $answer; } @@ -186,7 +180,7 @@ class SoalController extends Controller JawabanDetail::create([ 'lms_mutu_jawaban_id' => $jawabanBaru->id, - 'lms_mutu_soal_detail_id' => $detailIdInt, + 'lms_mutu_soal_detail_id' => (int) $detailId, 'jawaban' => $answer, ]); } diff --git a/resources/views/soal/list.blade.php b/resources/views/soal/list.blade.php index f670c15..24bb898 100644 --- a/resources/views/soal/list.blade.php +++ b/resources/views/soal/list.blade.php @@ -54,13 +54,9 @@
{{ $soal->judul_soal ?? 'Tanpa Judul' }}

{{ \Illuminate\Support\Str::limit(strip_tags($soal->keterangan_soal ?? 'Belum ada keterangan'), 120) }}

- @if ($sudahDikerjakan) - Terisi - @else - - Mulai Isi + + {{ $sudahDikerjakan ? 'Terisi' : 'Mulai Isi' }} Mulai Isi - @endif