diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index f6e7588..e6a578e 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -63,12 +63,12 @@ class PenilaiController extends Controller $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); $jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id; - $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); + $inspeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $forminspeksi = null; - if ($inpeksi) { - $forminspeksi = json_decode($inpeksi->data_form, true); + if ($inspeksi) { + $forminspeksi = json_decode($inspeksi->data_form, true); } - return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'basicData', 'forminspeksi')); + return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'basicData', 'forminspeksi', 'inspeksi')); } public function standard($id) @@ -77,21 +77,22 @@ class PenilaiController extends Controller $jaminanId = $permohonan->debiture->documents->first()->jenis_jaminan_id; - $inpeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); + $inspeksi = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first(); $forminspeksi = null; - if ($inpeksi) { - $forminspeksi = json_decode($inpeksi->data_form, true); + if ($inspeksi) { + $forminspeksi = json_decode($inspeksi->data_form, true); } $data = new SurveyorController(); $basicData = $data->getCommonData(); - return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'forminspeksi', 'basicData')); + return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi')); } - public function resume() + public function resume($id) { - return view('lpj::resume.index'); + $permohonan = Permohonan::with(['debiture.documents.jenisjaminan', 'region.teams.teamsUsers.user', 'penilaian'])->find($id); + return view('lpj::penilai.components.resume', compact('permohonan')); } public function memo() @@ -228,8 +229,8 @@ class PenilaiController extends Controller // $datas = json_decode($data->data_pembanding); // return response()->json(['data' =>$datas ]); - return view('lpj::component.kertas-kerja'); - // return Excel::download(new KertasKerjaExport($data), 'kertas-kerja.xlsx'); + // return view('lpj::component.kertas-kerja', compact('data')); + return Excel::download(new KertasKerjaExport($data), 'kertas-kerja.xlsx'); } diff --git a/resources/views/component/kertas-kerja.blade.php b/resources/views/component/kertas-kerja.blade.php index f87fc45..8e197cf 100644 --- a/resources/views/component/kertas-kerja.blade.php +++ b/resources/views/component/kertas-kerja.blade.php @@ -1,5 +1,6 @@ + @@ -8,6 +9,7 @@ * { box-sizing: border-box; } + body { font-family: Arial, sans-serif; margin: 0; @@ -16,7 +18,8 @@ line-height: 1.4; } - .header-table, .data-table { + .header-table, + .data-table { width: 100%; border-collapse: collapse; margin-bottom: 15px; @@ -39,7 +42,8 @@ width: 70%; } - .data-table th, .data-table td { + .data-table th, + .data-table td { border: 1px solid #ddd; padding: 5px 8px; text-align: left; @@ -70,7 +74,10 @@ } + + + @@ -82,11 +89,11 @@ - + - + @@ -94,10 +101,12 @@ - +
Pendekatan Pasar
Nama Pemilik AsetPT ABC-
Nama Pemberi TugasPT ABC-
Lokasi
Nama DebiturBapak Saiful-
+

A Informasi Umum +

