From f1f345707aaef7df404db3cfafb01a46056b4956 Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 5 Mar 2025 05:15:50 +0700 Subject: [PATCH 1/5] fix(surveyor/penilai): perbaikkan data pembanding dan tambah tombol freaze di penilai --- app/Http/Controllers/PenilaiController.php | 2 +- app/Http/Controllers/PermohonanController.php | 1 + app/Http/Controllers/SurveyorController.php | 10 +++- resources/views/penilai/index.blade.php | 59 +++++++++++++++++- resources/views/penilai/show.blade.php | 19 +++--- resources/views/permohonan/index.blade.php | 11 ++-- .../components/data-pembanding.blade.php | 42 +++++++------ .../pembanding-tanah-bangunan-unit.blade.php | 22 +++---- resources/views/surveyor/index.blade.php | 60 +------------------ 9 files changed, 117 insertions(+), 109 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 5587ab2..d2b9ee3 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -653,7 +653,7 @@ class PenilaiController extends Controller 'permohonan_id' => 'required|integer', 'document_id' => 'required|integer', 'inspeksi_id' => 'required|integer', - 'kertas_kerja' => 'required|file|mimes:pdf,doc,docx,xls,xlsx,xlsx', + 'kertas_kerja' => 'required|file|mimes:pdf', ]); try { diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 51e6f0e..3f1da47 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -448,6 +448,7 @@ class PermohonanController extends Controller 'nomor_registrasi' => 'required', 'reschedule_note' => 'required', 'reschedule_date' => 'required', + 'keterangan' => 'required' ]); DB::beginTransaction(); diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 01076f5..841246f 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -2479,6 +2479,11 @@ class SurveyorController extends Controller : ($data['hadap_mata_angin_tidak_sesuai'] ?? null); $hadap_mata_angin[$hadap_mata_angin_key] = $hasil_hadap_mata_angin; + $tusuk_sate_key = ($data['tusuk_sate'] ?? null) === 'Ya' ? 'Ya' : 'Tidak'; + + $tusuk_sate = []; + $tusuk_sate[$tusuk_sate_key] = $data['tusuk_sate_ya'] ?? null; + return [ 'tanah' => [ @@ -2505,7 +2510,7 @@ class SurveyorController extends Controller 'lainnya' ), - 'tusuk_sate' => $data['tusuk_sate'] ?? null, + 'tusuk_sate' => $tusuk_sate, 'lockland' => $data['lockland'] ?? null, 'kondisi_fisik_tanah' => $this->getFieldData( $data, @@ -3620,6 +3625,8 @@ class SurveyorController extends Controller // Generate PDF $pdf = PDF::loadView($templateView, compact('permohonan', 'basicData', 'forminspeksi', 'alamat')); + + $pdf = view($templateView, compact('permohonan', 'basicData', 'forminspeksi', 'alamat')); $pdf->setPaper('A4', 'portrait'); // Tentukan nama file PDF @@ -3681,6 +3688,7 @@ class SurveyorController extends Controller 'permohonan_id' => 'required|exists:permohonan,id', 'rejected_note' => 'required|string|max:255', 'nomor_registrasi' => 'required|string', + 'keterangan' => 'required|string', ]); // Memulai transaksi diff --git a/resources/views/penilai/index.blade.php b/resources/views/penilai/index.blade.php index caa6b0a..bda05fe 100644 --- a/resources/views/penilai/index.blade.php +++ b/resources/views/penilai/index.blade.php @@ -194,9 +194,15 @@ if (data.status === 'survey-completed' || data.status === 'proses-laporan' || data.status === 'paparan' || data.status === 'proses-paparan' || data.status === 'paparan' || data.status == 'revisi-laporan' || data.status === 'done' || data.status === 'revisi-paparan') { return `
- + +
`; } else { return `
@@ -221,6 +227,57 @@ +{{-- --}} @endpush diff --git a/resources/views/surveyor/components/inspeksi.blade.php b/resources/views/surveyor/components/inspeksi.blade.php index 459a6b3..108249e 100644 --- a/resources/views/surveyor/components/inspeksi.blade.php +++ b/resources/views/surveyor/components/inspeksi.blade.php @@ -80,12 +80,12 @@
@php - use Modules\Usermanagement\Models\User; - $cabangUser = User::where('id', $permohonan->user->id)->first(); + use Modules\Usermanagement\Models\User; + $cabangUser = User::where('id', $permohonan->user->id)->first(); - // print_r($cabangUser->sign); + // print_r($cabangUser->sign); -@endphp + @endphp @endsection @push('scripts') @@ -95,42 +95,122 @@ console.log(datas); document.addEventListener('DOMContentLoaded', function() { const signaturePads = {}; - const types = ['penilai', 'cabang', 'debitur', 'kjjp']; + const types = ['penilai', 'cabang', 'debitur', 'kjjp']; - // Inisialisasi semua signature pad - types.forEach(type => initSignaturePad(type)); + // Initialize all signature pads + types.forEach(type => initSignaturePad(type)); - function initSignaturePad(type) { - const canvas = document.getElementById(`signature-pad-${type}`); - if (!canvas) return; + function initSignaturePad(type) { + const canvas = document.getElementById(`signature-pad-${type}`); + if (!canvas) return; - setCanvasSize(canvas); + // Improved canvas sizing with strict boundary control + function resizeCanvas() { + const container = canvas.closest('.signature-pad-container'); + const containerWidth = container.clientWidth; - const signaturePad = new SignaturePad(canvas, { - backgroundColor: 'rgba(255, 255, 255, 0)', - penColor: 'rgb(0, 0, 0)', - minWidth: 0.5, - maxWidth: 2.5 - }); - signaturePads[type] = signaturePad; + // Set canvas style dimensions + canvas.style.width = '100%'; + canvas.style.height = `${containerWidth * 0.5}px`; // 2:1 aspect ratio - // Load tanda tangan yang ada - if (type === 'penilai' || type === 'cabang') { - loadPenilaiAndCabangSignature(type, signaturePad); - } else { - loadSignature(type, signaturePad); + // Set actual canvas dimensions with high DPI support + const ratio = window.devicePixelRatio || 1; + canvas.width = containerWidth * ratio; + canvas.height = (containerWidth * 0.5) * ratio; + + // Scale canvas context + const ctx = canvas.getContext('2d'); + ctx.scale(ratio, ratio); + + // Clear and redraw existing signature if any + if (signaturePads[type] && !signaturePads[type].isEmpty()) { + const signaturePad = signaturePads[type]; + const imageData = signaturePad.toData(); + signaturePad.clear(); + signaturePad.fromData(imageData); + } + } + + // Create signature pad with boundary and scaling control + const signaturePad = new SignaturePad(canvas, { + backgroundColor: 'rgba(255, 255, 255, 0)', + penColor: 'rgb(0, 0, 0)', + minWidth: 0.5, + maxWidth: 2.5, + throttle: 16, + dotSize: 2, + + // Custom function to control signature drawing + onBegin: (event) => { + const ctx = canvas.getContext('2d'); + const rect = canvas.getBoundingClientRect(); + const scaleX = canvas.width / rect.width; + const scaleY = canvas.height / rect.height; + + // Ensure drawing stays within canvas + if ( + event.clientX < rect.left || + event.clientX > rect.right || + event.clientY < rect.top || + event.clientY > rect.bottom + ) { + return false; } - - // Event listeners - addEventListeners(type, signaturePad); } + }); + signaturePads[type] = signaturePad; - function setCanvasSize(canvas) { - const ratio = Math.max(window.devicePixelRatio || 1, 1); - canvas.width = canvas.offsetWidth * ratio; - canvas.height = canvas.offsetHeight * ratio; - canvas.getContext('2d').scale(ratio, ratio); - } + // Initial resize + resizeCanvas(); + + // Load existing signature + if (type === 'penilai' || type === 'cabang') { + loadPenilaiAndCabangSignature(type, signaturePad); + } else { + loadSignature(type, signaturePad); + } + + // Add event listeners + addEventListeners(type, signaturePad); + + // Add resize listener + window.addEventListener('resize', () => { + resizeCanvas(); + }); + } + + function drawSignature(signaturePad, imageUrl) { + const image = new Image(); + image.crossOrigin = 'Anonymous'; + image.onload = function() { + const ctx = signaturePad.canvas.getContext('2d'); + const canvasWidth = signaturePad.canvas.width; + const canvasHeight = signaturePad.canvas.height; + + // Clear previous content + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + + // Calculate scaling to fit within canvas while maintaining aspect ratio + const scale = Math.min( + canvasWidth / image.width, + canvasHeight / image.height + ); + + const scaledWidth = image.width * scale; + const scaledHeight = image.height * scale; + + // Center the image + const x = (canvasWidth - scaledWidth) / 2; + const y = (canvasHeight - scaledHeight) / 2; + + // Draw the scaled and centered image + ctx.drawImage(image, x, y, scaledWidth, scaledHeight); + }; + image.onerror = function() { + console.error('Error loading signature image'); + }; + image.src = imageUrl; + } function addEventListeners(type, signaturePad) { document.getElementById(`save-${type}`)?.addEventListener('click', () => saveSignature(type, @@ -141,6 +221,98 @@ signaturePad)); } + function saveSignature(type, signaturePad) { + // Prevent saving empty signature for debitur and kjjp + if (signaturePad.isEmpty() && type !== 'penilai' && type !== 'cabang') { + Swal.fire({ + icon: 'warning', + title: 'Peringatan', + text: 'Harap memberikan tanda tangan terlebih dahulu.' + }); + return; + } + + // Use high-quality PNG with appropriate scaling + const signatureDataUrl = signaturePad.isEmpty() ? + (type === 'penilai' ? + `{{ asset('storage/signatures/' . Auth::user()->id . '/' . Auth::user()->sign) }}` : + (type === 'cabang' ? + `{{ asset('storage/signatures/' . $cabangUser->id . '/' . $cabangUser->sign) }}` : + '')) : + signaturePad.toDataURL('image/png', 1.0); // Use full quality + + const data = { + signature: signatureDataUrl, + type: type, + name: document.getElementById(`name-${type}`)?.value, + document_id: document.getElementById('dokument_id')?.value, + permohonan_id: document.getElementById('permohonan_id')?.value + }; + + Swal.fire({ + title: 'Menyimpan...', + allowOutsideClick: false, + didOpen: () => Swal.showLoading() + }); + + fetch(`{{ url('/surveyor/signatures') }}`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRF-TOKEN': '{{ csrf_token() }}', + }, + body: JSON.stringify(data) + }) + .then(response => response.json()) + .then(data => { + Swal.close(); + if (data.success) { + Swal.fire({ + icon: 'success', + title: 'Berhasil', + text: 'Tanda tangan berhasil disimpan!', + timer: 1500 + }); + } else { + throw new Error(data.message || 'Terjadi kesalahan'); + } + }) + .catch(error => { + Swal.fire({ + icon: 'error', + title: 'Error', + text: error.message || 'Terjadi kesalahan saat menyimpan tanda tangan' + }); + }); + } + + function drawSignature(signaturePad, imageUrl) { + const image = new Image(); + image.crossOrigin = 'Anonymous'; // Handle cross-origin images + image.onload = function() { + const ctx = signaturePad.canvas.getContext('2d'); + ctx.clearRect(0, 0, signaturePad.canvas.width, signaturePad.canvas.height); + + // Calculate scaling to fit within canvas while maintaining aspect ratio + const scale = Math.min( + signaturePad.canvas.width / image.width, + signaturePad.canvas.height / image.height + ); + + const scaledWidth = image.width * scale; + const scaledHeight = image.height * scale; + + const x = (signaturePad.canvas.width - scaledWidth) / 2; + const y = (signaturePad.canvas.height - scaledHeight) / 2; + + ctx.drawImage(image, x, y, scaledWidth, scaledHeight); + }; + image.onerror = function() { + console.error('Error loading signature image'); + }; + image.src = imageUrl; + } + function loadPenilaiAndCabangSignature(type, signaturePad) { const nameInputElement = document.getElementById(`name-${type}`); @@ -186,13 +358,13 @@ return; } - const signatureDataUrl = signaturePad.isEmpty() - ? (type === 'penilai' - ? `{{ asset('storage/signatures/' . Auth::user()->id . '/' . Auth::user()->sign) }}` - : (type === 'cabang' - ? `{{ asset('storage/signatures/' . $cabangUser->id . '/' . $cabangUser->sign) }}` - : '')) - : signaturePad.toDataURL('image/png'); + const signatureDataUrl = signaturePad.isEmpty() ? + (type === 'penilai' ? + `{{ asset('storage/signatures/' . Auth::user()->id . '/' . Auth::user()->sign) }}` : + (type === 'cabang' ? + `{{ asset('storage/signatures/' . $cabangUser->id . '/' . $cabangUser->sign) }}` : + '')) : + signaturePad.toDataURL('image/png'); const data = { signature: signatureDataUrl, @@ -365,7 +537,7 @@ }).then((response) => { if (response.isConfirmed) { // window.location.href = - // '{{ route('surveyor.show', ['id' => $permohonan->id]) }}'; + // '{{ route('surveyor.show', ['id' => $permohonan->id]) }}'; } }); } else { From 05bf9e2af0cc20e78146e5c4424eb73dd3d8fc91 Mon Sep 17 00:00:00 2001 From: majid Date: Wed, 5 Mar 2025 13:33:02 +0700 Subject: [PATCH 3/5] fix(surveyor): perbaikan print out hasil inspeksi --- .../print-out/apartement-kantor.blade.php | 13 + .../components/print-out/bangunan.blade.php | 323 ++++--- .../components/print-out/fakta.blade.php | 111 +++ .../components/print-out/informasi.blade.php | 187 +--- .../components/print-out/lingkungan.blade.php | 553 +++++------ .../components/print-out/main.blade.php | 869 +++++++++--------- .../components/print-out/print.blade.php | 704 ++++++++++++++ .../components/print-out/rap.blade.php | 25 +- .../components/print-out/tanah.blade.php | 85 +- 9 files changed, 1873 insertions(+), 997 deletions(-) create mode 100644 resources/views/surveyor/components/print-out/fakta.blade.php create mode 100644 resources/views/surveyor/components/print-out/print.blade.php diff --git a/resources/views/surveyor/components/print-out/apartement-kantor.blade.php b/resources/views/surveyor/components/print-out/apartement-kantor.blade.php index 33ca5da..80663a2 100644 --- a/resources/views/surveyor/components/print-out/apartement-kantor.blade.php +++ b/resources/views/surveyor/components/print-out/apartement-kantor.blade.php @@ -1,3 +1,15 @@ +
+ + + + + +
+

+ Analisa Unit +

+ +
@php @@ -99,3 +111,4 @@
@endif +
diff --git a/resources/views/surveyor/components/print-out/bangunan.blade.php b/resources/views/surveyor/components/print-out/bangunan.blade.php index adf3b95..0224431 100644 --- a/resources/views/surveyor/components/print-out/bangunan.blade.php +++ b/resources/views/surveyor/components/print-out/bangunan.blade.php @@ -1,24 +1,64 @@ - - - - @php - $cekLuasBangunan = isset($forminspeksi['bangunan']['luas_tanah_bagunan']['tidak sesuai']) - ? 'tidak sesuai' - : 'sesuai'; - $luasBangunan = $forminspeksi['bangunan']['luas_tanah_bagunan'][$cekLuasBangunan] ?? null; - @endphp - - +
+
Luas Bangunan (IMB){{ $luasBangunan }}
+ + + + +
+

+ ANalisa Bangunan +

+ +
+ + + + + @php + $cekLuasBangunan = isset($forminspeksi['bangunan']['luas_tanah_bagunan']['tidak sesuai']) + ? 'tidak sesuai' + : 'sesuai'; + $luasBangunan = $forminspeksi['bangunan']['luas_tanah_bagunan'][$cekLuasBangunan] ?? null; + @endphp + + + + + + + + - + - + - - - - - - - @endforeach - -
Luas Bangunan (IMB){{ $luasBangunan }}
Jenis Bangunan + @if (isset($basicData['jenisBangunan'])) + + + @foreach ($basicData['jenisBangunan'] as $index => $item) + @if ($index % 3 == 0 && $index > 0) + + + @endif + + @endforeach + +
+ +
+ @endif +
Jenis BangunanKondisi Bangunan - @if (isset($basicData['jenisBangunan'])) + @if (isset($basicData['kondisiBangunan'])) - @foreach ($basicData['jenisBangunan'] as $index => $item) + @foreach ($basicData['kondisiBangunan'] as $index => $item) @if ($index % 3 == 0 && $index > 0) @@ -26,63 +66,36 @@ @endforeach -
-@endif -
Kondisi Bangunan - @if (isset($basicData['kondisiBangunan'])) - - - @foreach ($basicData['kondisiBangunan'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) - - - @endif -
- +
+ @endif
-@endif - - + - - - Sifat Bangunan - - @if (isset($basicData['sifatBangunan'])) - - - @foreach ($basicData['sifatBangunan'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) - - - @endif - + + - - - -@if (isset($forminspeksi['bangunan']['spesifikasi_bangunan']) && - count($forminspeksi['bangunan']['spesifikasi_bangunan']) > 0) - @foreach ($forminspeksi['bangunan']['spesifikasi_bangunan'] as $bangunanIndex => $bangunan) - - - - @if (isset($basicData['spekKategoriBangunan'])) - @foreach ($basicData['spekKategoriBangunan'] as $index => $spesifikasi) - - - -@endforeach -@endif -@endforeach -@endif -
-
Sifat Bangunan + @if (isset($basicData['sifatBangunan'])) + + + @foreach ($basicData['sifatBangunan'] as $index => $item) + @if ($index % 3 == 0 && $index > 0) + + + @endif + - @endforeach - -
+ -
-@endif -
Spesifikasi Bangunan {{ $bangunanIndex + 1 }}
{{ $spesifikasi->name }} - - @if (isset($basicData['spekBangunan'])) - @php $count = 0; @endphp - - @foreach ($basicData['spekBangunan'] as $kategori) - @if ($kategori->spek_kategori_bangunan_id == $spesifikasi->id) - @php - $selectedValues = []; - if (isset($bangunan['spek_kategori_bangunan'][$spesifikasi->name])) { - $selectedValues = array_values( - $bangunan['spek_kategori_bangunan'][$spesifikasi->name], - ); - } - $lainnyaValue = - $bangunan['spek_kategori_bangunan'][$spesifikasi->name][ - 'lainnya' - ] ?? ''; - @endphp - - - - @php $count++; @endphp - - @if ($count % 3 == 0) - - - @endif - @endif + + @endforeach - - @endif +
- -
+ @endif
+ + @if (isset($forminspeksi['bangunan']['spesifikasi_bangunan']) && + count($forminspeksi['bangunan']['spesifikasi_bangunan']) > 0) + @foreach ($forminspeksi['bangunan']['spesifikasi_bangunan'] as $bangunanIndex => $bangunan) + + Spesifikasi Bangunan {{ $bangunanIndex + 1 }} + + @if (isset($basicData['spekKategoriBangunan'])) + @foreach ($basicData['spekKategoriBangunan'] as $index => $spesifikasi) + + {{ $spesifikasi->name }} + + + @if (isset($basicData['spekBangunan'])) + @php $count = 0; @endphp + + @foreach ($basicData['spekBangunan'] as $kategori) + @if ($kategori->spek_kategori_bangunan_id == $spesifikasi->id) + @php + $selectedValues = []; + if ( + isset($bangunan['spek_kategori_bangunan'][$spesifikasi->name]) + ) { + $selectedValues = array_values( + $bangunan['spek_kategori_bangunan'][$spesifikasi->name], + ); + } + $lainnyaValue = + $bangunan['spek_kategori_bangunan'][$spesifikasi->name][ + 'lainnya' + ] ?? ''; + @endphp + + + + @php $count++; @endphp + + @if ($count % 3 == 0) + + + @endif + @endif + @endforeach + + @endif +
+ +
+ + + @endforeach + @endif + @endforeach + @endif + + + Sarana Pelengkap + + @if (isset($basicData['saranaPelengkap'])) + + + @foreach ($basicData['saranaPelengkap'] as $index => $item) + @if ($index % 3 == 0 && $index > 0) + + + @endif + + @endforeach + +
+ +
+ @endif + + + diff --git a/resources/views/surveyor/components/print-out/fakta.blade.php b/resources/views/surveyor/components/print-out/fakta.blade.php new file mode 100644 index 0000000..480f15d --- /dev/null +++ b/resources/views/surveyor/components/print-out/fakta.blade.php @@ -0,0 +1,111 @@ +
+ + + + + + +
+

+ ANalisa Fakta +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Faktor Positif + @isset($forminspeksi['fakta']['fakta_positif']) + + @foreach ($forminspeksi['fakta']['fakta_positif'] as $key => $item) + + + + @endforeach +
{!! nl2br(e($item)) !!}
+ @endisset +
Faktor Negatif + @php + $faktaNegatif = $forminspeksi['fakta']['fakta_negatif'] ?? []; + $faktaNegatifFiltered = is_array($faktaNegatif) + ? array_filter($faktaNegatif, function ($item) { + return !empty(trim($item)); + }) + : []; + @endphp + + @if (!empty($faktaNegatifFiltered)) + + @foreach ($faktaNegatifFiltered as $key => $item) + + + + @endforeach +
{!! nl2br(e($item)) !!}
+ @else +

Tidak ada faktor negatif yang teridentifikasi.

+ @endif +
Rute Munuju +

{{ $forminspeksi['fakta']['rute_menuju'] ?? '' }}

+
Batas Batas + + + @foreach ($forminspeksi['fakta']['batas_batas_input'] ?? [] as $arah => $batas) + @if ($batas) +

- {{ $arah }} : {{ $batas }}

+ @endif + @endforeach +
Kondisi lain terkait lingkungan + + + @foreach ($forminspeksi['fakta']['kondisi_lingkungan'] ?? [] as $kondisi) +

{!! nl2br(e($kondisi)) !!}

+ @endforeach +
Kondisi lain terkait Bangunan + + @foreach ($forminspeksi['fakta']['kondisi_lain_bangunan'] ?? [] as $kondisiLain) +

{!! nl2br(e($kondisiLain)) !!}

+ @endforeach +
Informasi Terkait Dokumen + + @foreach ($forminspeksi['fakta']['informasi_dokument'] ?? [] as $informasi) +

{!! nl2br(e($informasi)) !!}

+ @endforeach + +
+ +
diff --git a/resources/views/surveyor/components/print-out/informasi.blade.php b/resources/views/surveyor/components/print-out/informasi.blade.php index d8cb19c..90b845b 100644 --- a/resources/views/surveyor/components/print-out/informasi.blade.php +++ b/resources/views/surveyor/components/print-out/informasi.blade.php @@ -1,145 +1,58 @@ - - - G - - - KESIMPULAN - - +
+ - - - + + - + @endforeach + + - - - + + + - @foreach ($forminspeksi['fakta']['batas_batas_input'] ?? [] as $arah => $batas) - @if ($batas) -

- {{ $arah }} : {{ $batas }}

- @endif - @endforeach - - @foreach ($forminspeksi['fakta']['kondisi_lain_bangunan'] ?? [] as $kondisiLain) -

{!! nl2br(e($kondisiLain)) !!}

- @endforeach - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - + + +
- 1 KESIMPULAN PENILAI -
Faktor Positif - @isset($forminspeksi['fakta']['fakta_positif']) - - @foreach ($forminspeksi['fakta']['fakta_positif'] as $key => $item) - - - - @endforeach -
{!! nl2br(e($item)) !!}
- @endisset -
Faktor Negatif - @php - $faktaNegatif = $forminspeksi['fakta']['fakta_negatif'] ?? []; - $faktaNegatifFiltered = is_array($faktaNegatif) - ? array_filter($faktaNegatif, function ($item) { - return !empty(trim($item)); - }) - : []; - @endphp +
+

Informasi Dinas Tata Ruang

+
+ - @if (!empty($faktaNegatifFiltered)) -
- @foreach ($faktaNegatifFiltered as $key => $item) - - - - @endforeach -
{!! nl2br(e($item)) !!}
- @else -

Tidak ada faktor negatif yang teridentifikasi.

+ +
Informasi Dinas Tata Ruang + @php + $informasi = [ + 'peruntukan', + 'kdb', + 'kdh', + 'gsb', + 'max_lantai', + 'klb', + 'gss', + 'pelebaran_jalan', + 'nama_petugas', + ]; + @endphp + + @foreach ($informasi as $key) + @if (isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-') + @php + $displayKey = ucfirst(str_replace('_', ' ', $key)); + if (strlen($key) == 3) { + $displayKey = strtoupper($key); + } + @endphp +

- {{ $displayKey }}: {{ $forminspeksi['fakta'][$key] }}

@endif -
Lain - lain : - @foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $keterangan) -

{!! nl2br(e($keterangan)) !!}

- @endforeach -

{{ $forminspeksi['fakta']['rute_menuju'] ?? '' }}

+
Catatan yang Perlu Diperhatikan - @foreach ($forminspeksi['fakta']['informasi_dokument'] ?? [] as $informasi) -

{!! nl2br(e($informasi)) !!}

- @endforeach + @foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $informasi) +

{!! nl2br(e($informasi)) !!}

+ @endforeach - @foreach ($forminspeksi['fakta']['kondisi_lingkungan'] ?? [] as $kondisi) -

{!! nl2br(e($kondisi)) !!}

- @endforeach +
- 2 CATATAN YANG PERLU DI PERHATIKAN -
- - @foreach ($forminspeksi['fakta']['keterangan'] ?? [] as $keterangan) - - - - @endforeach -
-

{!! nl2br(e($keterangan)) !!}

-
-
- 3 DINAS TATA KOTA -
- @php - $informasi = [ - 'peruntukan', - 'kdb', - 'kdh', - 'gsb', - 'max_lantai', - 'klb', - 'gss', - 'pelebaran_jalan', - 'nama_petugas', - ]; - @endphp - - @foreach ($informasi as $key) - @if (isset($forminspeksi['fakta'][$key]) && $forminspeksi['fakta'][$key] !== '-') - @php - $displayKey = ucfirst(str_replace('_', ' ', $key)); - if (strlen($key) == 3) { - $displayKey = strtoupper($key); - } - @endphp -

- {{ $displayKey }}: {{ $forminspeksi['fakta'][$key] }}

- @endif - @endforeach -
- - + +
diff --git a/resources/views/surveyor/components/print-out/lingkungan.blade.php b/resources/views/surveyor/components/print-out/lingkungan.blade.php index a42207c..d717e68 100644 --- a/resources/views/surveyor/components/print-out/lingkungan.blade.php +++ b/resources/views/surveyor/components/print-out/lingkungan.blade.php @@ -1,294 +1,295 @@ - - - F - - - SARANA PELENGKAP DAN LINKUNGAN - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
Jarak Jalan Utama{{ $forminspeksi['lingkungan']['jarak_jalan_utama'] ?? '' }}
Jalan Lingkungan{{ $forminspeksi['lingkungan']['jalan_linkungan'] ?? '' }}
Jarak CBD Point{{ $forminspeksi['lingkungan']['jarak_cbd_point'] ?? '' }}
Nama CBD Point{{ $forminspeksi['lingkungan']['nama_cbd_point'] ?? '' }}
Lebar Perkerasan Jalan{{ $forminspeksi['lingkungan']['lebar_perkerasan_jalan'] ?? '' }}
Sarana Pelengkap - @if (isset($basicData['saranaPelengkap'])) - - - @foreach ($basicData['saranaPelengkap'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) - - - @endif - - - - - - - -
-
Fasilitas Umum Dekat Lokasi - @if (isset($basicData['fasilitasObjek'])) - - - @foreach ($basicData['fasilitasObjek'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) - - - @endif - - @endforeach - -
- -
-@endif -
-
+ diff --git a/resources/views/surveyor/components/print-out/main.blade.php b/resources/views/surveyor/components/print-out/main.blade.php index a2d9ab2..8d4df95 100644 --- a/resources/views/surveyor/components/print-out/main.blade.php +++ b/resources/views/surveyor/components/print-out/main.blade.php @@ -195,10 +195,10 @@ } .no-break { - page-break-inside: avoid; - page-break-before: auto; - page-break-after: auto; - } + page-break-inside: avoid; + page-break-before: auto; + page-break-after: auto; + } @@ -255,483 +255,474 @@ - - - - -
-

- FORM INSPEKSI ATAS - {{ $data }} -

-
+
+ + + + +
+

+ Tujuan Penilaian +

+
+ + +
+ + -
- - - - - - + + + + + + + + - - - - + +
- A - - TUJUAN PENILAIAN -
+ Tujuan Penilai: + {{ $permohonan->tujuanPenilaian->name ?? '' }}
Cabang/Pemohon: + {{ $permohonan->debiture->branch->name ?? '' }} / {{ $permohonan->user->name ?? '' }} +
- + + + + + +
Debitur/Perwakilan: + @if (isset($forminspeksi['asset']['debitur_perwakilan']) && !empty($forminspeksi['asset']['debitur_perwakilan'])) + @foreach ($forminspeksi['asset']['debitur_perwakilan'] as $key => $item) + {{ $item }} + @endforeach + @endif +
+
- @if (isset($basicData['tujuanPenilaian'])) - + + +
+ + + + + + + + + + + + +
+ Tanggal Survey: + {{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}
Pihak Bank: + {{ isset($forminspeksi['asset']['pihak_bank']) ? $forminspeksi['asset']['pihak_bank'] : '' }} +
+
+ + + + + + +
+

+ Nama Cadeb/Debitur +

+
+ + + + +
+ + + + + + + +
Nama:{{ $permohonan->debiture->name ?? '' }}
+
+ + + + + + +
+

+ Deskripsi Aset jaminan +

+
+ + + + + + + + +
+ + + @php + $statusKey = isset($forminspeksi['asset']['jenis_asset']['sesuai']) + ? 'sesuai' + : 'tidak sesuai'; + $selectedData = $forminspeksi['asset']['jenis_asset'][$statusKey] ?? null; + @endphp + + + + + +
Jenis Aset: + {{ $selectedData ?? '' }} +
+
+ + + + + - + + + + + + + + + + + + + + + +
Alamat: + - @foreach ($basicData['tujuanPenilaian'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) + + - @endif - - @endforeach - -
Terletak di {{ $alamat['address'] ?? '' }}
- -
- @endif - - - - - - - - - - - - - -
Permintaan (A/O. Tlp/Hp){{ $permohonan->user->name }}Tanggal{{ formatTanggalIndonesia($permohonan->created_at) }}
Nama Debiture/ Wakil Debiture{{ $permohonan->debiture->name ?? '' }} - @if (isset($forminspeksi['asset']['debitur_perwakilan']) && !empty($forminspeksi['asset']['debitur_perwakilan'])) - @foreach ($forminspeksi['asset']['debitur_perwakilan'] as $key => $item) - / {{ $item }} - @endforeach - @endif - Kunjungan Tanggal{{ formatTanggalIndonesia($permohonan->penilaian->tanggal_kunjungan) }}
-
Kelurahan{{ $alamat['village_code'] ?? '' }}
Kecamatan{{ $alamat['district_code'] ?? '' }}
Kotamadya {{ $alamat['city_code'] ?? '' }}
Propinsi{{ $alamat['province_code'] ?? '' }}
+
+
-
- - + - - - - - - -
- B - - IDENTITAS DEBITURE -
- - - - - - + + + +
Nama Debitur{{ $permohonan->debiture->name ?? '' }}
+

+ Titik Koordinat Google Maps +

+
-
- - + + + + +
+ + + + + + - - - - +
Titik Kordinat: + {{ isset($forminspeksi['asset']['kordinat_lat']) ? $forminspeksi['asset']['kordinat_lat'] : '' }} + , + {{ isset($forminspeksi['asset']['kordinat_lng']) ? $forminspeksi['asset']['kordinat_lng'] : '' }} +
- C - - JENIS DAN LOKASI JAMINAN + KORDINAT -
+
- - - - - @if (isset($basicData['jenisJaminan'])) - +
- - @foreach ($basicData['jenisJaminan'] as $index => $item) - @if ($index % 3 == 0 && $index > 0) - - - @endif - - @endforeach - -
- -
- @endif + + +

+ Jaminan +

+ + + - - - - - - - - - - - - - - - - - - - - - -
Terletak di {{ $alamat['address'] ?? '' }}
Kelurahan{{ $alamat['village_code'] ?? '' }}
Kecamatan{{ $alamat['district_code'] ?? '' }}
Kotamadya {{ $alamat['city_code'] ?? '' }}
Propinsi{{ $alamat['province_code'] ?? '' }}
- - - - - -
Titik Kordinat{{ isset($forminspeksi['asset']['kordinat_lat']) ? $forminspeksi['asset']['kordinat_lat'] : '' }} , - {{ isset($forminspeksi['asset']['kordinat_lng']) ? $forminspeksi['asset']['kordinat_lng'] : '' }}
- - + + + + +
+ + @if (@isset($dokumen)) + @foreach ($dokumen->detail as $detail) + @if (isset($detail->dokumen_jaminan)) + + + {{-- --}} + - - - + @foreach ($dokumen_jaminan as $index => $dokumen) +
+ @if (!empty($dokumen_nomor[$index])) + {{ $dokumen_nomor[$index] }} + @endif +
+ @endforeach + @endif + + + @endif - - - + + {{-- end hub --}} + + + @php + $statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai']) ? 'sesuai' : 'tidak sesuai'; + $selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null; + @endphp + + + + +
{{ $detail->name ?? '' }}: + @if (isset($detail->dokumen_jaminan)) + @php + $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) + ? json_decode($detail->dokumen_jaminan) + : [$detail->dokumen_jaminan]; + $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) + ? json_decode($detail->dokumen_nomor) + : ($detail->dokumen_nomor + ? [$detail->dokumen_nomor] + : []); + @endphp -
- D - - STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI -
- - - - @if (@isset($dokumen)) - @foreach ($dokumen->detail as $detail) - @if (isset($detail->dokumen_jaminan)) - - - - - + + {{-- --}} + + + @endif @endforeach @endif - - + @endif + @endforeach @endif - @if (isset($detail->details)) - @if (json_decode($detail->details)) - @foreach (json_decode($detail->details) as $key => $value) - @if (!is_null($value) && $value !== '') + + @php + // Ambil nilai hub_cadeb langsung + $hubCadeb = isset($forminspeksi['asset']['hub_cadeb']) + ? $forminspeksi['asset']['hub_cadeb'] + : null; + + // Jika nilai adalah array dengan key 'sesuai', ambil nilainya + if (is_array($hubCadeb) && isset($hubCadeb['sesuai'])) { + $hubCadeb = $hubCadeb['sesuai']; + } + @endphp + + {{-- --}} +
{{ $detail->name ?? '' }}
- @if (isset($detail->dokumen_jaminan)) - @php - $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) - ? json_decode($detail->dokumen_jaminan) - : [$detail->dokumen_jaminan]; - $dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) - ? json_decode($detail->dokumen_nomor) - : ($detail->dokumen_nomor - ? [$detail->dokumen_nomor] - : []); - @endphp - - @foreach ($dokumen_jaminan as $index => $dokumen) -
- @if (!empty($dokumen_nomor[$index])) - {{ $dokumen_nomor[$index] }} - @endif -
+ @if (isset($detail->details)) + @if (json_decode($detail->details)) + @foreach (json_decode($detail->details) as $key => $value) + @if (!is_null($value) && $value !== '') +
+ {{ ucwords(str_replace('_', ' ', $key)) ?? '' }} + : + {{ $value }} + @if ($key == 'luas_bangunan' || $key == 'luas_tanah') + m2 + @endif +
Hubungan Pemilik Jaminan dengan Debitur + : + @if (isset($basicData['hubCadeb'])) + + @php $count = 0; @endphp - - + @foreach ($basicData['hubCadeb'] as $item) + + @php $count++; @endphp + + @if ($count % 3 === 0) - @endif + + @endif @endforeach + + @if ($count % 3 !== 0) + @for ($i = 0; $i < 3 - ($count % 3); $i++) + + @endfor @endif - @endif + +
- {{ ucwords(str_replace('_', ' ', $key)) ?? '' }} - - {{ $value }} - @if ($key == 'luas_bangunan' || $key == 'luas_tanah') - m2 - @endif - + +
+
+ @endif +
Hubungan Penghuni Jaminan dengan Debitur + @if (isset($selectedData)) + + + + +
+ {{ $selectedData ?? '' }} +
+ @endif +
+
+ + @if (strtolower($permohonan->tujuanPenilaian->name) == 'rap') + @include('lpj::surveyor.components.print-out.rap') + @else + @foreach ($permohonan->documents as $dokumen) + @if ($dokumen->jenisJaminan) + @php + $formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true); + @endphp + @if (isset($formKategori) && $formKategori) + @php + $kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori]; + $kategoriUnik = array_unique($kategoriArray); + @endphp + @endif + + @foreach ($kategoriUnik as $kategori) + {{-- Tampilkan komponen sesuai kategori jika file komponen ada --}} + @includeIf('lpj::surveyor.components.print-out.' . str_replace('-', '-', $kategori), [ + 'dokumen' => $dokumen, + ]) @endforeach @endif - - - - Atas Nama - {{ $dokument->pemilik->name ?? '' }} - - - - @php - // Ambil nilai hub_cadeb langsung - $hubCadeb = isset($forminspeksi['asset']['hub_cadeb']) - ? $forminspeksi['asset']['hub_cadeb'] - : null; - - // Jika nilai adalah array dengan key 'sesuai', ambil nilainya - if (is_array($hubCadeb) && isset($hubCadeb['sesuai'])) { - $hubCadeb = $hubCadeb['sesuai']; - } - @endphp - Hubungan Pemilik Jaminan dengan Debitur - - - @if (isset($basicData['hubCadeb'])) - - @php $count = 0; @endphp - - @foreach ($basicData['hubCadeb'] as $item) - - @php $count++; @endphp - - @if ($count % 3 === 0) - - - @endif - @endforeach - - @if ($count % 3 !== 0) - @for ($i = 0; $i < 3 - ($count % 3); $i++) - - @endfor - @endif - -
- -
- @endif - - - - - @php - $statusKey = isset($forminspeksi['asset']['hub_cadeb_penghuni']['sesuai']) - ? 'sesuai' - : 'tidak sesuai'; - $selectedData = $forminspeksi['asset']['hub_cadeb_penghuni'][$statusKey] ?? null; - @endphp - - Hubungan Penghuni Jaminan dengan Debitur - - @if (isset($selectedData)) - - - - -
- {{ $selectedData ?? '' }} -
- @endif - - - - - - - @if (strtolower($permohonan->tujuanPenilaian->name) == 'rap') - @include('lpj::surveyor.components.print-out.rap') - @else - - - - E - - - ANALISA {{ $data }} - - - - - - - - - - @foreach ($permohonan->documents as $dokumen) - @if ($dokumen->jenisJaminan) - @php - $formKategori = json_decode($dokumen->jenisJaminan->form_kategori, true); - @endphp - @if (isset($formKategori) && $formKategori) - @php - $kategoriArray = is_array($formKategori) ? $formKategori : [$formKategori]; - $kategoriUnik = array_unique($kategoriArray); - @endphp - @endif - - @foreach ($kategoriUnik as $kategori) - {{-- Tampilkan komponen sesuai kategori jika file komponen ada --}} - @includeIf( - 'lpj::surveyor.components.print-out.' . str_replace('-', '-', $kategori), - [ - 'dokumen' => $dokumen, - ] - ) - @endforeach - @endif - @endforeach - - - @endIf + @endforeach + @endif
- {{-- - - G - - - ASURANSI - - --}} - - +
+ + + + @if (isset($forminspeksi['signature']['penilai']['name'])) + + @endif + @if (isset($forminspeksi['signature']['cabang']['name'])) + + @endif + @if (isset($forminspeksi['signature']['debitur']['name'])) + + @endif + @if (isset($forminspeksi['signature']['kjjp']['name'])) + + @endif + +
+ + + + - - - - - -
+ Jakarta {{ formatTanggalIndonesia($permohonan->penilaian->waktu_penilaian) }} +
- - - - + + + +
- Jakarta {{ formatTanggalIndonesia($permohonan->penilaian->waktu_penilaian) }} -
+ TTD +
+ + + @if (isset($forminspeksi['signature']['penilai']['image']) && !empty($forminspeksi['signature']['penilai']['image'])) + @php + $imagePath = $forminspeksi['signature']['penilai']['image']; - - - -
- TTD -
- - - @if (isset($forminspeksi['signature']['penilai']['image']) && !empty($forminspeksi['signature']['penilai']['image'])) - @php - $imagePath = $forminspeksi['signature']['penilai']['image']; + $isBase64 = str_starts_with($imagePath, 'data:image'); - $isBase64 = str_starts_with($imagePath, 'data:image'); + if (!$isBase64) { + $relativePath = str_replace(url('storage') . '/', '', $imagePath); + $absolutePath = storage_path('app/public/' . $relativePath); + } else { + $absolutePath = $imagePath; + } - if (!$isBase64) { - $relativePath = str_replace(url('storage') . '/', '', $imagePath); - $absolutePath = storage_path('app/public/' . $relativePath); - } else { - $absolutePath = $imagePath; - } + @endphp + + @endif - @endphp - - @endif + @if (isset($forminspeksi['signature']['cabang'])) + @php + $imagePath = $forminspeksi['signature']['cabang']['image']; - @if (isset($forminspeksi['signature']['cabang'])) - @php - $imagePath = $forminspeksi['signature']['cabang']['image']; + $isBase64 = str_starts_with($imagePath, 'data:image'); - $isBase64 = str_starts_with($imagePath, 'data:image'); + if (!$isBase64) { + $relativePath = str_replace(url('storage') . '/', '', $imagePath); + $absolutePath = storage_path('app/public/' . $relativePath); + } else { + $absolutePath = $imagePath; + } - if (!$isBase64) { - $relativePath = str_replace(url('storage') . '/', '', $imagePath); - $absolutePath = storage_path('app/public/' . $relativePath); - } else { - $absolutePath = $imagePath; - } - - @endphp - - @endif + @endphp + + @endif - @if (isset($forminspeksi['signature']['debitur'])) - - @endif + @if (isset($forminspeksi['signature']['debitur'])) + + @endif - - @if (isset($forminspeksi['signature']['kjjp'])) - - @endif - + + @if (isset($forminspeksi['signature']['kjjp'])) + + @endif + - - @if (isset($forminspeksi['signature']['penilai']['name'])) - - @endif - @if (isset($forminspeksi['signature']['cabang']['name'])) - - @endif - @if (isset($forminspeksi['signature']['debitur']['name'])) - - @endif - @if (isset($forminspeksi['signature']['kjjp']['name'])) - - @endif - -
+ + - - - - + + - Debitur/Perwakilan - + Debitur/Perwakilan + - KJPP -
+ KJPP +
- {{ ucwords(strtolower($forminspeksi['signature']['penilai']['name'])) }} -
- {{ ucwords(strtolower('PENILAI')) }} -
- {{ ucwords(strtolower($forminspeksi['signature']['cabang']['name'])) }} -
- {{ ucwords(strtolower('CABANG')) }} -
- {{ ucwords(strtolower($forminspeksi['signature']['debitur']['name'])) }} -
- {{ ucwords(strtolower('DEBITUR/PERWAKILAN')) }} -
- {{ ucwords(strtolower($forminspeksi['signature']['kjjp']['name'])) }} -
- {{ strtoupper('K.J.P.P') }} -
-
+
+ {{ ucwords(strtolower($forminspeksi['signature']['penilai']['name'])) }} +
+ {{ ucwords(strtolower('PENILAI')) }} +
+ {{ ucwords(strtolower($forminspeksi['signature']['cabang']['name'])) }} +
+ {{ ucwords(strtolower('CABANG')) }} +
+ {{ ucwords(strtolower($forminspeksi['signature']['debitur']['name'])) }} +
+ {{ ucwords(strtolower('DEBITUR/PERWAKILAN')) }} +
+ {{ ucwords(strtolower($forminspeksi['signature']['kjjp']['name'])) }} +
+ {{ strtoupper('K.J.P.P') }} +
+ + + +