From aa4a3405c1aa31d52e7ca93604d2741eff3e5761 Mon Sep 17 00:00:00 2001 From: majid Date: Fri, 20 Dec 2024 16:31:14 +0700 Subject: [PATCH 01/11] perbaikan error lpj sederhana --- app/Http/Controllers/PenilaiController.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 38ccedc..238c5a8 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -69,19 +69,16 @@ class PenilaiController extends Controller public function sederhana(Request $request, $id) { - $basicData = $this->surveyorController->getCommonData(); - $documentId = $request->query('documentId'); - $inspeksiId = $request->query('inspeksiId'); $jaminanId = $request->query('jaminanId'); $permohonan = $this->surveyorController->getPermohonanJaminanId($id, $documentId, $jaminanId); - - + $basicData = $this->surveyorController->getCommonData(); $inspeksi = Inspeksi::where('permohonan_id', $id)->where('dokument_id', $documentId)->first(); $lpj = Penilai::where('permohonan_id', $id)->where('dokument_id', $documentId)->first(); + $forminspeksi = null; $lpjData = null; if ($inspeksi) { $forminspeksi = json_decode($inspeksi->data_form, true); @@ -91,7 +88,7 @@ class PenilaiController extends Controller $lpjData = json_decode($lpj->lpj, true); } - return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'basicData', 'forminspeksi', 'inspeksi', 'lpjData')); + return view('lpj::penilai.components.lpj-sederhana-standard', compact('permohonan', 'forminspeksi', 'basicData', 'inspeksi', 'lpjData')); } public function standard(Request $request, $id) From b62b15839ff953586e450c495ea507c40b7b2994 Mon Sep 17 00:00:00 2001 From: majid Date: Sat, 21 Dec 2024 08:20:13 +0700 Subject: [PATCH 02/11] penambahan no hp di data pembanding --- .../components/data-pembanding.blade.php | 36 +++++++++++++++++++ .../views/surveyor/components/foto.blade.php | 30 +++++++++------- 2 files changed, 54 insertions(+), 12 deletions(-) diff --git a/resources/views/surveyor/components/data-pembanding.blade.php b/resources/views/surveyor/components/data-pembanding.blade.php index 10b4be6..f56798f 100644 --- a/resources/views/surveyor/components/data-pembanding.blade.php +++ b/resources/views/surveyor/components/data-pembanding.blade.php @@ -150,6 +150,42 @@ Informasi + + Hak atas properti yang dialihkan + + + + + + + + + Penawaran/ Transaksi + + + + + + + + + + + Telepon Contact Person + + + + + + + + Status Narasumber diff --git a/resources/views/surveyor/components/foto.blade.php b/resources/views/surveyor/components/foto.blade.php index 50705e9..4a15146 100644 --- a/resources/views/surveyor/components/foto.blade.php +++ b/resources/views/surveyor/components/foto.blade.php @@ -389,12 +389,16 @@ Foto Lantai 1
- Gambar Pendamping +
+ +
+ onchange="previewImage(this, 'foto_lantai-preview')" capture="camera">
From 5a0564acfbb956a2d6e6040c81f73a0e6bd81fb8 Mon Sep 17 00:00:00 2001 From: majid76 Date: Mon, 23 Dec 2024 07:20:37 +0700 Subject: [PATCH 03/11] perbaikan kertas kerja, dan form inspeksi --- app/Exports/KertasKerjaExport.php | 553 +++++----- app/Http/Controllers/PenilaiController.php | 78 +- app/Http/Controllers/SurveyorController.php | 6 +- .../views/component/detail-jaminan.blade.php | 106 +- .../lpj-sederhana-standard.blade.php | 969 +++++++++--------- .../penilai/components/paparan.blade.php | 81 +- resources/views/penilai/lampiran.blade.php | 109 +- .../surveyor/components/bangunan.blade.php | 2 +- .../components/data-pembanding.blade.php | 2 +- .../views/surveyor/components/fakta.blade.php | 2 +- .../surveyor/components/informasi.blade.php | 2 +- .../surveyor/components/lingkungan.blade.php | 2 +- .../views/surveyor/components/tanah.blade.php | 2 +- 13 files changed, 947 insertions(+), 967 deletions(-) diff --git a/app/Exports/KertasKerjaExport.php b/app/Exports/KertasKerjaExport.php index 6ea78de..2b744ac 100644 --- a/app/Exports/KertasKerjaExport.php +++ b/app/Exports/KertasKerjaExport.php @@ -2,21 +2,22 @@ namespace Modules\Lpj\Exports; -// use Maatwebsite\Excel\Concerns\FromCollection; -// use Maatwebsite\Excel\Concerns\WithColumnFormatting; -// use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; -// use Maatwebsite\Excel\Concerns\WithHeadings; -// use Maatwebsite\Excel\Concerns\WithStyles; -// use Maatwebsite\Excel\Concerns\WithColumnWidths; -// use Maatwebsite\Excel\Concerns\WithEvents; -// use Maatwebsite\Excel\Events\AfterSheet; -use Illuminate\Contracts\View\View; -use Maatwebsite\Excel\Concerns\FromView; -class KertasKerjaExport implements FromView -{ +use Maatwebsite\Excel\Concerns\FromCollection; +use Maatwebsite\Excel\Concerns\WithHeadings; +use Maatwebsite\Excel\Concerns\WithStyles; +use Maatwebsite\Excel\Concerns\WithColumnWidths; +use Maatwebsite\Excel\Concerns\WithEvents; +use Maatwebsite\Excel\Events\AfterSheet; +use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; +use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; -// class KertasKerjaExport implements FromCollection, WithHeadings, WithStyles, WithColumnWidths, WithEvents +class KertasKerjaExport implements FromCollection, WithHeadings, WithStyles, WithColumnWidths, WithEvents +{ +// use Illuminate\Contracts\View\View; +// use Maatwebsite\Excel\Concerns\FromView; +// class KertasKerjaExport implements FromView // { + protected $data; public function __construct($data) @@ -24,257 +25,315 @@ class KertasKerjaExport implements FromView $this->data = $data; } - public function view(): View + // public function view(): View + // { + // return view('lpj::component.kertas-kerja', [ + // 'data' => $this->data, + // ]); + // } + + public function collection() { - return view('lpj::component.kertas-kerja', [ - 'data' => $this->data, - ]); + // $rows = []; + + // $nomor = 1; + $fields = [ + 'jenis_aset' => 'Jenis Aset', + 'luas_tanah' => 'Luas Tanah (M²)', + 'luas_bangunan' => 'Luas Bangunan (M²)', + 'harga' => 'Harga Transaksi/Penawaran', + 'tanggal_penawaran' => 'Tanggal Penawaran/Transaksi', + 'diskon' => 'Diskon %', + 'esitmasi_harga' => 'Esitmasi Harga Transaksi (Rp)', + 'no_telepon' => 'Telepon Contact Person', + 'nama_nara_sumbr' => 'Nama Nara Sumber', + 'status_nara_sumbr' => 'Status Nara Sumber', + 'waktu_transaksi' => 'Waktu Transaksi/Penawaran', + 'alamat' => 'Alamat Titik Gps', + + 'jalan' => 'Jalan', + 'desa' => 'Desa/Kelurahan', + 'kecamatan' => 'Kecamatan', + 'kabupaten' => 'Kabupaten', + 'provinsi' => 'Provinsi', + + 'jarak_pembanding' => 'Jarak Pembanding dengan Objek', + 'elevasi' => 'Estimasi Ranking Tanah', + 'peruntukan' => 'Estiamsi Rangkin Bangunan' + + ]; + + $rows = []; + $nomor = 1; + + // Add general asset information + $rows[] = ['No.', 'Uraian', 'Objek Penilaian', 'Data Pembanding 1', 'Data Pembanding 2', 'Data Pembanding 3']; + + foreach ($this->data['objek'] as $key => $value) { + $rows[] = [ + $nomor++, + $key, + $value, + $this->data['pembanding1'][$key] ?? '', + $this->data['pembanding2'][$key] ?? '', + $this->data['pembanding3'][$key] ?? '' + ]; + } + + + // B. Perhitungan Penyesuaian + $rows[] = ['']; + $rows[] = ['']; + $rows[] = ['B. Estimasi Nilai Tanah Pembanding dengan Teknik Penyisaan Tanah untuk mendapatkan per meter persegi estimasi Nilai Tanah Pembanding']; + $rows[] = ['No.','Uraian', 'Objek Penilaian', 'Data Pembanding 1', 'Data Pembanding 2', 'Data Pembanding 3']; + $nostimasi = 1; + $filedEstimasi = [ + 'estimasi' => 'Estimasi Biaya Pengganti Baru Bangunan (Rp)', + 'estimasi_spl' => 'Estimasi Biaya Pengganti Baru SPL (Rp)', + 'penyusutan' => 'Penyusutan Fisik Banguna', + + 'a' => 'a. rincian ttipe bangunan (MAPPI)', + 'b' => 'b. umur ekonomis (MAPPI)', + 'c' => 'c. estimasi Tahun tahun visual dengan mempertimbangkan renovasi', + 'd' => 'd. Sehingga sisa umur efektif', + 'e' => 'e. kondisi bagunan', + 'f' => 'f.sehinggan penyusutan fisik', + 'penyusutan_fungsi' => 'Penyusutan fungsi Bangunan (%)', + 'penyusutan_ekonomi' => 'Penyusutan Ekonomi Bangunan (%)', + 'total_penyusutan' => 'Total Penyusutan (%)', + 'estimasi_nilai' => 'Estimasi Nilai Bangunan dan SPL (Rp)', + 'estimasi_tanah' => 'Estimasi Nilai Tanah Pembanding (Rp)', + 'estimasi_nilai' => 'Estimasi Nilai Tanah Pembanding (Rp)', + ]; + + foreach ($filedEstimasi as $key => $label) { + $rows[] = [ + $nostimasi++, + $label, + $this->data['estimasi'][$key] ?? '', + $this->data['estimasi1'][$key] ?? '', + $this->data['estimasi2'][$key] ?? '', + $this->data['estimasi3'][$key] ?? '' + + ]; + } + + + $row[] = ['']; + $row[] = ['']; + $rows[] = ['INDIKASI NILAI TANAHATAS OBJEK PENILAIAN']; + + $indikasi=[ + 'luas_tanah' => 'Luas Tanah ', + 'indikasi_per' => 'INDIKASI TANAH PER M2 (RP/M2)', + 'indikasi_total' => 'INDIKASI TANAH TOTAL(RP)', + 'varian' => 'VARIANT(%)', + ]; + + foreach ($indikasi as $key => $label) { + $rows[] = [ + $label, + $this->data['indikasi'][$key] ?? '', + ]; + } + + + // C. Peta Lokasi + $rows[] = ['']; + $rows[] = ['']; + $rows[] = ['C. Peta Lokasi']; + $rows[] = [$this->data['foto_objek']['foto_objek_peta'] ?? '']; + + // D. Foto Objek dan Data Pembanding + $rows[] = ['']; + $rows[] = ['D. Foto Objek dan Data Pembanding']; + $rows[] = [ + $this->data['foto_objek1']['foto_objek'] ?? '', + $this->data['foto_objek2']['foto_objek'] ?? '', + '', '', '' + ]; + + // E. Foto Objek + $rows[] = ['']; + $rows[] = ['E. Foto Objek']; + $rows[] = [ + $this->data['foto']['foto_objek'] ?? '', + $this->data['foto']['foto_objek'] ?? '', + '', '', '' + ]; + + return collect($rows); } - // public function collection() - // { - // $rows = []; + public function headings(): array + { + return [ + ['KERTAS KERJA PENILAIAN'], + ['Pendekatan Pasar'], + ['Metode Perbandingan Data Pasar'], + ['Tanggal Penilaian: ' . ($this->headerInfo['tanggal_penilaian'] ?? '')], + ['Nama Pemilik Aset: ' . ($this->headerInfo['nama_pemilik'] ?? '')], + ['Nama Pemberi Tugas: ' . ($this->headerInfo['nama_pemberi_tugas'] ?? '')], + ['Lokasi: ' . ($this->headerInfo['lokasi_lengkap'] ?? '')], - // $nomor = 1; - // $fields = [ - // 'jenis_aset' => 'Jenis Aset', - // 'luas_tanah' => 'Luas Tanah (M²)', - // 'luas_bangunan' => 'Luas Bangunan (M²)', - // 'harga' => 'Harga Transaksi/Penawaran', - // 'tanggal_penawaran' => 'Tanggal Penawaran/Transaksi', - // 'diskon' => 'Diskon %', - // 'esitmasi_harga' => 'Esitmasi Harga Transaksi (Rp)', - // 'no_telepon' => 'Telepon Contact Person', - // 'nama_nara_sumbr' => 'Nama Nara Sumber', - // 'status_nara_sumbr' => 'Status Nara Sumber', - // 'waktu_transaksi' => 'Waktu Transaksi/Penawaran', - // 'alamat' => 'Alamat Titik Gps', + ]; + } + public function registerEvents(): array + { + return [ + AfterSheet::class => function (AfterSheet $event) { + // Styling untuk header utama + - // 'jalan' => 'Jalan', - // 'desa' => 'Desa/Kelurahan', - // 'kecamatan' => 'Kecamatan', - // 'kabupaten' => 'Kabupaten', - // 'provinsi' => 'Provinsi', + // Styling untuk setiap section header + $sectionRows = [10, 34, 56, 46, 52]; // Sesuaikan dengan posisi setiap section + foreach ($sectionRows as $row) { + $event->sheet->getStyle("A{$row}:F{$row}")->getFill() + ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) + ->getStartColor()->setRGB('E2EFDA'); + } - // 'jarak_pembanding' => 'Jarak Pembanding dengan Objek', - // 'elevasi' => 'Estimasi Ranking Tanah', - // 'peruntukan' => 'Estiamsi Rangkin Bangunan' + // Merge cells untuk headers + $event->sheet->mergeCells('A1:E1'); + $event->sheet->mergeCells('A2:E2'); + $event->sheet->mergeCells('A4:E4'); + $event->sheet->mergeCells('A5:E5'); + $event->sheet->mergeCells('A6:E6'); + $event->sheet->mergeCells('A7:E7'); + $event->sheet->mergeCells('A8:E8'); - // ]; + // Alignment + $event->sheet->getStyle('A1:E8')->getAlignment() + ->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT); + $this->insertImages($event->sheet); + } + ]; + } + public function columnWidths(): array + { + return [ + 'A' => 5, + 'B' => 30, + 'C' => 30, + 'D' => 30, + 'E' => 30, + 'F' => 30, + ]; + } - // foreach ($fields as $key => $label) { - // $rows[] = [ - // $nomor++, - // $label, - // $this->data['objek'][$key] ?? '', - // $this->data['pembanding1'][$key] ?? '', - // $this->data['pembanding2'][$key] ?? '', - // $this->data['pembanding3'][$key] ?? '' - // ]; - // } + public function styles(Worksheet $sheet) + { + return [ + // Style for the main header - // // B. Perhitungan Penyesuaian - // $rows[] = ['']; - // $rows[] = ['']; - // $rows[] = ['B. Estimasi Nilai Tanah Pembanding dengan Teknik Penyisaan Tanah untuk mendapatkan per meter persegi estimasi Nilai Tanah Pembanding']; - // $rows[] = ['No.','Uraian', 'Objek Penilaian', 'Data Pembanding 1', 'Data Pembanding 2', 'Data Pembanding 3']; - // $nostimasi = 1; - // $filedEstimasi = [ - // 'estimasi' => 'Estimasi Biaya Pengganti Baru Bangunan (Rp)', - // 'estimasi_spl' => 'Estimasi Biaya Pengganti Baru SPL (Rp)', - // 'penyusutan' => 'Penyusutan Fisik Banguna', + // Style for section headers + 10 => ['font' => ['bold' => true]], // A. Informasi Umum + 34 => ['font' => ['bold' => true]], // B. Estimasi Nilai Tanah + 35 => ['font' => ['bold' => true]], // C. Peta Lokasi + 57 => ['font' => ['bold' => true]], // D. Foto Objek dan Pembanding + 60 => ['font' => ['bold' => true]], // E. Foto Objek - // 'a' => 'a. rincian ttipe bangunan (MAPPI)', - // 'b' => 'b. umur ekonomis (MAPPI)', - // 'c' => 'c. estimasi Tahun tahun visual dengan mempertimbangkan renovasi', - // 'd' => 'd. Sehingga sisa umur efektif', - // 'e' => 'e. kondisi bagunan', - // 'f' => 'f.sehinggan penyusutan fisik', - // 'penyusutan_fungsi' => 'Penyusutan fungsi Bangunan (%)', - // 'penyusutan_ekonomi' => 'Penyusutan Ekonomi Bangunan (%)', - // 'total_penyusutan' => 'Total Penyusutan (%)', - // 'estimasi_nilai' => 'Estimasi Nilai Bangunan dan SPL (Rp)', - // 'estimasi_tanah' => 'Estimasi Nilai Tanah Pembanding (Rp)', - // 'estimasi_nilai' => 'Estimasi Nilai Tanah Pembanding (Rp)', - // ]; + // Default styling for columns + 'A:J' => [ + 'alignment' => ['horizontal' => 'left', 'vertical' => 'center'], + 'wrapText' => true, + ], - // foreach ($filedEstimasi as $key => $label) { - // $rows[] = [ - // $nostimasi++, - // $label, - // $this->data['estimasi'][$key] ?? '', - // $this->data['estimasi1'][$key] ?? '', - // $this->data['estimasi2'][$key] ?? '', - // $this->data['estimasi3'][$key] ?? '' + // Style for other sections (like photo and map sections) - // ]; - // } + // Style for the other headers + 'A11:F11' => [ + 'font' => ['bold' => true], + 'fill' => ['fillType' => 'solid', 'color' => ['rgb' => 'E2EFDA']], + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN + ] + ] + ], + 'A12:F31' => [ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN + ] + ] + ], - // $row[] = ['']; - // $row[] = ['']; - // $rows[] = ['INDIKASI NILAI TANAHATAS OBJEK PENILAIAN']; + 'A35:F35' => [ + 'font' => ['bold' => true], + 'fill' => ['fillType' => 'solid', 'color' => ['rgb' => 'E2EFDA']], + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN + ] + ] + ], + 'A35:F49' => [ + 'borders' => [ + 'allBorders' => [ + 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN + ] + ] + ], - // $indikasi=[ - // 'luas_tanah' => 'Luas Tanah ', - // 'indikasi_per' => 'INDIKASI TANAH PER M2 (RP/M2)', - // 'indikasi_total' => 'INDIKASI TANAH TOTAL(RP)', - // 'varian' => 'VARIANT(%)', - // ]; + // end header + ]; + } - // foreach ($indikasi as $key => $label) { - // $rows[] = [ - // $label, - // $this->data['indikasi'][$key] ?? '', - // ]; - // } + + protected function insertImages($sheet) + { + ini_set('max_execution_time', '300'); + $worksheet = $sheet->getDelegate(); + + // Insert images for pembanding1 + if (!empty($this->data['pembanding1']['foto_objek'])) { + $drawing = new Drawing(); + $drawing->setName('Pembanding 1'); + $drawing->setDescription('Foto Objek Pembanding 1'); + $drawing->setPath(storage_path('app/public/' . $this->data['pembanding1']['foto_objek'])); // Adjust path as needed + $drawing->setHeight(90); + $drawing->setCoordinates('C' . (count($this->collection()) + 2)); // Adjust coordinates as needed + $drawing->setWorksheet($worksheet); + } + + // Repeat for pembanding2 and pembanding3 + if (!empty($this->data['pembanding2']['foto_objek'])) { + $drawing = new Drawing(); + $drawing->setName('Pembanding 2'); + $drawing->setDescription('Foto Objek Pembanding 2'); + $drawing->setPath(storage_path('app/public/' . $this->data['pembanding2']['foto_objek'])); // Adjust path as needed + $drawing->setHeight(90); + $drawing->setCoordinates('C' . (count($this->collection()) + 4)); // Adjust coordinates as needed + $drawing->setWorksheet($worksheet); + } + + if (!empty($this->data['pembanding3']['foto_objek'])) { + $drawing = new Drawing(); + $drawing->setName('Pembanding 3'); + $drawing->setDescription('Foto Objek Pembanding 3'); + $drawing->setPath(storage_path('app/public/' . $this->data['pembanding3']['foto_objek'])); // Adjust path as needed + $drawing->setHeight(90); + $drawing->setCoordinates('C' . (count($this->collection()) + 6)); // Adjust coordinates as needed + $drawing->setWorksheet($worksheet); + } + + // Insert images for foto_objek + foreach ($this->data['foto_objek'] as $index => $foto) { + if (!empty($foto['foto_objek'])) { + $drawing = new Drawing(); + $drawing->setName($foto['name_objek']); + $drawing->setDescription($foto['deskripsi_objek']); + $drawing->setPath(storage_path('app/public/' . $foto['foto_objek'])); // Adjust path as needed + $drawing->setHeight(90); + $drawing->setCoordinates('C' . (count($this->collection()) + (8 + $index * 2))); // Adjust coordinates as needed + $drawing->setWorksheet($worksheet); + } + } + } + - // // C. Peta Lokasi - // $rows[] = ['']; - // $rows[] = ['']; - // $rows[] = ['C. Peta Lokasi']; - // $rows[] = [$this->data['foto_objek']['foto_objek_peta'] ?? '']; - - // // D. Foto Objek dan Data Pembanding - // $rows[] = ['']; - // $rows[] = ['D. Foto Objek dan Data Pembanding']; - // $rows[] = [ - // $this->data['foto_objek1']['foto_objek'] ?? '', - // $this->data['foto_objek2']['foto_objek'] ?? '', - // '', '', '' - // ]; - - // // E. Foto Objek - // $rows[] = ['']; - // $rows[] = ['E. Foto Objek']; - // $rows[] = [ - // $this->data['foto']['foto_objek'] ?? '', - // $this->data['foto']['foto_objek'] ?? '', - // '', '', '' - // ]; - - // return collect($rows); - // } - - // public function headings(): array - // { - // return [ - // ['KERTAS KERJA PENILAIAN'], - // ['Pendekatan Pasar'], - // ['Metode Perbandingan Data Pasar'], - // ['Tanggal Penilaian: ' . ($this->headerInfo['tanggal_penilaian'] ?? '')], - // ['Nama Pemilik Aset: ' . ($this->headerInfo['nama_pemilik'] ?? '')], - // ['Nama Pemberi Tugas: ' . ($this->headerInfo['nama_pemberi_tugas'] ?? '')], - // ['Lokasi: ' . ($this->headerInfo['lokasi_lengkap'] ?? '')], - // ['Nama Debitur: ' . ($this->headerInfo['nama_debitur'] ?? '')], - // [''], - // ['A. INFORMASI UMUM'], - // ['No.','Uraian', 'Objek Penilaian', 'Data Pembanding 1', 'Data Pembanding 2', 'Data Pembanding 3'] - - - // ]; - // } - // public function registerEvents(): array - // { - // return [ - // AfterSheet::class => function (AfterSheet $event) { - // // Styling untuk header utama - - - // // Styling untuk setiap section header - // $sectionRows = [10, 34, 56, 46, 52]; // Sesuaikan dengan posisi setiap section - // foreach ($sectionRows as $row) { - // $event->sheet->getStyle("A{$row}:F{$row}")->getFill() - // ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) - // ->getStartColor()->setRGB('E2EFDA'); - // } - - // // Merge cells untuk headers - // $event->sheet->mergeCells('A1:E1'); - // $event->sheet->mergeCells('A2:E2'); - // $event->sheet->mergeCells('A4:E4'); - // $event->sheet->mergeCells('A5:E5'); - // $event->sheet->mergeCells('A6:E6'); - // $event->sheet->mergeCells('A7:E7'); - // $event->sheet->mergeCells('A8:E8'); - - // // Alignment - // $event->sheet->getStyle('A1:E8')->getAlignment() - // ->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT); - // } - // ]; - // } - // public function columnWidths(): array - // { - // return [ - // 'A' => 5, - // 'B' => 30, - // 'C' => 30, - // 'D' => 30, - // 'E' => 30, - // 'F' => 30, - // ]; - // } - - // public function styles(Worksheet $sheet) - // { - // return [ - // // Style for the main header - - // // Style for section headers - // 10 => ['font' => ['bold' => true]], // A. Informasi Umum - // 34 => ['font' => ['bold' => true]], // B. Estimasi Nilai Tanah - // 35 => ['font' => ['bold' => true]], // C. Peta Lokasi - // 57 => ['font' => ['bold' => true]], // D. Foto Objek dan Pembanding - // 60 => ['font' => ['bold' => true]], // E. Foto Objek - - // // Default styling for columns - // 'A:J' => [ - // 'alignment' => ['horizontal' => 'left', 'vertical' => 'center'], - // 'wrapText' => true, - // ], - - // // Style for other sections (like photo and map sections) - - // // Style for the other headers - // 'A11:F11' => [ - // 'font' => ['bold' => true], - // 'fill' => ['fillType' => 'solid', 'color' => ['rgb' => 'E2EFDA']], - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN - // ] - // ] - // ], - // 'A12:F31' => [ - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN - // ] - // ] - // ], - - - // 'A35:F35' => [ - // 'font' => ['bold' => true], - // 'fill' => ['fillType' => 'solid', 'color' => ['rgb' => 'E2EFDA']], - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN - // ] - // ] - // ], - // 'A35:F49' => [ - // 'borders' => [ - // 'allBorders' => [ - // 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN - // ] - // ] - // ], - - // // end header - // ]; - // } } diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 238c5a8..d368d80 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -299,19 +299,76 @@ class PenilaiController extends Controller } public function export_kertas_kerja(Request $request) - { +{ + $permohonanId = $request->query('permohonanId'); + $documentId = $request->query('documentId'); - $permohonanId = $request->query('permohonanId'); - $documentId = $request->query('documentId'); - $inspeksiId = $request->query('inspeksiId'); - $jaminanId = $request->query('jaminanId'); + // Fetch the data from the database + $data = Inspeksi::where('permohonan_id', $permohonanId) + ->where('dokument_id', $documentId) + ->first(); - $data = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); - - return view('lpj::component.kertas-kerja', compact('data')); - // return Excel::download(new KertasKerjaExport($data), 'kertas-kerja.xlsx'); + // Check if data exists + if (!$data) { + return response()->json(['message' => 'Data not found'], 404); } + // Decode the JSON fields + $dataForm = json_decode($data->data_form, true); + $fotoForm = json_decode($data->foto_form, true); + $denahForm = json_decode($data->denah_form, true); + $dataPembanding = json_decode($data->data_pembanding, true); + + // Prepare the data for export + $exportData = [ + 'objek' => [ + 'jenis_aset' => $dataForm['asset']['jenis_asset']['sesuai'] ?? '', + 'luas_tanah' => $dataForm['tanah']['luas_tanah']['tidak sesuai'] ?? '', + 'harga' => $dataForm['asset']['harga'] ?? '', + 'tanggal_penawaran' => $dataForm['tanggal_penawaran'] ?? '', + 'diskon' => $dataForm['diskon'] ?? '', + 'no_telepon' => $dataForm['no_telepon'] ?? '', + 'nama_nara_sumber' => $dataForm['nama_nara_sumber'] ?? '', + 'status_nara_sumber' => $dataForm['status_nara_sumber'] ?? '', + 'alamat' => $dataForm['alamat'] ?? '', + // Add other fields as necessary + ], + 'pembanding1' => [], + 'pembanding2' => [], + 'pembanding3' => [], + 'foto_peta' => [ + 'foto_tempat' => $dataForm['foto_tempat'] ?? [], + 'foto_gistaru' => $dataForm['foto_gistaru'] ?? [], + 'foto_bhumi' => $dataForm['foto_bhumi'] ?? [], + 'foto_argis_region' => $dataForm['foto_argis_region'] ?? [], + ], + 'foto_objek' => $fotoForm['object_jaminan'] ?? [], + 'foto_objek1' => [], // Populate with relevant data + 'foto_objek2' => [], // Populate with relevant data + 'tanggal_penilaian' => $data->tanggal_penilaian ?? '', + 'nama_pemilik' => $data->nama_pemilik ?? '', + 'lokasi_lengkap' => $data->lokasi_lengkap ?? '', + ]; + + // Extract data pembanding + if (isset($dataPembanding['data_pembanding'])) { + foreach ($dataPembanding['data_pembanding'] as $index => $pembanding) { + if ($index == 0) { + $exportData['pembanding1'] = $pembanding; + } elseif ($index == 1) { + $exportData['pembanding2'] = $pembanding; + } elseif ($index == 2) { + $exportData['pembanding3'] = $pembanding; + } + } + } + + // Now create the export + // return response()->json([ 'data' => $fotoForm]); + return Excel::download(new KertasKerjaExport($exportData), 'kertas-kerja.xlsx'); +} + + public function import_kertas_kerja(Request $request) { @@ -520,4 +577,7 @@ class PenilaiController extends Controller } + + + } diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index f344f13..115c41f 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -644,7 +644,7 @@ class SurveyorController extends Controller 'address', 'village_code', 'district_code', 'city_code', 'province_code', 'tahun', 'luas_tanah', 'luas_bangunan', 'tahun_bangunan', 'status_nara_sumber', 'harga', 'harga_diskon', 'diskon', 'total', 'nama_nara_sumber', - 'peruntukan', 'penawaran_transaksi', 'nomor_tlp', + 'peruntukan', 'penawaran', 'telepon','hak_properti', 'kordinat_lat', 'kordinat_lng', 'jenis_aset','foto_objek' ]; @@ -693,8 +693,8 @@ class SurveyorController extends Controller $fields = [ 'address', 'village_code', 'district_code', 'city_code', 'province_code', 'luas_tanah', 'luas_tanah_bagunan', 'total', 'diskon', 'harga_diskon', - 'status_nara_sumber', 'harga', 'nama_nara_sumber', - 'kordinat_lat', 'kordinat_lng', 'jenis_aset', + 'status_nara_sumber', 'harga', 'nama_nara_sumber','hak_properti','telepon', + 'kordinat_lat', 'kordinat_lng', 'jenis_aset','penawaran', ]; $inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id')) diff --git a/resources/views/component/detail-jaminan.blade.php b/resources/views/component/detail-jaminan.blade.php index f38772e..0c24327 100644 --- a/resources/views/component/detail-jaminan.blade.php +++ b/resources/views/component/detail-jaminan.blade.php @@ -1,11 +1,22 @@
+ @php + $title = $title ?? 'Data Permohonan'; + @endphp

