diff --git a/app/Http/Controllers/SoalController.php b/app/Http/Controllers/SoalController.php index de1bb61..daaf3a5 100644 --- a/app/Http/Controllers/SoalController.php +++ b/app/Http/Controllers/SoalController.php @@ -70,7 +70,8 @@ class SoalController extends Controller $soal->setRelation('soalDetail', $detailSoal); $halPertama = $daftarHal->first() ?? $hal; - + $pegawai = session('pegawai'); + dd($pegawai); return view('soal.index', [ 'soal' => $soal, 'hal' => $hal, @@ -78,6 +79,7 @@ class SoalController extends Controller 'daftarHal' => $daftarHal, 'totalHal' => $daftarHal->count(), 'soalId' => $soal->id, + 'pegawai' => $pegawai, ]); } diff --git a/resources/views/soal/index.blade.php b/resources/views/soal/index.blade.php index f9985d5..d2dfcfe 100644 --- a/resources/views/soal/index.blade.php +++ b/resources/views/soal/index.blade.php @@ -3,6 +3,7 @@ @section('title', 'Kuesioner Soal') @section('custom_css') + @endsection @@ -88,9 +135,7 @@ @if ($hal === $halPertama)
-

Judul Soal

{{ $soal->judul_soal ?? '-' }}
-

Keterangan

{!! $soal->keterangan_soal !!}
@@ -123,82 +168,226 @@ $pertanyaan = $detailConfig['soal'] ?? 'Pertanyaan tidak tersedia'; $type = $detailConfig['type'] ?? 'option'; $options = $detailConfig['options'] ?? []; + if (!is_array($options)) { + $options = []; + } + $optionValues = collect($options)->map(function ($value) { + return is_scalar($value) ? (string) $value : ''; + })->all(); $oldAnswer = old('jawaban.' . $detail->id); $oldOtherAnswer = old('jawaban_lainnya.' . $detail->id); - $showLainnya = $oldAnswer === 'Lainnya' || (!empty($oldOtherAnswer)); + $hasOldAnswer = $oldAnswer !== null && $oldAnswer !== ''; + $isCustomOldAnswer = $hasOldAnswer && !in_array($oldAnswer, $optionValues, true); + if (!$oldOtherAnswer && $isCustomOldAnswer) { + $oldOtherAnswer = $oldAnswer; + } + $showLainnya = $isCustomOldAnswer + || (is_string($oldAnswer) && stripos($oldAnswer, 'lainnya') !== false) + || (!empty($oldOtherAnswer)); $detailHal = $detail->hal ?? $listHal->first(); $isVisible = $detailHal == $hal; + $optionsCount = is_array($options) ? count($options) : 0; + $useSelectSearch = $optionsCount > 4; + $hasLainnyaOption = collect($options)->contains(function ($optionItem) { + return is_string($optionItem) && stripos($optionItem, 'lainnya') !== false; + }); + if (!$hasLainnyaOption && $type === 'option_with_other') { + $hasLainnyaOption = true; + } + $isConsentQuestion = !empty($detailConfig['persetujuan_form']); + $shouldForceLainnyaSelection = $hasLainnyaOption && $showLainnya; + $dualFormConfig = $detailConfig['dual_form'] ?? null; + $useDualForm = $type === 'dual_form' || (!empty($dualFormConfig) && $dualFormConfig !== false); + $dualYearOld = null; + $dualMonthOld = null; + if ($useDualForm && $oldAnswer) { + if (preg_match('/([0-9]+)\\s*\\(Tahun\\)/i', $oldAnswer, $matchYear)) { + $dualYearOld = $matchYear[1]; + } + if (preg_match('/([0-9]+)\\s*\\(Bulan\\)/i', $oldAnswer, $matchMonth)) { + $dualMonthOld = $matchMonth[1]; + } + } @endphp
-
-
- {{ $loop->iteration }} +
+
+
+ {{ $loop->iteration }} +
{{ $pertanyaan }}
+
+ @if ($isConsentQuestion) +

Pertanyaan persetujuan

+ @endif
-
-
{{ $pertanyaan }}
-
- @if ($type === 'textarea') - - @elseif ($type === 'text') - - @else - @if (!empty($options)) -
- @foreach ($options as $optionIndex => $option) - @php - $optionId = 'jawaban-' . $detail->id . '-' . $optionIndex; - $isLainnya = strtolower(trim($option)) === 'lainnya'; - @endphp -
- + @if ($useDualForm) +
+
+
+ + - + placeholder="Masukkan tahun">
- @if ($isLainnya) +
+ + +
+
+ +
+ @elseif ($type === 'textarea') + + @elseif ($type === 'text') + + @else + @if (!empty($options)) + @if ($useSelectSearch) + + @if ($hasLainnyaOption) +
+ +
+ @endif + @else + @php + $lainnyaWrapperRendered = false; + @endphp +
+ @foreach ($options as $optionIndex => $option) + @php + $optionId = 'jawaban-' . $detail->id . '-' . $optionIndex; + $optionLabel = is_scalar($option) ? (string) $option : ''; + $isLainnya = stripos($optionLabel, 'lainnya') !== false; + $optionValue = $isLainnya && $oldOtherAnswer ? $oldOtherAnswer : $optionLabel; + $shouldCheck = $oldAnswer === $optionValue || ($isLainnya && $shouldForceLainnyaSelection); + @endphp +
+ + +
+ @if ($isLainnya) + @php + $lainnyaWrapperRendered = true; + @endphp +
+ +
+ @endif + @endforeach +
+ @if (!$lainnyaWrapperRendered && $type === 'option_with_other')
@endif - @endforeach -
- @else - + @endif + @else + + @endif @endif - @endif - @error('jawaban.' . $detail->id) -
{{ $message }}
- @enderror - @error('jawaban_lainnya.' . $detail->id) -
{{ $message }}
- @enderror + @error('jawaban.' . $detail->id) +
{{ $message }}
+ @enderror + @error('jawaban_lainnya.' . $detail->id) +
{{ $message }}
+ @enderror +
@empty @@ -243,6 +432,7 @@ @endsection @section('custom_js') + @endsection