sigd/resources/views/modules/form/index-mitigasi-view.blade.php

300 lines
11 KiB
PHP

{{-- resources/views/form/view-mitigasi.blade.php --}}
@extends('layouts.master')
@section('title', 'View Mitigation')
@section('content')
<div class="container py-4">
<h2 class="mb-4">Detail Laporan Mitigasi</h2>
{{-- Langkah 1 --}}
<div class="card mb-3">
<div class="card-header font-weight-bold">Langkah 1: Informasi Umum</div>
<div class="card-body">
<dl class="row">
<dt class="col-sm-3">Tipe Laporan</dt>
<dd class="col-sm-9">{{ $sessionData['tipe_laporan'] }}</dd>
<dt class="col-sm-3">Tipe Kegiatan</dt>
<dd class="col-sm-9">{{ $sessionData['tipe_kegiatan'] }}</dd>
<dt class="col-sm-3">Tahun Kegiatan</dt>
<dd class="col-sm-9">{{ $sessionData['tahun_kegiatan'] }}</dd>
<dt class="col-sm-3">Sektor</dt>
<dd class="col-sm-9">{{ $sessionData['sektor'] }}</dd>
<dt class="col-sm-3">Sub-Sektor</dt>
<dd class="col-sm-9">{{ $sessionData['sub_sektor'] }}</dd>
<dt class="col-sm-3">Aktivitas</dt>
<dd class="col-sm-9">{{ $sessionData['kategori_perhitungan'] }}</dd>
@if(! empty($sessionData['kategori_sub_aktivitas']))
<dt class="col-sm-3">Sub-Aktivitas</dt>
<dd class="col-sm-9">{{ $sessionData['kategori_sub_aktivitas'] }}</dd>
@endif
</dl>
</div>
</div>
{{-- Langkah 2 --}}
<div class="card mb-3">
<div class="card-header font-weight-bold">Langkah 2: Data Umum Kegiatan Mitigasi</div>
<div class="card-body">
<dl class="row">
<dt class="col-sm-3">Nama Kegiatan</dt>
<dd class="col-sm-9">{{ $sessionData['nama_kegiatan'] }}</dd>
<dt class="col-sm-3">Informasi Lokasi & Detail</dt>
<dd class="col-sm-9">{{ $sessionData['informasi_lokasi_kegiatan'] }}</dd>
<dt class="col-sm-3">Jenis Kegiatan</dt>
<dd class="col-sm-9">{{ $sessionData['jenis_kegiatan'] }}</dd>
<dt class="col-sm-3">Pelaksana Kegiatan</dt>
<dd class="col-sm-9">{{ $sessionData['pelaksana_kegiatan'] }}</dd>
<dt class="col-sm-3">Tautan RAD</dt>
<dd class="col-sm-9">{{ $sessionData['pelaksana_kegiatan_rad'] }}</dd>
<dt class="col-sm-3">Nomenklatur Kemendagri</dt>
<dd class="col-sm-9">{{ $sessionData['nomenklatur_kemendagri'] }}</dd>
<dt class="col-sm-3">Target / Satuan</dt>
<dd class="col-sm-9">{{ $sessionData['target'] }} {{ $sessionData['satuan'] }}</dd>
<dt class="col-sm-3">Realisasi</dt>
<dd class="col-sm-9">{{ $sessionData['realisasi'] }}</dd>
<dt class="col-sm-3">Kaitan SDG</dt>
<dd class="col-sm-9">{{ implode(', ', $sessionData['sdg'] ?? []) }}</dd>
<dt class="col-sm-3">Catatan Tambahan</dt>
<dd class="col-sm-9">{{ $sessionData['catatan'] }}</dd>
</dl>
</div>
</div>
{{-- Langkah 3 --}}
<div class="card mb-3">
<div class="card-header font-weight-bold">Langkah 3: Alokasi & Realisasi Anggaran</div>
<div class="card-body">
<h6>Alokasi Anggaran (Rp)</h6>
<dl class="row">
<dt class="col-sm-3">APBN</dt><dd class="col-sm-9">{{ $sessionData['alokasi_apbn'] }}</dd>
<dt class="col-sm-3">APBD</dt><dd class="col-sm-9">{{ $sessionData['alokasi_apbd'] }}</dd>
<dt class="col-sm-3">Swasta</dt><dd class="col-sm-9">{{ $sessionData['alokasi_swasta'] }}</dd>
<dt class="col-sm-3">Lain-lain</dt><dd class="col-sm-9">{{ $sessionData['alokasi_sumber_dana_lain'] }}</dd>
</dl>
<h6 class="mt-3">Realisasi Anggaran (Rp)</h6>
<dl class="row">
<dt class="col-sm-3">APBN</dt><dd class="col-sm-9">{{ $sessionData['realisasi_apbn'] }}</dd>
<dt class="col-sm-3">APBD</dt><dd class="col-sm-9">{{ $sessionData['realisasi_apbd'] }}</dd>
<dt class="col-sm-3">Swasta</dt><dd class="col-sm-9">{{ $sessionData['realisasi_swasta'] }}</dd>
<dt class="col-sm-3">Lain-lain</dt><dd class="col-sm-9">{{ $sessionData['realisasi_sumber_dana_lain'] }}</dd>
</dl>
@if(! empty($sessionData['sumber_data']))
<h6 class="mt-3">Sumber Data</h6>
<ul>
@foreach($sessionData['sumber_data'] as $s)
<li>
{{ $s['title'] }} ({{ $s['year'] }})
@if($s['link']) <a href="{{ $s['link'] }}" target="_blank">Link</a>@endif
</li>
@endforeach
</ul>
@endif
<h6 class="mt-3">Lokasi Kegiatan</h6>
<dl class="row">
<dt class="col-sm-3">Kabupaten/Kota</dt>
<dd class="col-sm-9">
@php
$kab = \App\Models\Kabupaten::where('kabkot_id', $sessionData['kabupaten_kota_location'])->first();
@endphp
{{ $kab->kabkot_name ?? '-' }}
</dd>
<dt class="col-sm-3">Kecamatan</dt>
<dd class="col-sm-9">
@php
$kec = \App\Models\Kecamatan::where('kec_id', $sessionData['kecamatan_location'])->first();
@endphp
{{ $kec->kec_name ?? '-' }}
</dd>
<dt class="col-sm-3">Kelurahan</dt>
<dd class="col-sm-9">
@php
$kel = \App\Models\Kelurahan::where('kel_id', $sessionData['kelurahan_location'])->first();
@endphp
{{ $kel->kel_name ?? '-' }}
</dd>
<dt class="col-sm-3">Koordinat</dt>
<dd class="col-sm-9">
Lat: {{ $sessionData['lat_location'] }},
Lng: {{ $sessionData['long_location'] }}
</dd>
{{-- Peta Leaflet --}}
<dt class="col-sm-3">Peta Lokasi</dt>
<dd class="col-sm-9">
<div id="map" style="height:300px; width:100%; border:1px solid #ccc;"></div>
</dd>
</dl>
</div>
</div>
<!-- {{-- Langkah 4 --}}
<div class="card mb-3">
<div class="card-header font-weight-bold">Langkah 4: Jawaban Form Mitigasi</div>
<div class="card-body">
@php
$questions = \App\Models\ActivityDataMitigation::where('mitigation_id', $sessionData['mitigation_id'])->orderBy('sequence')->pluck('activity_data','sequence');
@endphp
@foreach($sessionData['activity_forms'] as $field => $answers)
@continue(! Str::startsWith($field, 'activity_data_'))
@php
$seq = substr($field, strlen('activity_data_'));
$unit = $sessionData["unit_{$seq}"] ?? '';
$label = $questions[$seq] ?? "Pertanyaan #{$seq}";
@endphp
<h6>{{ $label }}</h6>
@foreach((array)$answers as $ans)
<div class="input-group mb-2">
<input type="text" class="form-control" value="{{ $ans }}" readonly>
<div class="input-group-append">
<span class="input-group-text">{{ $unit }}</span>
</div>
</div>
@endforeach
@endforeach
</div>
</div>
</div> -->
{{-- Langkah 4 --}}
<div class="card mb-3">
<div class="card-header font-weight-bold">Langkah 4: Jawaban Form Mitigasi</div>
<div class="card-body">
@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)
<h6>{{ $q->activity_data }}</h6>
@foreach($answers as $ans)
<div class="input-group mb-2">
<input type="text" class="form-control" value="{{ $ans }}" readonly>
@if($unit)
<span class="input-group-text" style="font-size: 12px;">{{ $unit }}</span>
@endif
</div>
@endforeach
@endif
@endforeach
{{-- Tabel Multiple, hanya jika ada kolom pertanyaan --}}
@if(count($multipleQuestions))
<hr>
<h6 class="mt-4">Hasil Jawaban Mitigasi</h6>
<div class="table-responsive mb-4">
<table class="table table-bordered table-sm">
<thead>
<tr>
<th class="text-center" style="width: 40px;">No</th>
@foreach($multipleQuestions as $q)
<th>
{{ $q->activity_data }}
@if($q->unit)
<span class="badge bg-light text-dark" style="font-size: 12px;">{{ $q->unit }}</span>
@endif
</th>
@endforeach
</tr>
</thead>
<tbody>
@for($i = 0; $i < $maxRows; $i++)
<tr>
<td class="text-center">{{ $i + 1 }}</td>
@foreach($multipleQuestions as $seq => $q)
<td>
{{ $allAnswers[$seq][$i] ?? '' }}
</td>
@endforeach
</tr>
@endfor
</tbody>
</table>
</div>
@endif
</div>
</div>
@endsection
@section('css')
{{-- Leaflet CSS --}}
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"/>
@endsection
@section('js')
{{-- Leaflet JS --}}
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
const lat = parseFloat("{{ $sessionData['lat_location'] }}"),
lng = parseFloat("{{ $sessionData['long_location'] }}");
if (!isNaN(lat) && !isNaN(lng)) {
const map = L.map('map').setView([lat, lng], 14);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: '&copy; OpenStreetMap contributors'
}).addTo(map);
L.marker([lat, lng]).addTo(map);
map.invalidateSize();
}
});
</script>
@endsection