Pendekatan Pasar Metode Perbandingan Data Pasar
Tanggal Penilaian {{ $tanggal_penilaian ?? '-' }}
Nama Pemilik Aset -
Nama Pemberi Tugas -
Lokasi {{ $lokasi ?? '-' }}
Nama Debitur -

A Informasi Umum

@php $dataform = json_decode(isset($data->data_form) ? $data->data_form : '', true) ?? []; $dataPembanding = json_decode(isset($data->data_pembanding) ? $data->data_pembanding : '', true) ?? []; // print_r($dataform); // echo $dataform; @endphp @php function getNestedValue($data, $keyPath, $default = '-') { // Pecah path kunci menjadi array $keys = explode('.', $keyPath); // Mulai dari data awal $value = $data; // Telusuri setiap kunci foreach ($keys as $key) { // Cek apakah kunci ada di level saat ini if (is_array($value) && array_key_exists($key, $value)) { $value = $value[$key]; } else { // Jika kunci tidak ditemukan, kembalikan default return $default; } } // Kembalikan nilai akhir atau default jika kosong return $value ?? $default; } $rows = [ [ 'label' => 'Jenis Aset', 'key' => 'asset.jenis_aset', 'default' => 'Rumah Tinggal', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Luas Tanah (M²)', 'key' => 'tanah.luas_tanah', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Luas Bangunan (M²)', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Penawaran Transaksi', 'key' => '-', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Tanggal Penawaran', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Discon', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Estimasi Harga', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Telepon Contact person', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Nama Nara Sumber', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Status Nara Sumber', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Waktu Penawaran', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Alamat', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Jalan', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Desa/Kelurahan', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Kecamatan', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Kota/Kabupaten', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Provinsi', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Jarak Pembanding dengan Objek', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Esitmasi Rangking Tanah', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], [ 'label' => 'Estimasi Ranking bangunan', 'key' => 'bangunan.luas_tanah_bangunan', 'default' => '-', 'variants' => [ 'sesuai' => 'Sesuai', 'tidak sesuai' => 'Tidak Sesuai', ], ], ]; @endphp @foreach ($rows as $index => $item) @for ($i = 0; $i < 3; $i++) @endfor @endforeach
No. Uraian Objek Penilaian Data Pembanding 1 Data Pembanding 2 Data Pembanding 3
{{ $index + 1 }} {{ $item['label'] }} @php // Coba berbagai varian kunci $objekValue = '-'; foreach (['sesuai', 'tidak sesuai'] as $variant) { $fullKey = $item['key'] . '.' . $variant; $objekValue = getNestedValue($dataform, $fullKey, $item['default']); // Jika nilai ditemukan, hentikan pencarian if ($objekValue !== $item['default']) { break; } } @endphp {{ $objekValue }} @php $pembandingValue = '-'; // Pastikan data pembanding tersedia if (isset($dataPembanding['data_pembanding'][$i])) { $pembandingItem = $dataPembanding['data_pembanding'][$i]; // Mapping key berdasarkan label switch ($item['label']) { case 'Jenis Aset': $pembandingValue = $pembandingItem['jenis_aset'] ?? '-'; break; case 'Luas Tanah (M²)': $pembandingValue = $pembandingItem['luas_tanah'] ?? '-'; break; case 'Luas Bangunan (M²)': $pembandingValue = $pembandingItem['luas_bangunan'] ?? '-'; break; default: $pembandingValue = '-'; } } @endphp {{ $pembandingValue }}

B. Estimasi Nilai Tanah Pembanding dengan Teknik Penyisaan Tanah untuk mendapatkan per meter persegi estimasi Nilai Tanah Pembanding

@php $estimasi = [ [ 'label' => 'Biaya Teknis Bangunan', ], [ 'label' => 'Estimasi Biaya Pengganti Baru Bangunan', ], [ 'label' => 'Estimasi Biaya Pengganti SPL (Rp)', ], [ 'label' => 'Penyusutan Fisik Banguan', ], ]; @endphp @foreach ($estimasi as $index => $item) @for ($i = 0; $i < 3; $i++) @endfor @endforeach
No. Uraian Objek Penilaian Data Pembanding 1 Data Pembanding 2 Data Pembanding 3
{{ $index + 1 }} {{ $item['label'] }} - @php $pembandingValue = '-'; // Pastikan data pembanding tersedia if (isset($dataPembanding['data_pembanding'][$i])) { $pembandingItem = $dataPembanding['data_pembanding'][$i]; // Mapping key berdasarkan label switch ($item['label']) { case 'Jenis Aset': $pembandingValue = $pembandingItem['jenis_aset'] ?? '-'; break; case 'Luas Tanah (M²)': $pembandingValue = $pembandingItem['luas_tanah'] ?? '-'; break; case 'Luas Bangunan (M²)': $pembandingValue = $pembandingItem['luas_bangunan'] ?? '-'; break; default: $pembandingValue = '-'; } } @endphp {{ $pembandingValue }}

Peta Objek dan Pembanding

@php $fotoTypes = ['foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat']; @endphp @php $imagePath = $dataform['foto_gistaru']; @endphp
@forelse ($fotoTypes as $type)
@php $imagePath = $dataform[$type]; @endphp {{-- @if ($imagePath && Storage::exists($imagePath)) --}} {{ $type }}

{{ Str::title(str_replace('_', ' ', $type)) }}

{{-- @else

Tidak ada gambar

@endif --}}
@empty

Tidak ada tipe foto yang tersedia

@endforelse

FOTO OBJEK DAN DATA PEMBANDING

@forelse ($dataPembanding['data_pembanding'] ?? [] as $index => $item)
@php $fotoObjek = $item['foto_objek']; @endphp @if ($fotoObjek && Storage::exists($fotoObjek)) Foto Objek Pembanding {{ $loop->iteration }}

Data Pembanding {{ $loop->iteration }}

@else

Tidak ada gambar pembanding

@endif
@empty

Tidak ada data pembanding

@endforelse

FOTO OBJEK

@php // Fungsi untuk mengumpulkan foto dengan pengecekan yang aman function collectSafeImages($data, $paths = []) { if (!is_array($data)) { return $paths; } foreach ($data as $key => $value) { if (is_array($value)) { // Jika array memiliki kunci foto if (isset($value['foto_rute'])) { $paths[] = $value['foto_rute']; } if (isset($value['foto_objek'])) { $paths[] = $value['foto_objek']; } if (isset($value['foto_lingkungan'])) { $paths[] = $value['foto_lingkungan']; } if (isset($value['foto_lantai_unit'])) { $paths[] = $value['foto_lantai_unit']; } // Rekursif untuk nested array $paths = collectSafeImages($value, $paths); } elseif (is_string($value) && strpos($value, 'foto_') !== false) { $paths[] = $value; } } return $paths; } // Decode foto form dengan penanganan error try { $dataFoto = json_decode($data->foto_form, true) ?? []; } catch (Exception $e) { $dataFoto = []; } // Kumpulkan foto $images = collectSafeImages($dataFoto); // Filter foto yang valid $validImages = array_filter($images, function($image) { return $image && Storage::exists($image); }) @endphp
@forelse ($validImages as $image)
Foto Survey
@empty

Tidak ada foto objek yang tersedia

@endforelse