- Data Permohonan + {{ $title }}

- Back + @if (isset($id)) + + Back + + @else + + Back + + @endif
@@ -49,8 +60,9 @@

Status Bayar:

- - {{ str_replace('_',' ',$permohonan->status_bayar) }} + + {{ str_replace('_', ' ', $permohonan->status_bayar) }}
@@ -81,7 +93,7 @@ Name - {{ $permohonan->debiture->name ?? "" }} + {{ $permohonan->debiture->name ?? '' }} @@ -89,7 +101,7 @@ Email - {{ $permohonan->debiture->email ?? "" }} + {{ $permohonan->debiture->email ?? '' }} @@ -97,7 +109,7 @@ Phone - {{ $permohonan->debiture->phone ?? "" }} + {{ $permohonan->debiture->phone ?? '' }} @@ -106,7 +118,7 @@ Address - {{ $permohonan->debiture->address ?? "" }} + {{ $permohonan->debiture->address ?? '' }} @@ -114,7 +126,11 @@   - {{ $permohonan->debiture->village->name ?? "" }}, {{ $permohonan->debiture->district->name ?? "" }}, {{ $permohonan->debiture->city->name ?? "" }}, {{ $permohonan->debiture->province->name ?? "" }} - {{ $permohonan->debiture->village->postal_code ?? "" }} + {{ $permohonan->debiture->village->name ?? '' }}, + {{ $permohonan->debiture->district->name ?? '' }}, + {{ $permohonan->debiture->city->name ?? '' }}, + {{ $permohonan->debiture->province->name ?? '' }} - + {{ $permohonan->debiture->village->postal_code ?? '' }} @@ -126,7 +142,7 @@ Cabang - {{ $permohonan->debiture->branch->name ?? "" }} + {{ $permohonan->debiture->branch->name ?? '' }} @@ -134,7 +150,7 @@ CIF - {{ $permohonan->debiture->cif ?? "" }} + {{ $permohonan->debiture->cif ?? '' }} @@ -142,7 +158,7 @@ Nomor Rekening - {{ $permohonan->debiture->nomor_rekening ?? "" }} + {{ $permohonan->debiture->nomor_rekening ?? '' }} @@ -150,7 +166,7 @@ NPWP - {{ $permohonan->debiture->npwp ?? "" }} + {{ $permohonan->debiture->npwp ?? '' }} @@ -166,11 +182,13 @@
- @foreach($permohonan->debiture->documents as $dokumen) -
- -
+
@@ -190,7 +209,7 @@ Pemilik Jaminan: - {{ $dokumen->pemilik->name?? "" }} + {{ $dokumen->pemilik->name ?? '' }}
@@ -198,7 +217,7 @@ Jenis Jaminan: - {{ $dokumen->jenisJaminan->name?? "" }} + {{ $dokumen->jenisJaminan->name ?? '' }}
@@ -206,7 +225,7 @@ Hubungan Pemilik Jaminan: - {{ $dokumen->pemilik->hubungan_pemilik->name?? "" }} + {{ $dokumen->pemilik->hubungan_pemilik->name ?? '' }}
@@ -214,23 +233,28 @@ Alamat Pemilik Jaminan: - {{ $dokumen->pemilik->address ?? ""}}, -
{{ $dokumen->pemilik->village->name ?? "" }}, {{ $dokumen->pemilik->district->name ?? "" }}, {{ $dokumen->pemilik->city->name ?? "" }}, {{ $dokumen->pemilik->province->name ?? "" }} - {{ $dokumen->pemilik->village->postal_code ?? "" }} + {{ $dokumen->pemilik->address ?? '' }}, +
{{ $dokumen->pemilik->village->name ?? '' }}, + {{ $dokumen->pemilik->district->name ?? '' }}, + {{ $dokumen->pemilik->city->name ?? '' }}, + {{ $dokumen->pemilik->province->name ?? '' }} - + {{ $dokumen->pemilik->village->postal_code ?? '' }}
- + Download Semua Dokumen - @foreach($dokumen->detail as $detail) + @foreach ($dokumen->detail as $detail) @@ -239,24 +263,34 @@ @endforeach diff --git a/resources/views/penilai/components/lpj-sederhana-standard.blade.php b/resources/views/penilai/components/lpj-sederhana-standard.blade.php index 0d401c2..4e78c6f 100644 --- a/resources/views/penilai/components/lpj-sederhana-standard.blade.php +++ b/resources/views/penilai/components/lpj-sederhana-standard.blade.php @@ -121,7 +121,6 @@
-
@php @@ -176,479 +175,471 @@
+ -
-
-

