@php
$questions = \App\Models\ActivityDataMitigation::where('mitigation_id', $sessionData['mitigation_id'])
->orderBy('sequence')
->get()
->keyBy('sequence');
// Non-multiple questions (single answer)
$nonMultipleQuestions = $questions->filter(fn($q) => !$q->is_multiple);
// Multiple questions (is_multiple), filter yg punya jawaban
$multipleQuestions = $questions->filter(function($q) use ($sessionData) {
$field = "activity_data_{$q->sequence}";
$answers = (array)($sessionData['activity_forms'][$field] ?? []);
// Cek minimal 1 jawaban yg gak kosong
return $q->is_multiple && collect($answers)->filter(function($v) {
return trim($v) !== '';
})->isNotEmpty();
});
// Build data untuk tabel
$allAnswers = [];
$maxRows = 0;
foreach($multipleQuestions as $seq => $q) {
$field = "activity_data_{$seq}";
$ansArr = (array)($sessionData['activity_forms'][$field] ?? []);
$allAnswers[$seq] = $ansArr;
$maxRows = max($maxRows, count($ansArr));
}
@endphp
{{-- Non-multiple field --}}
@foreach($nonMultipleQuestions as $seq => $q)
@php
$field = "activity_data_{$seq}";
$answers = (array)($sessionData['activity_forms'][$field] ?? []);
$unit = $q->unit ?? '';
@endphp
@if(count($answers) > 0)
{{ $q->activity_data }}
@foreach($answers as $ans)
@if($unit)
{{ $unit }}
@endif
@endforeach
@endif
@endforeach
{{-- Tabel Multiple, hanya jika ada kolom pertanyaan --}}
@if(count($multipleQuestions))
Hasil Jawaban Mitigasi
| No |
@foreach($multipleQuestions as $q)
{{ $q->activity_data }}
@if($q->unit)
{{ $q->unit }}
@endif
|
@endforeach
@for($i = 0; $i < $maxRows; $i++)
| {{ $i + 1 }} |
@foreach($multipleQuestions as $seq => $q)
{{ $allAnswers[$seq][$i] ?? '' }}
|
@endforeach
@endfor
@endif