@@ -111,112 +120,431 @@ @php - $dataform = json_decode($data->data_form) ?? []; - $dataPembanding = json_decode($data->data_pembanding) ?? []; + $dataform = json_decode($data->data_form, true) ?? []; + $dataPembanding = json_decode($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' => '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' - ] - ] -]; -@endphp - -@foreach($rows as $index => $item) - - - - - {{-- Objek Penilaian --}} - + function getNestedValue($data, $keyPath, $default = '-') + { + // Pecah path kunci menjadi array + $keys = explode('.', $keyPath); - {{-- Data Pembanding --}} - @for($i = 0; $i < 3; $i++) - - @endfor - -@endforeach + + // 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
{{ $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 - // Coba berbagai varian kunci untuk data pembanding - $pembandingValue = '-'; - foreach (['sesuai', 'tidak sesuai'] as $variant) { - $fullKey = $item['key'] . '.' . $variant; - $pembandingValue = getNestedValue($dataPembanding[$i] ?? [], $fullKey, '-'); - - // Jika nilai ditemukan, hentikan pencarian - if ($pembandingValue !== '-') { - break; + // 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; } } - @endphp - {{ $pembandingValue }} -
{{ $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.UraianObjek PenilaianData Pembanding 1Data Pembanding 2Data 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']; + + // echo $dataForm; + + @endphp + + @for ($i = 0; $i < count($fotoTypes); $i++) + {{ $fotoTypes[$i] }} + @endfor + +

FOTO OBJEK DAN DATA PEMBANDING

+ + @foreach ($dataPembanding['data_pembanding'] as $item) + Foto Objek +

Data Pembanding {{ $loop->iteration }}

+ @endforeach + + + @php + $dataFoto = json_decode($data->foto_form, true); + @endphp +

FOTO OBJEK

+ + @php + $images = []; + + // Rute Menuju Lokasi + foreach ($dataFoto['rute_menuju_lokasi'] ?? [] as $rute) { + $images[] = $rute['foto_rute'] ?? null; + } + + // Objek Jaminan + foreach ($dataFoto['object_jaminan'] ?? [] as $objek) { + $images[] = $objek['foto_objek'] ?? null; + } + + // Lingkungan + foreach ($dataFoto['lingkungan'] ?? [] as $lingkungan) { + $images[] = $lingkungan['foto_lingkungan'] ?? null; + } + + // Lantai Unit + foreach ($dataFoto['foto_lantai_unit'] ?? [] as $lantai) { + $images[] = $lantai['foto_lantai_unit'] ?? null; + } + + // Tambahan foto lainnya + $images[] = $dataFoto['foto_basement'] ?? null; + $images[] = $dataFoto['foto_gerbang'] ?? null; + $images[] = $dataFoto['pendamping'] ?? null; + + // Filter null values + $images = array_filter($images); + @endphp + +
+ @foreach ($images as $image) + Foto Survey + @endforeach +
+ + + + + + diff --git a/resources/views/penilai/components/informasi-pembanding.blade.php b/resources/views/penilai/components/informasi-pembanding.blade.php new file mode 100644 index 0000000..e0a65a2 --- /dev/null +++ b/resources/views/penilai/components/informasi-pembanding.blade.php @@ -0,0 +1,71 @@ +
+ + @php + $informasiPembanding = isset($inspeksi->data_pembanding) ? json_decode($inspeksi->data_pembanding, true) : []; + @endphp + + @foreach ($informasiPembanding['data_pembanding'] as $key => $item) +
+
+
+ + Gambar foto_objek +
+
+
+ +
+ {{ $item['jenis_aset'] }} +
+
+ +
+ +
+ {{ $item['harga_diskon'] }} +
+
+ +
+ +
+ {{ $item['harga'] }} +
+
+ +
+ +
+ {{ $item['harga'] }} +
+
+ +
+ +
+ {{ $item['luas_tanah'] }} +
+
+ +
+ +
+ {{ $item['luas_bangunan'] }} +
+
+ +
+ +
+ {{ $item['kordinat_lat'] }} , {{ $item['kordinat_lng'] }} +
+
+ +
+
+ +
+ @endforeach +
diff --git a/resources/views/penilai/components/lpj-sederhana-standard.blade.php b/resources/views/penilai/components/lpj-sederhana-standard.blade.php index 62ab78d..ea6f1f2 100644 --- a/resources/views/penilai/components/lpj-sederhana-standard.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standard.blade.php @@ -132,8 +132,7 @@ Informasi dan pembanding -
-
+ @include('lpj::penilai.components.informasi-pembanding') diff --git a/resources/views/penilai/components/resume.blade.php b/resources/views/penilai/components/resume.blade.php new file mode 100644 index 0000000..ad89007 --- /dev/null +++ b/resources/views/penilai/components/resume.blade.php @@ -0,0 +1,254 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{-- {{ Breadcrumbs::render(request()->route()->getName()) }} + --}} + Resume +@endsection + +@section('content') + @include('lpj::assetsku.includenya') +
+
+
+

+ Data Jaminan +

+ +
+
+
+ +
+ @if (isset($permohonan->debiture)) +

{{ $permohonan->debiture->name }}

+ @endif +
+
+
+ +
+ @foreach ($permohonan->debiture->documents as $dokumen) + + {{ formatAlamat($dokumen->pemilik) }} + + @endforeach +
+
+
+ +
+

{{ $permohonan->nomor_registrasi }}

+
+
+ + + +
+ +
+ @if (isset($permohonan->branch)) +

{{ $permohonan->branch->name }}

+ @endif +
+
+ +
+ +
+

{{ $permohonan->nomor_registrasi }}

+
+
+
+ +
+ @if (isset($permohonan->user)) +

{{ $permohonan->user->name }}

+ @endif +
+
+
+
+ + +
+
+

+ faktor +

+
+
+
+ +
+ @if (!empty($forminspeksi['fakta']['fakta_positif'])) + @foreach ($forminspeksi['fakta']['fakta_positif'] as $index => $positif) +
+ + +
+ @endforeach + @else +
+ + +
+ @endif + +
+
+ + +
+ +
+ @if (!empty($forminspeksi['fakta']['fakta_negatif'])) + @foreach ($forminspeksi['fakta']['fakta_negatif'] as $index => $negatif) +
+ + +
+ @endforeach + @else +
+ + + +
+ @endif + +
+
+
+
+ + +
+
+

+ KESIMPULAN NILAI PASAR WAJAR +

+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
SertipikatLuas TanahLuas BangunanNilai Pasar Wajar
+ + + + + +
+
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
SertipikatLuas TanahLuas BangunanNilai Pasar Wajar
+ + + + + + + +
+
+
+ +
+ +
+ +
+ +
+ + +
+ +
+
+
+ + +
+ +
+@endsection +@include('lpj::surveyor.js.utils') diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index 8f5c6a5..2f40adf 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -290,7 +290,8 @@
- +
@@ -306,8 +307,8 @@ @endforeach @if ($jenisJaminanId) - Export Kertas Kerja + href="{{ route('penilai.export.kertas-kerja', ['id' => $permohonan->id, 'jaminanId' => $jenisJaminanId]) }}"> + Export Kertas Kerja @else

Tidak ada dokumen yang memiliki jenis jaminan.

@@ -340,4 +341,26 @@ } }) } + + + function uploadKertasKerja() { + showLoadingSwal('Mengirim data ke server...'); + + Swal.fire({ + title: 'Berhasil!', + text: response.message, + icon: 'success', + timer: 2000, + timerProgressBar: true, + didOpen: () => { + Swal.showLoading() + }, + willClose: () => { + hideLoadingSwal(); + } + }); +} + + +@include('lpj::surveyor.js.utils') diff --git a/routes/web.php b/routes/web.php index 919b682..971e6df 100644 --- a/routes/web.php +++ b/routes/web.php @@ -544,7 +544,7 @@ Route::middleware(['auth'])->group(function () { Route::get('sederhana/{id}', [PenilaiController::class, 'sederhana'])->name('sederhana'); Route::get('standard/{id}', [PenilaiController::class, 'standard'])->name('standard'); - Route::get('resume/{id}', [PenilaiController::class, 'standard'])->name('resume'); + Route::get('resume/{id}', [PenilaiController::class, 'resume'])->name('resume'); Route::get('memo/{id}', [PenilaiController::class, 'standard'])->name('memo'); });