- dokumen -

-
-
-
- @foreach ($permohonan->debiture->documents as $dokumen) -
- - -
{{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }} - {{ $detail->name ?? "" }} + {{ $detail->name ?? '' }}
- @if(isset($detail->dokumen_jaminan)) + @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] : []); + $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) + @foreach ($dokumen_jaminan as $index => $dokumen)
- @if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo'])) - @if(!empty($dokumen_nomor)) - Nomor Dokumen : {{ $dokumen_nomor[$index] }} + @if (in_array(Auth::user()->roles[0]->name, ['administrator', 'pemohon-eo'])) + @if (!empty($dokumen_nomor)) + Nomor Dokumen : + {{ $dokumen_nomor[$index] }} @endif + class="flex-none badge badge-sm badge-outline mt-2 mr-2"> {{ basename($dokumen) }} @endif - Preview + Preview

@endforeach @@ -269,7 +303,7 @@ Keterangan
- {{ $detail->keterangan ?? "" }} + {{ $detail->keterangan ?? '' }}
- @foreach ($dokumen->detail as $detail) - - - - - - - - - - - - - @endforeach -
- {{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }} - - {{ $detail->name ?? '' }} -
- Dokumen Jaminan - - - @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 (in_array(Auth::user()->roles[0]->name, ['administrator', 'pemohon-eo'])) - @if (!empty($dokumen_nomor)) - Nomor - Dokumen : - {{ $dokumen_nomor[$index] }} - @endif - - {{ basename($dokumen) }} - - - @endif - Preview -
-
- @endforeach - @endif - -
- Keterangan - - {{ $detail->keterangan ?? '' }} -
-
-
-
- @endforeach -
- @include('lpj::component.pdfviewer') -
- @foreach ($permohonan->debiture->documents as $dokumen) -
- - - -
- @endforeach -
- @include('lpj::component.pdfviewer') -
+
+
+

