300 lines
11 KiB
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
|
|
|
|
@push('styles')
|
|
{{-- 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: '© OpenStreetMap contributors'
|
|
}).addTo(map);
|
|
L.marker([lat, lng]).addTo(map);
|
|
map.invalidateSize();
|
|
}
|
|
});
|
|
</script>
|
|
@endsection
|