done lms mutu soal

This commit is contained in:
JokoPrasetio 2025-12-04 13:19:16 +07:00
parent f77eb9aeb1
commit decc83cc92
2 changed files with 15 additions and 25 deletions

View File

@ -131,30 +131,30 @@ class SoalController extends Controller
} }
} }
}); });
$validated = $validator->validate(); $validated = $validator->validate();
$jawabanUtama = $validated['jawaban'] ?? []; $soalId = $validated['lms_mutu_soal_id'];
$detailIds = array_map('intval', array_keys($jawabanUtama)); $allDetails = SoalDetail::where('lms_mutu_soal_id', $soalId)
$detailMeta = SoalDetail::whereIn('id', $detailIds)
->get(['id', 'soal']) ->get(['id', 'soal'])
->keyBy('id'); ->keyBy('id');
$jawabanBaru = null; $jawabanUtama = $validated['jawaban'] ?? [];
$jawabanLainnya = $validated['jawaban_lainnya'] ?? []; $jawabanLainnya = $validated['jawaban_lainnya'] ?? [];
$namaResponden = null; $namaResponden = null;
$jawabanBaru = null;
$unitKerja = null; $unitKerja = null;
$pegawai = session('pegawai') ?? []; $pegawai = session('pegawai') ?? [];
$pegawaiId = is_array($pegawai) ? ($pegawai['id'] ?? null) : 1; $pegawaiId = is_array($pegawai) ? ($pegawai['id'] ?? null) : 1;
DB::connection('dbLmsMutu')->transaction(function () use (&$jawabanBaru, $validated, $jawabanUtama, $jawabanLainnya, $allDetails, &$namaResponden, &$unitKerja, $pegawaiId) {
DB::connection('dbLmsMutu')->transaction(function () use (&$jawabanBaru, $validated, $jawabanUtama, $jawabanLainnya, $detailMeta, &$namaResponden, &$unitKerja, $pegawaiId) {
$jawabanBaru = Jawaban::create([ $jawabanBaru = Jawaban::create([
'lms_mutu_soal_id' => $validated['lms_mutu_soal_id'], 'lms_mutu_soal_id' => $validated['lms_mutu_soal_id'],
'pegawai_id' => $pegawaiId, 'pegawai_id' => $pegawaiId,
'tanggal_isi' => Carbon::now()->addHour(7), 'tanggal_isi' => Carbon::now()->addHour(7),
]); ]);
foreach ($jawabanUtama as $detailId => $answer) { foreach ($allDetails as $detailId => $detail) {
$answer = $jawabanUtama[$detailId] ?? null;
if (is_array($answer)) { if (is_array($answer)) {
$answer = json_encode($answer); $answer = json_encode($answer);
} }
@ -163,18 +163,12 @@ class SoalController extends Controller
$answer = $jawabanLainnya[$detailId]; $answer = $jawabanLainnya[$detailId];
} }
if ($answer === null || $answer === '') {
continue;
}
$detailIdInt = (int) $detailId;
$pertanyaan = null; $pertanyaan = null;
if ($detailMeta->has($detailIdInt)) { $decoded = json_decode($detail->soal, true);
$decoded = json_decode($detailMeta[$detailIdInt]->soal, true); $pertanyaan = Str::lower(trim($decoded['soal'] ?? ''));
$pertanyaan = Str::lower(trim($decoded['soal'] ?? ''));
}
if ($pertanyaan) {
if ($pertanyaan && $answer) {
if (Str::contains($pertanyaan, 'nama/inisial responden')) { if (Str::contains($pertanyaan, 'nama/inisial responden')) {
$namaResponden = $answer; $namaResponden = $answer;
} }
@ -186,7 +180,7 @@ class SoalController extends Controller
JawabanDetail::create([ JawabanDetail::create([
'lms_mutu_jawaban_id' => $jawabanBaru->id, 'lms_mutu_jawaban_id' => $jawabanBaru->id,
'lms_mutu_soal_detail_id' => $detailIdInt, 'lms_mutu_soal_detail_id' => (int) $detailId,
'jawaban' => $answer, 'jawaban' => $answer,
]); ]);
} }

View File

@ -54,13 +54,9 @@
<h5 class="fw-semibold mb-2">{{ $soal->judul_soal ?? 'Tanpa Judul' }}</h5> <h5 class="fw-semibold mb-2">{{ $soal->judul_soal ?? 'Tanpa Judul' }}</h5>
<p class="text-muted flex-grow-1">{{ \Illuminate\Support\Str::limit(strip_tags($soal->keterangan_soal ?? 'Belum ada keterangan'), 120) }}</p> <p class="text-muted flex-grow-1">{{ \Illuminate\Support\Str::limit(strip_tags($soal->keterangan_soal ?? 'Belum ada keterangan'), 120) }}</p>
<div class="mt-3 d-flex justify-content-between align-items-center"> <div class="mt-3 d-flex justify-content-between align-items-center">
@if ($sudahDikerjakan) <a href="{{ route('soal.index', ['start' => 1, 'soal_id' => $soal->id]) }}" class="btn {{ $sudahDikerjakan ? 'text-success fw-semibold' : 'btn-primary btn-sm btn-start'}} ">
<span class="text-success fw-semibold">Terisi</span> {{ $sudahDikerjakan ? 'Terisi' : 'Mulai Isi' }} Mulai Isi
@else
<a href="{{ route('soal.index', ['start' => 1, 'soal_id' => $soal->id]) }}" class="btn btn-primary btn-sm btn-start">
Mulai Isi
</a> </a>
@endif
</div> </div>
</div> </div>
</div> </div>