+ dokumen +

+
+
+ @foreach ($permohonan->debiture->documents as $dokumen) +
+ -
-
-

- Hubungan Cadeb/Debitur dengan pemilik dan penghuni -

+ +
+ @endforeach
+ @include('lpj::component.pdfviewer') +
+ @foreach ($permohonan->debiture->documents as $dokumen) +
+ + + +
+ @endforeach +
+ @include('lpj::component.pdfviewer') +
+
+ +
+
+

+ Hubungan Cadeb/Debitur dengan pemilik dan penghuni +

+
+ @php + $statusKey = isset($forminspeksi['asset']['hub_cadeb']['sesuai']) ? 'sesuai' : 'tidak sesuai'; + $selectedData = $forminspeksi['asset']['hub_cadeb'][$statusKey] ?? null; + @endphp +
+
+
+ + + + @foreach ($permohonan->debiture->documents as $dokumen) + @if ($dokumen->jenisJaminan) @php - $statusKey = isset($forminspeksi['asset']['hub_cadeb']['sesuai']) ? 'sesuai' : 'tidak sesuai'; - $selectedData = $forminspeksi['asset']['hub_cadeb'][$statusKey] ?? null; + $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 + + + + + @foreach ($kategoriUnik as $kategori) + {{-- Tampilkan komponen sesuai kategori --}} + @include('lpj::surveyor.components.' . str_replace('-', '-', $kategori), [ + 'dokumen' => $dokumen, + ]) + @endforeach + @endif + @endif + @endforeach + + +
+
+

+ Informasi dan pembanding +

+
+ @include('lpj::penilai.components.informasi-pembanding') +
+ + +
+
+
+

+ total nilai pasar wajar +

+
+
+
+ +
+
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+ + +
+
+ + +
+
+ +
+
+ +
+
+ + +
+
+ + + + +
+
+ + +
+ + + +
+ +
+ + +
+
+
+
+
+ +
+ +
+
+
+ +
+
+ + +
+
+
+ +
+ +
+ +
+
+
- @foreach ($permohonan->debiture->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 - - - - - @foreach ($kategoriUnik as $kategori) - {{-- Tampilkan komponen sesuai kategori --}} - @include('lpj::surveyor.components.' . str_replace('-', '-', $kategori), [ - 'dokumen' => $dokumen, - ]) - @endforeach - @endif - @endif - @endforeach - -

- Informasi dan pembanding + nilai asuransi

- @include('lpj::penilai.components.informasi-pembanding') -
- - - -
-
-

- total nilai pasar wajar -

-
-
-
- -
-
-
- - -
-
- - -
-
- -
+
+
+ +
+
+
+ +
- -
-
- - -
-
- - -
-
- -
-
- -
-
- - -
-
- - - - -
-
- - -
- - - -
- -
- - -
-
-
-
-
- -
- -
-
-
- -
-
- - -
-
-
- -
- -
- -
-
-
-
-
- -
-
-

- nilai asuransi -

-
-
-
- -
-
-
- - -
-
- -
+ +
-
-
+ +
-
- -
- -
+
+
+ +
+ +
@endsection @@ -669,61 +660,61 @@ }); function calculateTotal() { - // Fungsi untuk menghapus format ribuan/koma - const parseInput = (value) => parseFloat(value.replace(/[^0-9]/g, '')) || 0; + // Fungsi untuk menghapus format ribuan/koma + const parseInput = (value) => parseFloat(value.replace(/[^0-9]/g, '')) || 0; - // Ambil elemen input dan parse nilainya - let luasTanah = parseInput(document.getElementById('luas_tanah').value); - let hargaPerMeterTanah = parseInput(document.querySelector('input[name="nilai_tanah_1"]').value); - let totalLuasTanah = document.querySelector('input[name="nilai_tanah_2"]'); + // Ambil elemen input dan parse nilainya + let luasTanah = parseInput(document.getElementById('luas_tanah').value); + let hargaPerMeterTanah = parseInput(document.querySelector('input[name="nilai_tanah_1"]').value); + let totalLuasTanah = document.querySelector('input[name="nilai_tanah_2"]'); - let luasBangunan = parseInput(document.getElementById('luas_bangunan').value); - let hargaPerMeterBangunan = parseInput(document.querySelector('input[name="nilai_bangunan_1"]').value); - let totalLuasBangunan = document.querySelector('input[name="nilai_bangunan_2"]'); + let luasBangunan = parseInput(document.getElementById('luas_bangunan').value); + let hargaPerMeterBangunan = parseInput(document.querySelector('input[name="nilai_bangunan_1"]').value); + let totalLuasBangunan = document.querySelector('input[name="nilai_bangunan_2"]'); - let saranaPelengkap = parseInput(document.getElementById('sarana_pelengkap').value); - let hargaPerMeterSarana = parseInput(document.querySelector('input[name="nilai_sarana_pelengkap_1"]').value); - let totalLuasSarana = document.querySelector('input[name="nilai_sarana_pelengkap_2"]'); + let saranaPelengkap = parseInput(document.getElementById('sarana_pelengkap').value); + let hargaPerMeterSarana = parseInput(document.querySelector('input[name="nilai_sarana_pelengkap_1"]').value); + let totalLuasSarana = document.querySelector('input[name="nilai_sarana_pelengkap_2"]'); - // Bagian Likuidasi - let persentaseLikuidasi = parseInput(document.getElementById('likuidasi').value); - let totalNilaiPasarLikuidasi = document.querySelector('input[name="likuidasi_nilai_1"]'); - let totalLikuidasi = document.querySelector('input[name="likuidasi_nilai_2"]'); + // Bagian Likuidasi + let persentaseLikuidasi = parseInput(document.getElementById('likuidasi').value); + let totalNilaiPasarLikuidasi = document.querySelector('input[name="likuidasi_nilai_1"]'); + let totalLikuidasi = document.querySelector('input[name="likuidasi_nilai_2"]'); - // Bagian Asuransi - let luasBangunanAsuransi = parseInput(document.getElementById('asuransi_luas_bangunan').value); - let hargaPerMeterAsuransi = parseInput(document.querySelector('input[name="asuransi_nilai_1"]').value); - let totalNilaiAsuransi = document.querySelector('input[name="asuransi_nilai_2"]'); + // Bagian Asuransi + let luasBangunanAsuransi = parseInput(document.getElementById('asuransi_luas_bangunan').value); + let hargaPerMeterAsuransi = parseInput(document.querySelector('input[name="asuransi_nilai_1"]').value); + let totalNilaiAsuransi = document.querySelector('input[name="asuransi_nilai_2"]'); - let total = document.querySelector('input[name="total_nilai_pasar_wajar"]'); + let total = document.querySelector('input[name="total_nilai_pasar_wajar"]'); - // Hitung hasil - const hasilTanah = luasTanah * hargaPerMeterTanah; - const hasilBangunan = luasBangunan * hargaPerMeterBangunan; - const hasilSarana = saranaPelengkap * hargaPerMeterSarana; + // Hitung hasil + const hasilTanah = luasTanah * hargaPerMeterTanah; + const hasilBangunan = luasBangunan * hargaPerMeterBangunan; + const hasilSarana = saranaPelengkap * hargaPerMeterSarana; - const totalNilaiPasarWajar = hasilTanah + hasilBangunan + hasilSarana; + const totalNilaiPasarWajar = hasilTanah + hasilBangunan + hasilSarana; - // Perhitungan Likuidasi - const hasilLikuidasi = (persentaseLikuidasi / 100) * totalNilaiPasarWajar; + // Perhitungan Likuidasi + const hasilLikuidasi = (persentaseLikuidasi / 100) * totalNilaiPasarWajar; - // Perhitungan Asuransi - const hasilAsuransi = luasBangunanAsuransi * hargaPerMeterAsuransi; + // Perhitungan Asuransi + const hasilAsuransi = luasBangunanAsuransi * hargaPerMeterAsuransi; - // Tampilkan hasil dalam format currency - totalLuasTanah.value = formatCurrency(hasilTanah.toString()); - totalLuasBangunan.value = formatCurrency(hasilBangunan.toString()); - totalLuasSarana.value = formatCurrency(hasilSarana.toString()); - total.value = formatCurrency(totalNilaiPasarWajar.toString()); + // Tampilkan hasil dalam format currency + totalLuasTanah.value = formatCurrency(hasilTanah.toString()); + totalLuasBangunan.value = formatCurrency(hasilBangunan.toString()); + totalLuasSarana.value = formatCurrency(hasilSarana.toString()); + total.value = formatCurrency(totalNilaiPasarWajar.toString()); - // Tampilkan nilai likuidasi dan asuransi - totalNilaiPasarLikuidasi.value = formatCurrency(totalNilaiPasarWajar.toString()); - totalNilaiAsuransi.value = formatCurrency(hasilAsuransi.toString()); + // Tampilkan nilai likuidasi dan asuransi + totalNilaiPasarLikuidasi.value = formatCurrency(totalNilaiPasarWajar.toString()); + totalNilaiAsuransi.value = formatCurrency(hasilAsuransi.toString()); - // Total likuidasi (total nilai pasar wajar + nilai likuidasi) - // const totalPasarWajarDenganLikuidasi = totalNilaiPasarWajar + hasilLikuidasi; - totalLikuidasi.value = formatCurrency(hasilLikuidasi.toString()); -} + // Total likuidasi (total nilai pasar wajar + nilai likuidasi) + // const totalPasarWajarDenganLikuidasi = totalNilaiPasarWajar + hasilLikuidasi; + totalLikuidasi.value = formatCurrency(hasilLikuidasi.toString()); + } diff --git a/resources/views/penilai/components/paparan.blade.php b/resources/views/penilai/components/paparan.blade.php index 3c6fe90..daff217 100644 --- a/resources/views/penilai/components/paparan.blade.php +++ b/resources/views/penilai/components/paparan.blade.php @@ -8,70 +8,11 @@ @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 -
-
-
-
+ @include('lpj::component.detail-jaminan', [ + 'backLink' => 'penilai.show', + 'id' => $permohonan->id, + 'title' => 'Paparan dokument', + ]) @include('lpj::penilai.components.foto-lampiran') @@ -79,16 +20,18 @@
Kertas Kerja
-
- +
@php $url = asset('storage/' . $penilai->kertas_kerja); + $fileName = basename($penilai->kertas_kerja); @endphp + - - +

{{ $fileName }}

-
@endsection + diff --git a/resources/views/penilai/lampiran.blade.php b/resources/views/penilai/lampiran.blade.php index 22009f1..ed4c7e2 100644 --- a/resources/views/penilai/lampiran.blade.php +++ b/resources/views/penilai/lampiran.blade.php @@ -6,114 +6,7 @@ @section('content')
-
-
-

- Lampiran foto dan dokument -

-
- - Back -
-
-
- @if (isset($permohonan)) -
- @foreach ($permohonan->debiture->documents as $dokumen) -
- - - -
- @endforeach -
- @endif -
-
+ @include('lpj::component.detail-jaminan', ['backLink' => 'penilai.show', 'id' => $permohonan->id, 'title' => 'Lampiran foto dan dokument']) @include('lpj::penilai.components.foto-lampiran')
@endsection diff --git a/resources/views/surveyor/components/bangunan.blade.php b/resources/views/surveyor/components/bangunan.blade.php index 501737a..869be66 100644 --- a/resources/views/surveyor/components/bangunan.blade.php +++ b/resources/views/surveyor/components/bangunan.blade.php @@ -1,4 +1,4 @@ -
+

Analisa Bangunan diff --git a/resources/views/surveyor/components/data-pembanding.blade.php b/resources/views/surveyor/components/data-pembanding.blade.php index f56798f..e192f06 100644 --- a/resources/views/surveyor/components/data-pembanding.blade.php +++ b/resources/views/surveyor/components/data-pembanding.blade.php @@ -157,7 +157,7 @@ value="{{ $inspectionData['hak_properti'] ?? '' }}"> - diff --git a/resources/views/surveyor/components/fakta.blade.php b/resources/views/surveyor/components/fakta.blade.php index 5e4bb68..59270e1 100644 --- a/resources/views/surveyor/components/fakta.blade.php +++ b/resources/views/surveyor/components/fakta.blade.php @@ -1,5 +1,5 @@ {{-- analisa fakta --}} -
+

Analisis Fakta diff --git a/resources/views/surveyor/components/informasi.blade.php b/resources/views/surveyor/components/informasi.blade.php index 141c7e1..99f2960 100644 --- a/resources/views/surveyor/components/informasi.blade.php +++ b/resources/views/surveyor/components/informasi.blade.php @@ -1,5 +1,5 @@ -
+

Informasi Dinas Tata Ruang diff --git a/resources/views/surveyor/components/lingkungan.blade.php b/resources/views/surveyor/components/lingkungan.blade.php index f66e4fe..e528ca3 100644 --- a/resources/views/surveyor/components/lingkungan.blade.php +++ b/resources/views/surveyor/components/lingkungan.blade.php @@ -1,4 +1,4 @@ -
+

Analisa Lingkungan diff --git a/resources/views/surveyor/components/tanah.blade.php b/resources/views/surveyor/components/tanah.blade.php index f089f6c..4e3d596 100644 --- a/resources/views/surveyor/components/tanah.blade.php +++ b/resources/views/surveyor/components/tanah.blade.php @@ -1,6 +1,6 @@ -
+

Analisa Tanah From e5d4874af1b7764d269e9a2203942b4ef1726a81 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 15:43:53 +0700 Subject: [PATCH 04/11] Tambah fitur pembatalan permohonan - Menambahkan model, migration, dan relasi untuk tabel pembatalan permohonan. - Mengubah fungsi delete menjadi pembatalan permohonan dengan konfirmasi pengguna. - Menambahkan route baru untuk form dan proses pembatalan permohonan. - Menyediakan form input alasan dan file pendukung untuk pembatalan permohonan. - Memperbarui tampilan, fungsi controller, dan breadcrumbs terkait pembatalan permohonan. --- app/Http/Controllers/PermohonanController.php | 34 +++++++++ app/Models/Permohonan.php | 4 + app/Models/PermohonanPembatalan.php | 50 +++++++++++++ ...00_create_permohonan_pembatalans_table.php | 35 +++++++++ resources/views/permohonan/index.blade.php | 36 ++++----- .../permohonan/pembatalan-form.blade.php | 73 +++++++++++++++++++ routes/breadcrumbs.php | 14 ++++ routes/web.php | 2 + 8 files changed, 227 insertions(+), 21 deletions(-) create mode 100644 app/Models/PermohonanPembatalan.php create mode 100644 database/migrations/2024_12_22_140000_create_permohonan_pembatalans_table.php create mode 100644 resources/views/permohonan/pembatalan-form.blade.php diff --git a/app/Http/Controllers/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 0d6ebb0..8cf40fb 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -353,4 +353,38 @@ // $pdf = Pdf::loadView('lpj::permohonan.print', compact('permohonan')); // return $pdf->stream(); } + + public function showPembatalan($id) + { + $permohonan = Permohonan::with(['pembatalan','debiture'])->findOrFail($id); + return view('lpj::permohonan.pembatalan-form', compact('permohonan')); + } + + + public function pembatalan(Request $request) + { + // Validate the request + $validatedData = $request->validate([ + 'permohonan_id' => 'required|exists:permohonan,id', + 'alasan_pembatalan' => 'required|string', + 'file_pembatalan' => 'required|file|mimes:pdf,doc,docx|max:2048', + ]); + + // Handle file upload + if ($request->hasFile('file_pembatalan')) { + $file = $request->file('file_pembatalan'); + $filename = time() . '_' . $file->getClientOriginalName(); + $filePath = $file->storeAs('pembatalan', $filename, 'public'); + $validatedData['file_pembatalan'] = $filePath; + } + + // Add created_by + $validatedData['created_by'] = auth()->id(); + + // Create new PermohonanPembatalan + $pembatalan = PermohonanPembatalan::create($validatedData); + + return redirect()->route('permohonan.index')->with('success', 'Pembatalan Permohonan Menunggu Approval'); + } + } diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index f8d57da..cd76646 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -159,4 +159,8 @@ { return $this->hasMany(DokumenJaminan::class); } + + public function pembatalan(){ + return $this->hasMany(PermohonanPembatalan::class); + } } diff --git a/app/Models/PermohonanPembatalan.php b/app/Models/PermohonanPembatalan.php new file mode 100644 index 0000000..1197b2f --- /dev/null +++ b/app/Models/PermohonanPembatalan.php @@ -0,0 +1,50 @@ + 'string', + ]; + + // Relationship with Permohonan + public function permohonan() + { + return $this->belongsTo(Permohonan::class, 'permohonan_id'); + } + + public function creator(){ + return $this->belongsTo(User::class, 'created_by'); + } + } diff --git a/database/migrations/2024_12_22_140000_create_permohonan_pembatalans_table.php b/database/migrations/2024_12_22_140000_create_permohonan_pembatalans_table.php new file mode 100644 index 0000000..0046d05 --- /dev/null +++ b/database/migrations/2024_12_22_140000_create_permohonan_pembatalans_table.php @@ -0,0 +1,35 @@ +id(); + $table->unsignedBigInteger('permohonan_id'); + $table->text('alasan_pembatalan'); + $table->string('file_pembatalan'); + $table->enum('status', ['pending', 'approved', 'rejected'])->default('pending'); + $table->text('keterangan')->nullable(); + $table->timestamps(); + $table->timestamp('authorized_at')->nullable(); + $table->char('authorized_status', 1)->nullable(); + $table->softDeletes(); + $table->unsignedBigInteger('created_by')->nullable(); + $table->unsignedBigInteger('updated_by')->nullable(); + $table->unsignedBigInteger('deleted_by')->nullable(); + $table->unsignedBigInteger('authorized_by')->nullable(); + + $table->foreign('permohonan_id')->references('id')->on('permohonan')->onDelete('cascade'); + }); + } + + public function down() + { + Schema::dropIfExists('permohonan_pembatalan'); + } +} diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index 095752d..eccb166 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -8,7 +8,7 @@
+ data-datatable-state-save="false" id="permohonan-table" data-api-url="{{ route('permohonan.datatables') }}">

Daftar Permohonan @@ -29,7 +29,7 @@
+ data-datatable-table="true"> + + @endif @@ -125,6 +132,14 @@ name: { title: 'Jenis Aset', }, + ...(header == 'spek-bangunan' && { + kategories:{ + title: 'Kategori', + render: (item, data)=>{ + return data.bangunan_kategori.name; + } + } + }), actions: { title: 'Status', render: (item, data) => { diff --git a/resources/views/surveyor/js/utils.blade.php b/resources/views/surveyor/js/utils.blade.php index 3bffc19..da8b7bd 100644 --- a/resources/views/surveyor/js/utils.blade.php +++ b/resources/views/surveyor/js/utils.blade.php @@ -33,25 +33,35 @@ } - function formatCurrency(value) { - if (!value) return ''; + function formatCurrency(value, isDiskon = false) { + // Konversi value ke string, pastikan bukan null/undefined + let stringValue = value === null || value === undefined ? '' : String(value); - // Jika input adalah elemen, ambil nilainya - const numericValue = typeof value === 'string' ? value : value.value; + // Ganti koma dengan titik untuk memastikan parsing numerik + stringValue = stringValue.replace(/,/g, '.'); - // Hapus semua karakter non-digit - const cleanValue = numericValue.toString().replace(/[^\d]/g, ''); + // Hapus karakter non-numerik kecuali titik + let numericValue = stringValue.replace(/[^\d.]/g, ''); - // Format ke currency - const formattedValue = new Intl.NumberFormat('id-ID').format(cleanValue); + // Parse nilai numerik + const parsedValue = parseFloat(numericValue); - // Jika input adalah elemen, update nilainya - if (typeof value !== 'string') { - value.value = formattedValue; - } - - return formattedValue; + if (isDiskon) { + // Format untuk diskon + return isNaN(parsedValue) ? '' : parsedValue.toLocaleString('id-ID', { + minimumFractionDigits: 0, + maximumFractionDigits: 2 + }); + } else { + // Format untuk mata uang tanpa desimal + return isNaN(parsedValue) ? '' : parsedValue.toLocaleString('id-ID', { + minimumFractionDigits: 0, + maximumFractionDigits: 0 + }); } +} + + function previewImage(input, previewId) { if (input.files && input.files[0]) { diff --git a/routes/web.php b/routes/web.php index dd9eceb..dcae5d1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -539,6 +539,7 @@ Route::middleware(['auth'])->group(function () { Route::get('lampiran/{id}', [PenilaiController::class, 'lampiran'])->name('lampiran'); Route::get('export/kertas-kerja', [PenilaiController::class, 'export_kertas_kerja'])->name('export.kertas-kerja'); + Route::get('print-out', [PenilaiController::class, 'print_out'])->name('print-out'); Route::post('import/kertas-kerja', [PenilaiController::class, 'import_kertas_kerja'])->name('import.kertas-kerja');
@@ -91,15 +91,15 @@ @push('scripts') + @endpush diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index eccb166..deaf27a 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -31,44 +31,44 @@ - - - - - - - - - - - - + + + + + + + + + + + +
- - - Nomor Registrasi - - - Tanggal Permohonan - - - User Pemohon - - - Cabang Pemohon - - - Debitur - - - Tujuan Penilaian - - - Status - - - Keterangan - - Action
+ + + Nomor Registrasi + + + Tanggal Permohonan + + + User Pemohon + + + Cabang Pemohon + + + Debitur + + + Tujuan Penilaian + + + Status + + + Keterangan + + Action
@@ -186,7 +186,10 @@ }, }, status: { - title: 'Status' + title: 'Status', + render: (item, data) => { + return `${data.status}`; + } }, keterangan: { title: 'Keterangan' @@ -194,7 +197,7 @@ actions: { title: 'Actions', render: (item, data) => { - let actionHtml = `
`; + let actionHtml = `
`; if (data && data.penilaian && data.penilaian.waktu_penilaian !== null && data.status !== 'done' && data.penilaian.authorized_status == null) { @@ -233,7 +236,7 @@ let dataTable = new KTDataTable(element, dataTableOptions); // Custom search functionality - searchInput.addEventListener('input', function() { + searchInput.addEventListener('input', function () { const searchValue = this.value.trim(); dataTable.search(searchValue, true); @@ -267,19 +270,19 @@ cache: false, data: input_data, dataType: "json", - success: function(response) { + success: function (response) { console.log(response); if ('success' == response.status) { swal.fire('Sukses Menyetujui!', response.message, 'success').then( - () => { - location.reload(true); - }); + () => { + location.reload(true); + }); } else { Swal.fire('Error!', response.message, 'error'); } }, - error: function(response, textStatus, errorThrown) { + error: function (response, textStatus, errorThrown) { // var errors = response.responseJSON.errors; // console.log(errors); console.log(response); diff --git a/routes/web.php b/routes/web.php index 51b8f81..83fd7df 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,6 +18,7 @@ use Modules\Lpj\Http\Controllers\KJPPController; use Modules\Lpj\Http\Controllers\LaporanController; use Modules\Lpj\Http\Controllers\NilaiPlafondController; use Modules\Lpj\Http\Controllers\NocController; + use Modules\Lpj\Http\Controllers\PembatalanController; use Modules\Lpj\Http\Controllers\PemilikJaminanController; use Modules\Lpj\Http\Controllers\PenilaianController; use Modules\Lpj\Http\Controllers\PenilaiController; @@ -372,6 +373,11 @@ Route::middleware(['auth'])->group(function () { Route::resource('permohonan', PermohonanController::class); + Route::name('pembatalan.')->prefix('pembatalan')->group(function () { + Route::get('datatables', [PembatalanController::class, 'dataForDatatables'])->name('datatables'); + }); + Route::resource('pembatalan', PembatalanController::class); + Route::get('authorization', [PermohonanController::class, 'authorization'])->name('authorization.index'); Route::get('authorization/datatables', [PermohonanController::class, 'dataForAuthorization'])->name( 'authorization.datatables', From 87b33375021a6eefbb2a43c7d2ef7a54ead2b60e Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 15:44:43 +0700 Subject: [PATCH 07/11] Sembunyikan elemen status bayar di formulir persetujuan penawaran - Menambahkan kelas "hidden" pada div elemen status bayar. - Elemen tidak lagi terlihat di tampilan pengguna. --- resources/views/persetujuan_penawaran/form.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/persetujuan_penawaran/form.blade.php b/resources/views/persetujuan_penawaran/form.blade.php index c27c4e8..4c17b59 100644 --- a/resources/views/persetujuan_penawaran/form.blade.php +++ b/resources/views/persetujuan_penawaran/form.blade.php @@ -25,7 +25,7 @@ -
+
@endsection @push('styles') @@ -219,4 +219,4 @@ display: none } -@endpush \ No newline at end of file +@endpush From 069cf18a8bfa986ac08a2897c6d8eb78f254f4a7 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 15:59:09 +0700 Subject: [PATCH 09/11] Transformasi nama debitur menjadi huruf kapital - Mengubah rendering nama debitur agar ditampilkan dalam huruf kapital. - Memastikan konsistensi format tampilan pada kolom "Debitur". --- resources/views/permohonan/index.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index deaf27a..d73af03 100644 --- a/resources/views/permohonan/index.blade.php +++ b/resources/views/permohonan/index.blade.php @@ -157,7 +157,7 @@ title: 'Debitur', render: (item, data) => { if (data.debiture) { - return `${data.debiture.name}`; + return `${data.debiture.name.toUpperCase()}`; } return "-"; }, From ab21e31633501771ee8e70e559b2ace023b141f9 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 23 Dec 2024 16:16:27 +0700 Subject: [PATCH 10/11] Update tampilan status dan aksi pada halaman pembatalan - Menambahkan kelas `flex justify-center` pada render status untuk memastikan tampilan sejajar di tengah. - Menambahkan atribut `title="Detail Pembatalan"` pada tombol aksi untuk memberikan informasi tambahan. --- resources/views/pembatalan/index.blade.php | 26 +++++++++++----------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/views/pembatalan/index.blade.php b/resources/views/pembatalan/index.blade.php index 5078d9f..6e27000 100644 --- a/resources/views/pembatalan/index.blade.php +++ b/resources/views/pembatalan/index.blade.php @@ -131,18 +131,6 @@ alasan_pembatalan: { title: 'Alasan Pembatalan' }, - status: { - title: 'Status', - render: (item, data) => { - if (data.status === 'pending') { - return `Pending`; - } else if (data.status === 'approved') { - return `Diterima`; - } else if (data.status === 'rejected') { - return `Ditolak`; - } - } - }, file_pembatalan: { title: 'Dokumen Pendukung', render: (item, data) => { @@ -154,13 +142,25 @@ } } }, + status: { + title: 'Status', + render: (item, data) => { + if (data.status === 'pending') { + return `Pending`; + } else if (data.status === 'approved') { + return `Diterima`; + } else if (data.status === 'rejected') { + return `Ditolak`; + } + } + }, actions: { title: 'Action', render: (item, data) => { @if(auth()->user()->roles()->first()->name === "administrator" || auth()->user()->roles()->first()->name === "pemohon-eo") if (data.status === 'pending') { return ``; From 886e75da821e59ae165e330cde894f523933a446 Mon Sep 17 00:00:00 2001 From: majid Date: Mon, 23 Dec 2024 16:27:49 +0700 Subject: [PATCH 11/11] update print out --- app/Http/Controllers/PenilaiController.php | 166 +++-- app/Http/Controllers/SurveyorController.php | 15 +- app/Http/Requests/FormSurveyorRequest.php | 3 +- app/Models/SpekBangunan.php | 2 +- .../penilai/components/print-out.blade.php | 679 ++++++++++++++++++ resources/views/penilai/show.blade.php | 2 +- .../surveyor/components/bangunan.blade.php | 55 +- .../components/data-pembanding.blade.php | 13 +- .../views/surveyor/components/foto.blade.php | 16 +- .../surveyor/components/inspeksi.blade.php | 3 + resources/views/surveyor/data/form.blade.php | 19 +- resources/views/surveyor/data/index.blade.php | 15 + resources/views/surveyor/js/utils.blade.php | 38 +- routes/web.php | 1 + 14 files changed, 896 insertions(+), 131 deletions(-) create mode 100644 resources/views/penilai/components/print-out.blade.php diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index d368d80..ece6ab7 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -3,6 +3,7 @@ namespace Modules\Lpj\Http\Controllers; use Illuminate\Http\Request; +use Barryvdh\DomPDF\Facade\Pdf; // https://github.com/barryvdh/laravel-dompdf use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Inspeksi; use Modules\Lpj\Models\Penilai; @@ -12,7 +13,6 @@ use Maatwebsite\Excel\Facades\Excel; use Modules\Lpj\Exports\KertasKerjaExport; use Modules\Lpj\Http\Controllers\SurveyorController; use Modules\Location\Models\Province; - class PenilaiController extends Controller { public $user; @@ -195,8 +195,7 @@ class PenilaiController extends Controller $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); $penilai = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); - $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where - ('dokument_id', $documentId)->first(); + $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); $formFoto = null; if ($inspeksi) { $formFoto = json_decode($inspeksi->foto_form, true); @@ -299,74 +298,74 @@ class PenilaiController extends Controller } public function export_kertas_kerja(Request $request) -{ - $permohonanId = $request->query('permohonanId'); - $documentId = $request->query('documentId'); + { + $permohonanId = $request->query('permohonanId'); + $documentId = $request->query('documentId'); - // Fetch the data from the database - $data = Inspeksi::where('permohonan_id', $permohonanId) - ->where('dokument_id', $documentId) - ->first(); + // Fetch the data from the database + $data = Inspeksi::where('permohonan_id', $permohonanId) + ->where('dokument_id', $documentId) + ->first(); - // Check if data exists - if (!$data) { - return response()->json(['message' => 'Data not found'], 404); - } + // Check if data exists + if (!$data) { + return response()->json(['message' => 'Data not found'], 404); + } - // Decode the JSON fields - $dataForm = json_decode($data->data_form, true); - $fotoForm = json_decode($data->foto_form, true); - $denahForm = json_decode($data->denah_form, true); - $dataPembanding = json_decode($data->data_pembanding, true); + // Decode the JSON fields + $dataForm = json_decode($data->data_form, true); + $fotoForm = json_decode($data->foto_form, true); + $denahForm = json_decode($data->denah_form, true); + $dataPembanding = json_decode($data->data_pembanding, true); - // Prepare the data for export - $exportData = [ - 'objek' => [ - 'jenis_aset' => $dataForm['asset']['jenis_asset']['sesuai'] ?? '', - 'luas_tanah' => $dataForm['tanah']['luas_tanah']['tidak sesuai'] ?? '', - 'harga' => $dataForm['asset']['harga'] ?? '', - 'tanggal_penawaran' => $dataForm['tanggal_penawaran'] ?? '', - 'diskon' => $dataForm['diskon'] ?? '', - 'no_telepon' => $dataForm['no_telepon'] ?? '', - 'nama_nara_sumber' => $dataForm['nama_nara_sumber'] ?? '', - 'status_nara_sumber' => $dataForm['status_nara_sumber'] ?? '', - 'alamat' => $dataForm['alamat'] ?? '', - // Add other fields as necessary - ], - 'pembanding1' => [], - 'pembanding2' => [], - 'pembanding3' => [], - 'foto_peta' => [ - 'foto_tempat' => $dataForm['foto_tempat'] ?? [], - 'foto_gistaru' => $dataForm['foto_gistaru'] ?? [], - 'foto_bhumi' => $dataForm['foto_bhumi'] ?? [], - 'foto_argis_region' => $dataForm['foto_argis_region'] ?? [], - ], - 'foto_objek' => $fotoForm['object_jaminan'] ?? [], - 'foto_objek1' => [], // Populate with relevant data - 'foto_objek2' => [], // Populate with relevant data - 'tanggal_penilaian' => $data->tanggal_penilaian ?? '', - 'nama_pemilik' => $data->nama_pemilik ?? '', - 'lokasi_lengkap' => $data->lokasi_lengkap ?? '', - ]; + // Prepare the data for export + $exportData = [ + 'objek' => [ + 'jenis_aset' => $dataForm['asset']['jenis_asset']['sesuai'] ?? '', + 'luas_tanah' => $dataForm['tanah']['luas_tanah']['tidak sesuai'] ?? '', + 'harga' => $dataForm['asset']['harga'] ?? '', + 'tanggal_penawaran' => $dataForm['tanggal_penawaran'] ?? '', + 'diskon' => $dataForm['diskon'] ?? '', + 'no_telepon' => $dataForm['no_telepon'] ?? '', + 'nama_nara_sumber' => $dataForm['nama_nara_sumber'] ?? '', + 'status_nara_sumber' => $dataForm['status_nara_sumber'] ?? '', + 'alamat' => $dataForm['alamat'] ?? '', + // Add other fields as necessary + ], + 'pembanding1' => [], + 'pembanding2' => [], + 'pembanding3' => [], + 'foto_peta' => [ + 'foto_tempat' => $dataForm['foto_tempat'] ?? [], + 'foto_gistaru' => $dataForm['foto_gistaru'] ?? [], + 'foto_bhumi' => $dataForm['foto_bhumi'] ?? [], + 'foto_argis_region' => $dataForm['foto_argis_region'] ?? [], + ], + 'foto_objek' => $fotoForm['object_jaminan'] ?? [], + 'foto_objek1' => [], // Populate with relevant data + 'foto_objek2' => [], // Populate with relevant data + 'tanggal_penilaian' => $data->tanggal_penilaian ?? '', + 'nama_pemilik' => $data->nama_pemilik ?? '', + 'lokasi_lengkap' => $data->lokasi_lengkap ?? '', + ]; - // Extract data pembanding - if (isset($dataPembanding['data_pembanding'])) { - foreach ($dataPembanding['data_pembanding'] as $index => $pembanding) { - if ($index == 0) { - $exportData['pembanding1'] = $pembanding; - } elseif ($index == 1) { - $exportData['pembanding2'] = $pembanding; - } elseif ($index == 2) { - $exportData['pembanding3'] = $pembanding; + // Extract data pembanding + if (isset($dataPembanding['data_pembanding'])) { + foreach ($dataPembanding['data_pembanding'] as $index => $pembanding) { + if ($index == 0) { + $exportData['pembanding1'] = $pembanding; + } elseif ($index == 1) { + $exportData['pembanding2'] = $pembanding; + } elseif ($index == 2) { + $exportData['pembanding3'] = $pembanding; + } } } - } - // Now create the export - // return response()->json([ 'data' => $fotoForm]); - return Excel::download(new KertasKerjaExport($exportData), 'kertas-kerja.xlsx'); -} + // Now create the export + // return response()->json([ 'data' => $fotoForm]); + return Excel::download(new KertasKerjaExport($exportData), 'kertas-kerja.xlsx'); + } @@ -577,7 +576,48 @@ class PenilaiController extends Controller } + public function print_out(Request $request) + { + $documentId = $request->query('documentId'); + $jaminanId = $request->query('jaminanId'); + $permohonanId = $request->query('permohonanId'); + + $permohonan = $this->surveyorController->getPermohonanJaminanId($permohonanId, $documentId, $jaminanId); + $basicData = $this->surveyorController->getCommonData(); + + $inspeksi = Inspeksi::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); + $lpj = Penilai::where('permohonan_id', $permohonanId)->where('dokument_id', $documentId)->first(); + + $forminspeksi = null; + $lpjData = null; + $formFoto = null; + + if ($inspeksi) { + $forminspeksi = json_decode($inspeksi->data_form, true); + + $formFoto = json_decode($inspeksi->foto_form, true); + // $denahForm = json_decode($data->denah_form, true); + } + + if ($lpj) { + $lpjData = json_decode($lpj->lpj, true); + } + $pdf =Pdf::loadView('lpj::penilai.components.print-out', compact( + 'permohonan', + 'forminspeksi', + 'lpjData', + 'formFoto', + 'basicData', + 'inspeksi', + 'lpj' + )); + + $pdf->setPaper('A4', 'portrait'); + + return $pdf->download('laporan.pdf'); + + } } diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 115c41f..cdf6f97 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -68,6 +68,7 @@ use Modules\Lpj\Models\HubunganPenghuniJaminan; use Modules\Lpj\Models\AnalisaUnit; use Modules\Lpj\Models\GolonganMasySekitar; use Modules\Lpj\Models\TingkatKeramaian; +use Modules\Lpj\Models\TujuanPenilaian; use Modules\Lpj\Models\LaluLintasLokasi; use Modules\Lpj\Models\SpekBagunanAnalisaDetail; use Modules\Lpj\Http\Requests\SurveyorRequest; @@ -787,9 +788,13 @@ class SurveyorController extends Controller } // Fields lainnya dalam asset else { + if (!isset($dataForm['asset'][$field])) { + $dataForm['asset'][$field] = []; + } $dataForm['asset'][$field] = $newValue; } + $needsSave = true; } } @@ -1526,7 +1531,13 @@ class SurveyorController extends Controller $filteredRecords = $query->count(); // Get the data for the current page - $data = $query->get(); + + if ($type == 'Spek Bangunan') { + $data = $query->with(['bangunanKategori'])->get(); + }else{ + $data = $query->get(); + } + // Calculate the page count $pageCount = ceil($totalRecords / $request->get('size')); @@ -1534,6 +1545,7 @@ class SurveyorController extends Controller // Calculate the current page number $currentPage = 0 + 1; + // Return the response data as a JSON object return response()->json([ 'draw' => $request->get('draw'), @@ -1663,6 +1675,7 @@ class SurveyorController extends Controller 'hubPenghuni' => HubunganPenghuniJaminan::all(), 'perkerasanJalan' => PerkerasanJalan::all(), 'terletakDiArea' => TerletakArea::all(), + 'tujuanPenilaian' => TujuanPenilaian::all() ]; } diff --git a/app/Http/Requests/FormSurveyorRequest.php b/app/Http/Requests/FormSurveyorRequest.php index fe19acf..701fb3a 100644 --- a/app/Http/Requests/FormSurveyorRequest.php +++ b/app/Http/Requests/FormSurveyorRequest.php @@ -110,8 +110,7 @@ class FormSurveyorRequest extends FormRequest 'nama_bangunan.*' => 'required|string|max:255', 'spek_kategori_bangunan.*' => 'nullable|string', - 'spek_bangunan.*.*' => 'array', - 'spek_bangunan.*.*.*' => 'string', + 'spek_bangunan.*.*.lainnya' => 'nullable|string', 'sarana_pelengkap' => 'required', 'sarana_pelengkap_input' => 'nullable|array', diff --git a/app/Models/SpekBangunan.php b/app/Models/SpekBangunan.php index c471440..39ca9c1 100644 --- a/app/Models/SpekBangunan.php +++ b/app/Models/SpekBangunan.php @@ -20,7 +20,7 @@ class SpekBangunan extends Model public function bangunanKategori(){ - return $this->belongsTo(SpekKategoriBangunan::class, 'spek_kategori_bangunan_id'); + return $this->belongsTo(SpekKategoritBangunan::class, 'spek_kategori_bangunan_id'); } protected static function newFactory(): SpekBangunanFactory diff --git a/resources/views/penilai/components/print-out.blade.php b/resources/views/penilai/components/print-out.blade.php new file mode 100644 index 0000000..a9783c3 --- /dev/null +++ b/resources/views/penilai/components/print-out.blade.php @@ -0,0 +1,679 @@ + + + + + + + + Laporan Penilai jaminan + + + + +
+
+
LAPORAN PENILAIAN ATAS TANAH DAN/ATAU BANGUNAN
+

NO:

+
+ +
+
+
+ A +
+
+ TUJUAN PENILAIAN +
+
+
    +
  • +
    +
    Permintaan (A/O)
    +
    ACHMAD DENI DARURI +
    +
    Jenis Fasilitas
    +
    Bambu Apus
    +
    +
  • +
  • +
    + +
    Tanggal
    +
    Bambu Apus
    +
    Kunjungan Tanggal
    +
    Bambu Apus
    + +
    +
  • +
+ + + @if (isset($basicData['tujuanPenilaian'])) +
    + @foreach ($basicData['tujuanPenilaian'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif + +
+ + +
+
+
+ B +
+
+ IDENTITAS DEBITUR +
+
+
+
Nama Debitur
+
ACHMAD DENI DARURI +
+
Alamat dan Telepon
+
Bambu Apus
+
Saat menilai, penilai didampingi oleh
+
+
+
Debitur / Wakil Debitur
+
ACHMAD DENI DARURI +
+
Pihak Bank selain PJ
+
Bambu Apus
+
+
+ +
+
+ +
+
+
+ C +
+
+ JENIS JAMINAN +
+
+ @if (isset($basicData['jenisJaminan'])) +
    + @foreach ($basicData['jenisJaminan'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ + +
+
+
+ D +
+
+ LOKASI JAMINAN +
+
+
+
Terletak di
+
Perumahan Villa Pamulang Mas, Jalan Palem Mas III Blok C3/5
+
Kelurahan
+
Bambu Apus
+
Kecamatan
+
Pamulang
+
Kotamadya
+
Tangerang Selatan
+
Propinsi
+
Banten
+
+
+ +
+
+
+ E +
+
+ STATUS KEPEMILIKAN, HUBUNGAN DAN PENGHUNI +
+
+
+
SHM No/Kelurahan/Desa
+
Perumahan Villa Pamulang Mas, Jalan Palem Mas III Blok C3/5
+
Tanggal
+
Bambu Apus
+
Atas Nama
+
Pamulang
+
Gambar Situasi No/Tanggal
+
Tangerang Selatan
+
Luas Tanah /m2
+
Banten
+
IMB No/Tanggal
+
Banten
+
Hubungan Pemilik Jaminan dengan + Debitur
+
+ @if (isset($basicData['hubCadeb'])) +
    + @foreach ($basicData['hubCadeb'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+
Hubungan Penghuni Jaminan dengan + Debitur
+
+ @if (isset($basicData['hubPenghuni'])) +
    + @foreach ($basicData['hubPenghuni'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+
+
+ +
+
+
+ F +
+
+ ANALISA TANAH DAN BANGUNAN +
+
+
+
Luas Tanah
+
13
+
Bentuk Tanah
+
+ @if (isset($basicData['bentukTanah'])) +
    + @foreach ($basicData['bentukTanah'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+
Kontur Tanah
+
+ @if (isset($basicData['konturTanah'])) +
    + @foreach ($basicData['konturTanah'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Permukaan dengan Jalan
+
+ @if (isset($basicData['konturTanah'])) +
    + @foreach ($basicData['konturTanah'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Peruntukan Tanah
+
+ @if (isset($basicData['konturTanah'])) +
    + @foreach ($basicData['konturTanah'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Fisik Tanah
+
+ @if (isset($basicData['konturTanah'])) +
    + @foreach ($basicData['konturTanah'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Jenis Bangunan
+
+ @if (isset($basicData['jenisBangunan'])) +
    + @foreach ($basicData['jenisBangunan'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Kondisi Bangunan
+
+ @if (isset($basicData['kondisiBangunan'])) +
    + @foreach ($basicData['kondisiBangunan'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Sifat Bangunan
+
+ @if (isset($basicData['sifatBangunan'])) +
    + @foreach ($basicData['sifatBangunan'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ + @foreach ($basicData['spekKategoriBangunan'] as $kategori) +
{{ $kategori->name }}
+
+ @if (isset($basicData['sifatBangunan'])) +
    + @foreach ($basicData['sifatBangunan'] as $sifat) +
  • {{ $sifat->name }}
  • + @endforeach +
+ @endif +
+ @endforeach + + +
+
+ + +
+
+
+ G +
+
+ SARANA PELENGKAP DAN LINGKUNGAN + +
+
+
+
Luas Tanah
+
13
+
Lapisan perkerasan jalan dari
+
+ @if (isset($basicData['perkerasanJalan'])) +
    + @foreach ($basicData['perkerasanJalan'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+
Lalulintas didepan lokasi
+
+ @if (isset($basicData['laluLintasLokasi'])) +
    + @foreach ($basicData['laluLintasLokasi'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Golongan Masyarakat sekitar
+
+ @if (isset($basicData['golMasySekitar'])) +
    + @foreach ($basicData['golMasySekitar'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Terletak didaerah
+
+ @if (isset($basicData['terletakDiArea'])) +
    + @foreach ($basicData['terletakDiArea'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Disekitar lokasi
+
+ @if (isset($basicData['konturTanah'])) +
    + @foreach ($basicData['konturTanah'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Dengan kondisi
+
+ @if (isset($basicData['jenisBangunan'])) +
    + @foreach ($basicData['jenisBangunan'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Sifat Bangunan sekitar
+
+ @if (isset($basicData['sifatBangunan'])) +
    + @foreach ($basicData['sifatBangunan'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Merupakan daerah
+
+ @if (isset($basicData['merupakanDaerah'])) +
    + @foreach ($basicData['merupakanDaerah'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ +
Fasilitas umum dekat lokasi
+
+ @if (isset($basicData['fasilitasObjek'])) +
    + @foreach ($basicData['fasilitasObjek'] as $item) +
  • {{ $item->name }}
  • + @endforeach +
+ @endif +
+ + +
+
+ + +
+
+
+ H +
+
+ ASURANSI + +
+
+
    +
  • Tidak Ada
  • +
  • Ada
  • +
+
+ +
+
+
+ I +
+
+ KESIMPULAN DAN SARAN PENILAI, INFORMASI HARGA, + TOTAL NILAI JAMINAN DAN CATATAN PERLU DIPERHATIKAN +
+
+
    +
  • Permohonan Baru
  • +
  • Penilaian Ulang Jaminan / Review Tahunan
  • +
  • Penambahan Fasilitas / Jaminan
  • +
  • Penukaran Jaminan
  • +
  • KPR eks BPPN
  • +
  • Lelang
  • +
+
+ +
+
+
+ PETA LOKASI +
+
+ @php + $fotoTypes = ['foto_gistaru', 'foto_bhumi', 'foto_argis_region', 'foto_tempat']; + @endphp +
+ @if (isset($forminspeksi)) + @forelse ($fotoTypes as $type) +
+ @php + $imagePath = $forminspeksi[$type]; + @endphp + + {{ $type }} +

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

+ +
+ @empty +

Tidak ada tipe foto yang tersedia

+ @endforelse + @endif +
+
+ +
+
+
+ FOTO JAMINAN +
+
+
+ @if (isset($formFoto)) + @foreach ($formFoto['rute_menuju_lokasi'] as $item) +
+

+ {{ $item['name_rute'] . ' ' . $loop->index + 1 }} +

+ + {{ $item['foto_rute'] }} +
+ @endforeach + @endif + + @if (isset($formFoto['object_jaminan'])) + @foreach ($formFoto['object_jaminan'] as $item) +
+

+ {{ $item['name_objek'] }} +

+ + {{ $item['foto_objek'] }} +
+ @endforeach + @endif + + @if (isset($formFoto['foto_basement'])) +
+

+ Basement +

+ + {{ $formFoto['foto_basement'] }} +
+ @endif + + @if (isset($formFoto['foto_gerbang'])) +
+

+ Gerbang +

+ + {{ $formFoto['foto_gerbang'] }} +
+ @endif + @if (isset($formFoto['pendamping'])) +
+

+ Pendamping +

+ + {{ $formFoto['pendamping'] }} +
+ @endif +
+
+
+ + + + diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index 37a4a2c..0bd9160 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -258,7 +258,7 @@
diff --git a/resources/views/surveyor/components/bangunan.blade.php b/resources/views/surveyor/components/bangunan.blade.php index 869be66..7e7ad84 100644 --- a/resources/views/surveyor/components/bangunan.blade.php +++ b/resources/views/surveyor/components/bangunan.blade.php @@ -46,7 +46,7 @@ @endphp
+ style="{{ old('luas_tanah_bagunan_tidak_sesuai', $selectedData) ? '' : 'display: none' }}"> name, old('jenis_bangunan'))) || - (isset($forminspeksi['bangunan']['jenis_bangunan']) && + (isset($forminspeksi['bangunan']['jenis_bangunan']) && (is_array($forminspeksi['bangunan']['jenis_bangunan']) && - in_array($item->name, $forminspeksi['bangunan']['jenis_bangunan']))) - ? 'checked' : '' }} + in_array($item->name, $forminspeksi['bangunan']['jenis_bangunan']))) + ? 'checked' + : '' }} onclick="toggleCheckboxVisibility('jenis_bangunan', 'jenis_bangunan_lainnya', ['lainnya'])" /> {{ $item->name }} @@ -169,17 +170,14 @@ @if (@isset($basicData['spekKategoriBangunan'])) @foreach ($basicData['spekKategoriBangunan'] as $item)
- +
-
+
@foreach ($basicData['spekBangunan'] as $spek) @if ($spek->spek_kategori_bangunan_id == $item->id) -
- +
@endforeach @endif
- +
@endforeach @else @@ -213,13 +214,10 @@ @if (@isset($basicData['spekKategoriBangunan'])) @foreach ($basicData['spekKategoriBangunan'] as $item)
- - + +
-
+
@foreach ($basicData['spekBangunan'] as $spek) @if ($spek->spek_kategori_bangunan_id == $item->id) @endif @endforeach +
- +
@endforeach @endif
- +
@endif @@ -252,10 +253,10 @@ - +
@@ -326,7 +327,7 @@ input.name = `spek_bangunan[${index}][${matches[1]}][]`; } } else { - // Handle other array inputs + // Handle lainnya array inputs input.name = input.name.replace(/\[\d*\]/, `[${index}]`); } } diff --git a/resources/views/surveyor/components/data-pembanding.blade.php b/resources/views/surveyor/components/data-pembanding.blade.php index e192f06..8cda635 100644 --- a/resources/views/surveyor/components/data-pembanding.blade.php +++ b/resources/views/surveyor/components/data-pembanding.blade.php @@ -154,7 +154,7 @@
Hak atas properti yang dialihkan + value="{{ $inspectionData['asset']['hak_properti'] ?? '' }}"> Penawaran/ Transaksi + value="{{ $inspectionData['asset']['penawaran'] ?? '' }}"> Telepon Contact Person + value="{{ $inspectionData['asset']['telepon'] ?? '' }}"> { diff --git a/resources/views/surveyor/components/foto.blade.php b/resources/views/surveyor/components/foto.blade.php index 4a15146..ce56427 100644 --- a/resources/views/surveyor/components/foto.blade.php +++ b/resources/views/surveyor/components/foto.blade.php @@ -386,14 +386,15 @@
- + alt="Foto Lantai" class="mt-2 h-auto" + style="{{ old('foto_lantai_unit', $item['foto_lantai_unit']) ? 'display: block;' : 'display: none;' }} width: 30rem;"> +
- + Foto Lantai +
+ const datas = @json($forminspeksi); + console.log(datas); + function updateAlamatFields(status) { // Ambil elemen formulir const addressForm = document.getElementById('alamat_form'); diff --git a/resources/views/surveyor/data/form.blade.php b/resources/views/surveyor/data/form.blade.php index 46050df..ceddcba 100644 --- a/resources/views/surveyor/data/form.blade.php +++ b/resources/views/surveyor/data/form.blade.php @@ -62,19 +62,14 @@ class="input tomselect w-full @error('spek_kategori_bangunan_id') border-danger bg-danger-light @enderror" name="spek_kategori_bangunan_id"> - @if (isset($spekKategoriBagunan)) + @if (!empty($spekKategoriBagunan)) @foreach ($spekKategoriBagunan as $item) - @if (isset($model->spek_kategori_bangunan_id)) - - @else - - @endif + @endforeach @endif diff --git a/resources/views/surveyor/data/index.blade.php b/resources/views/surveyor/data/index.blade.php index ecae761..9623905 100644 --- a/resources/views/surveyor/data/index.blade.php +++ b/resources/views/surveyor/data/index.blade.php @@ -45,6 +45,13 @@ {{ isset($header[0]) ? $header[0] : '' }} + @if ($header[1] == 'spek-bangunan') +
+ Kategori + + Action