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/PembatalanController.php b/app/Http/Controllers/PembatalanController.php new file mode 100644 index 0000000..af65cde --- /dev/null +++ b/app/Http/Controllers/PembatalanController.php @@ -0,0 +1,147 @@ +historyService = $historyService; + } + + public function index() + { + return view('lpj::pembatalan.index'); + } + + public function edit($id) + { + $pembatalan = PermohonanPembatalan::with(['permohonan.debiture','permohonan.branch'])->find($id); + + return view( + 'lpj::pembatalan.form', + compact( + 'pembatalan' + ), + ); + } + + public function update(Request $request, $id) + { + $pembatalan = PermohonanPembatalan::findOrFail($id); + $permohonan = Permohonan::find($pembatalan->permohonan_id); + $beforeRequest = $permohonan->toArray(); + + try { + // Update Permohonan Pembatalan + if($request->status=='approved'){ + $pembatalan->status = 'approved'; + $pembatalan->save(); + + $permohonan->status = 'batal'; + $permohonan->save(); + } else{ + $pembatalan->status = 'rejected'; + $pembatalan->save(); + } + + return redirect() + ->route('pembatalan.index')->with('success', 'Permohonan Pembatalan updated successfully'); + } catch (Exception $e) { + return redirect() + ->route('pembatalan.edit', $id)->with('error', 'Failed to update permohonan Pembatalan'); + } + } + + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = PermohonanPembatalan::query(); + $query = $query->orderBy('created_at', 'desc'); + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->orWhereRelation('permohonan', 'nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('permohonan.debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('alasan_pembatalan', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + $size = $request->get('size', 10); + if ($size == 0) { + $size = 10; + } + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['permohonan.debiture','permohonan.branch','creator'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $size); + + // Calculate the current page number + $currentPage = max(1, $request->get('page', 1)); + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); + } + } diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 38ccedc..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; @@ -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) @@ -198,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); @@ -303,19 +299,76 @@ class PenilaiController extends Controller public function export_kertas_kerja(Request $request) { - $permohonanId = $request->query('permohonanId'); $documentId = $request->query('documentId'); - $inspeksiId = $request->query('inspeksiId'); - $jaminanId = $request->query('jaminanId'); - $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(); - 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) { @@ -523,4 +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/PermohonanController.php b/app/Http/Controllers/PermohonanController.php index 0d6ebb0..8774786 100644 --- a/app/Http/Controllers/PermohonanController.php +++ b/app/Http/Controllers/PermohonanController.php @@ -11,6 +11,7 @@ use Modules\Location\Models\District; use Modules\Location\Models\Province; use Modules\Location\Models\Village; + use Modules\Lpj\Models\PermohonanPembatalan; use Modules\Lpj\Exports\PermohonanExport; use Modules\Lpj\Http\Requests\PermohonanRequest; use Modules\Lpj\Models\Branch; @@ -25,7 +26,7 @@ class PermohonanController extends Controller { - public $user; + public $user; protected $historyService; public function __construct(PermohonanHistoryService $historyService) @@ -46,7 +47,7 @@ // Process file upload $filePath = null; if ($request->hasFile('attachment')) { - $file = $request->file('attachment'); + $file = $request->file('attachment'); $fileName = time() . '_' . $file->getClientOriginalName(); $filePath = $file->storeAs('permohonan_attachments', $fileName, 'public'); } @@ -65,7 +66,7 @@ $keterangan, [], // beforeRequest is empty for new permohonan $permohonan->toArray(), - $filePath + $filePath, ); return redirect() ->route('permohonan.index')->with('success', 'Permohonan created successfully'); @@ -136,7 +137,7 @@ public function update(PermohonanRequest $request, $id) { - $permohonan = Permohonan::findOrFail($id); + $permohonan = Permohonan::findOrFail($id); $beforeRequest = $permohonan->toArray(); $validate = $request->validated(); @@ -203,10 +204,10 @@ // Get the total count of records $totalRecords = $query->count(); - $size = $request->get('size', 10); - if ($size == 0) { - $size = 10; - } + $size = $request->get('size', 10); + if ($size == 0) { + $size = 10; + } // Apply pagination if provided if ($request->has('page') && $request->has('size')) { @@ -221,7 +222,7 @@ $filteredRecords = $query->count(); // Get the data for the current page - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian','penilaian'])->get(); + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian'])->get(); // Calculate the page count $pageCount = ceil($totalRecords / $size); @@ -353,4 +354,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/Http/Controllers/ProsesPenawaranController.php b/app/Http/Controllers/ProsesPenawaranController.php index a0d313a..7eae44a 100644 --- a/app/Http/Controllers/ProsesPenawaranController.php +++ b/app/Http/Controllers/ProsesPenawaranController.php @@ -22,7 +22,7 @@ use Modules\Lpj\Models\PenawaranTender; use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\StatusPermohonan; -use Modules\Lpj\Models\TujuanPenilaianKJPP; +use Modules\Lpj\Models\TujuanPenilaian; class ProsesPenawaranController extends Controller { @@ -49,17 +49,17 @@ class ProsesPenawaranController extends Controller // penawaran need union with permohonan $query = PenawaranTender::query()->whereIn('penawaran.status', ['tender', 'proposal-tender']) ->select('penawaran.id', - 'penawaran.nomor_registrasi', - 'penawaran.code as penawaran_code', - 'penawaran.start_date', - 'penawaran.end_date', + 'penawaran.nomor_registrasi', + 'penawaran.code as penawaran_code', + 'penawaran.start_date', + 'penawaran.end_date', 'penawaran.status as statusnya', - 'debitures.name as debitures_name', + 'debitures.name as debitures_name', 'permohonan.tanggal_permohonan', 'users.name as user_pemohon', - 'branches.name as branches_name', + 'branches.name as branches_name', 'tujuan_penilaian.name as tujuan_penilaian_name', - 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name' + 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name' ) ->withCount('penawarandetails') ->leftJoin('permohonan', 'permohonan.nomor_registrasi', '=', 'penawaran.nomor_registrasi') @@ -71,22 +71,22 @@ class ProsesPenawaranController extends Controller $permohonanQuery = Permohonan::whereIn('permohonan.status', ['registered'])->where('permohonan.jenis_penilaian_id', '=', 2) ->select('permohonan.id', - 'permohonan.nomor_registrasi', - DB::raw('"" as penawaran_code'), - DB::raw('"" as start_date'), - DB::raw('"" as end_date'), + 'permohonan.nomor_registrasi', + DB::raw('"" as penawaran_code'), + DB::raw('"" as start_date'), + DB::raw('"" as end_date'), 'permohonan.status as statusnya', - 'debitures.name as debitures_name', + 'debitures.name as debitures_name', 'permohonan.tanggal_permohonan', 'users.name as user_pemohon', - 'branches.name as branches_name', + 'branches.name as branches_name', 'tujuan_penilaian.name as tujuan_penilaian_name', - DB::raw('"" as tujuan_penilaian_kjpp_name'), + DB::raw('"" as tujuan_penilaian_kjpp_name'), DB::raw('"-" as penawarandetails_count')) ->leftJoin('users', 'users.id', '=', 'permohonan.user_id') ->leftJoin('branches', 'branches.id', '=', 'permohonan.branch_id') ->leftJoin('debitures', 'debitures.id', '=', 'permohonan.debiture_id') - ->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id'); + ->leftJoin('tujuan_penilaian', 'tujuan_penilaian.id','=','permohonan.tujuan_penilaian_id'); $query->union($permohonanQuery); // penawaran need union with permohonan @@ -130,7 +130,7 @@ class ProsesPenawaranController extends Controller // format date $i = 0; foreach ($data as $obj) { - + // tanggal_permohonan if ($obj->tanggal_permohonan) { $data[$i]->tanggal_permohonan = Carbon::parse($obj->tanggal_permohonan)->format('d M Y'); @@ -138,9 +138,9 @@ class ProsesPenawaranController extends Controller // date_range $data[$i]->date_range = "-"; - if ($obj->start_date && $obj->end_date) + if ($obj->start_date && $obj->end_date) { - $data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' . + $data[$i]->date_range = Carbon::parse($obj->start_date)->format('d M Y') . ' - ' . Carbon::parse($obj->end_date)->format('d M Y'); } @@ -208,8 +208,8 @@ class ProsesPenawaranController extends Controller ->select('id', 'name', 'code') // Pilih beberapa kolom sekaligus ->get(); $sql=DB::getQueryLog(); - $data['sql'] = $sql; - $data['kjpps'] = $kjpps; + $data['sql'] = $sql; + $data['kjpps'] = $kjpps; $data['penawaran'] = $penawaran; $data['penawrandetails'] = $penawrandetails; $data['status'] = 'success'; @@ -238,7 +238,7 @@ class ProsesPenawaranController extends Controller $data = array(); $dataPenawaranDetail = array(); if (request()->ajax()) { - + $penawarandetail = PenawaranDetailTender::find($id); // cek masa aktif penawaran $checkActiveDateRange = checkActiveDateRangePenawaran($penawarandetail->penawaran_id); @@ -290,13 +290,13 @@ class ProsesPenawaranController extends Controller $data['status'] = 'error'; $data['message'] ['message_error_try_catch'] = array('Proses Penawarn KJPP failed.'); - } + } } else { $data['status'] = 'error'; $data['message']['active_date_range'] = array("Penawaran sudah di tutup"); - } + } } else { $data['status'] = 'error'; @@ -339,7 +339,7 @@ class ProsesPenawaranController extends Controller $data = array(); $dataPermohonan = array(); $dataPenawaran = array(); - + // cek masa aktif penawaran $checkActiveDateRange = checkActiveDateRangePenawaran($id); // cek status (penawaran.status = tender) @@ -406,7 +406,7 @@ class ProsesPenawaranController extends Controller if($checkActiveDateRange && ('tender'==$penawaran->status)) { try { - + // $data['id']=$id; $dataDetailPenawaran = ['status' => '0', @@ -446,7 +446,7 @@ class ProsesPenawaranController extends Controller $data = array(); $dataPenawaranDetail = array(); $failed = 0; - + // cek masa aktif penawaran $checkActiveDateRange = checkActiveDateRangePenawaran($id); // cek status (penawaran.status = tender) @@ -454,9 +454,9 @@ class ProsesPenawaranController extends Controller if($checkActiveDateRange && ('tender'==$penawaran->status)) { DB::beginTransaction(); - try + try { - // update detail_penawaran + // update detail_penawaran $detail_penawaran_ids = $request->input('prosespenawaran_penawarandetail_id', []); $no_proposals = $request->input('prosespenawaran_no_proposal', []); $tgl_proposals = $request->input('prosespenawaran_tgl_proposal', []); @@ -469,23 +469,23 @@ class ProsesPenawaranController extends Controller // loop for($i=0;$i<$tot_kjpp;$i++) { - $detail_penawaran_id= $detail_penawaran_ids[$i]; + $detail_penawaran_id= $detail_penawaran_ids[$i]; $dataPenawaranDetail = [ 'no_proposal' => $no_proposals[$i], - 'tgl_proposal' => $tgl_proposals[$i], + 'tgl_proposal' => $tgl_proposals[$i], 'biaya_penawaran' => str_replace(".","",$biaya_penawarans[$i]), // 'biaya_penawaran' => str_replace(".","",$request->biaya_penawaran) 'updated_by' => Auth::id(), 'updated_at' => now(), ]; - + $penawarandetail = PenawaranDetailTender::find($detail_penawaran_id); - if ($dokumen_penawarans) + if ($dokumen_penawarans) { - if (is_array($dokumen_penawarans) && array_key_exists($i, $dokumen_penawarans)) + if (is_array($dokumen_penawarans) && array_key_exists($i, $dokumen_penawarans)) { $file_tmp = $dokumen_penawarans[$i]; if($file_tmp->isValid()) - { + { $folderPath = 'uploads/penawaran/'; $myFile=$file_tmp->getClientOriginalName(); // nama file with extension @@ -500,16 +500,16 @@ class ProsesPenawaranController extends Controller $dataPenawaranDetail['attachment'] = $myFile; $dataPenawaranDetail['dokumen_persetujuan'] = $newFileNameWithPath; } - + } - + } - - $checkStatus = $penawarandetail->update($dataPenawaranDetail); + + $checkStatus = $penawarandetail->update($dataPenawaranDetail); if(!$checkStatus) $failed++; } - + if($failed>0) { DB::rollBack(); @@ -522,16 +522,16 @@ class ProsesPenawaranController extends Controller $data['status'] = 'success'; $data['message'] ['message_success'] = array('Proses Draft Penawaran KJPP successfully'); } - + } else { $data['status'] = 'error'; $data['message'] ['message_error'] = array('Data inti tidak ada.'); } - - } - catch (Exception $e) + + } + catch (Exception $e) { // dd($e); DB::rollBack(); @@ -560,7 +560,7 @@ class ProsesPenawaranController extends Controller $penawaran = PenawaranTender::find($request->penawaran_id); if($checkActiveDateRange && ('tender'==$penawaran->status)) { - try + try { $dataPenawaranDetail = [ 'penawaran_id' => $request->penawaran_id, @@ -570,22 +570,22 @@ class ProsesPenawaranController extends Controller ]; PenawaranDetailTender::create($dataPenawaranDetail); - + $data['status'] = 'success'; $data['message'] ['message_success'] = array('Proses Tambah KJPP successfully'); } - catch (Exception $e) + catch (Exception $e) { // dd($e); $data['status'] = 'error'; $data['message'] ['message_error_try_catch'] = array('Proses Tambah KJPP failed.'); - } + } } else { $data['status'] = 'error'; $data['message']['active_date_range'] = array("Penawaran sudah di tutup"); - } + } return response()->json($data); } @@ -639,7 +639,7 @@ class ProsesPenawaranController extends Controller }) ->select('id', 'name', 'code') // Pilih beberapa kolom sekaligus ->get(); - + $data['kjpps'] = $kjpps; $data['penawaran'] = $penawaran; $data['penawrandetails'] = $penawrandetails; @@ -676,7 +676,7 @@ class ProsesPenawaranController extends Controller if($checkActiveDateRange && ('proposal-tender'==$penawaran->status)) { try { - + $data['id']=$id; $dataDetailPenawaran = ['status' => '0', @@ -700,7 +700,7 @@ class ProsesPenawaranController extends Controller $data['status'] = 'error'; $data['message']['active_date_range'] = array("Penawaran sudah di tutup"); // $data['message']['message_error'] = array("Penawaran sudah di tutup"); - } + } return response()->json($data); } @@ -714,7 +714,7 @@ class ProsesPenawaranController extends Controller $dataDetailPenawaran = array(); $pleaseCommit= true; if (request()->ajax()) { - + $validator = ProsesPenawaranController::rulesEditUlangnya($request, $id); if ($validator['fails']) { @@ -884,7 +884,7 @@ class ProsesPenawaranController extends Controller // cek apakah blm di approve (penawaran.status = proposal-tender) if($checkActiveDateRange && ('proposal-tender'==$penawaran->status)) { - try + try { $biaya_penawaran=""; if($request->biaya_penawaran) @@ -931,16 +931,16 @@ class ProsesPenawaranController extends Controller } PenawaranDetailTender::create($dataDetailPenawaran); - + $data['status'] = 'success'; $data['message'] ['message_success'] = array('Proses Tambah KJPP Ulang successfully'); } - catch (Exception $e) + catch (Exception $e) { dd($e); $data['status'] = 'error'; $data['message'] ['message_error_try_catch'] = array('Proses Tambah KJPP Ulang failed.'); - } + } } else { @@ -961,7 +961,7 @@ class ProsesPenawaranController extends Controller $permohonan = Permohonan::find($id); // dd($permohonan); $status = StatusPermohonan::all(); - $tujuan_penilaian_kjpp = TujuanPenilaianKJPP::all(); + $tujuan_penilaian_kjpp = TujuanPenilaian::all(); $jenis_laporan = JenisLaporan::all(); $kjpp = KJPP::all(); diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index f344f13..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; @@ -644,7 +645,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 +694,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')) @@ -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/Permohonan.php b/app/Models/Permohonan.php index d47b68e..0618829 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -163,4 +163,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/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/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/module.json b/module.json index bc0647f..bcd7811 100644 --- a/module.json +++ b/module.json @@ -26,6 +26,18 @@ "pemohon-eo" ] }, + { + "title": "Pembatalan", + "path": "pembatalan", + "icon": "ki-filled ki-file-deleted text-lg text-danger", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "administrator", + "pemohon-eo" + ] + }, { "title": "Persetujuan Penawaran", "path": "persetujuan-penawaran", @@ -179,7 +191,7 @@ { "title": "Authorization", "path": "authorization", - "icon": "ki-filled ki-security-user text-lg text-primary", + "icon": "ki-filled ki-security-user text-lg text-info", "classes": "", "attributes": [], "permission": "", 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/pembatalan/form.blade.php b/resources/views/pembatalan/form.blade.php new file mode 100644 index 0000000..78a4f26 --- /dev/null +++ b/resources/views/pembatalan/form.blade.php @@ -0,0 +1,80 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render(request()->route()->getName()) }} +@endsection + +@section('content') +
+
+
+

Form Pembatalan Permohonan

+
+ Back +
+
+
+
+ @method('PUT') + @csrf + +
+ +
+ + +
+
+ +
+ +
+ +
+
+ +
+ +
+ + @error('alasan_pembatalan') + {{ $message }} + @enderror +
+
+ +
+ +
+ @if($pembatalan->file_pembatalan) + + @endif + @error('file_pembatalan') + {{ $message }} + @enderror +
+
+ +
+ + +
+ +
+
+
+@endsection diff --git a/resources/views/pembatalan/index.blade.php b/resources/views/pembatalan/index.blade.php new file mode 100644 index 0000000..6e27000 --- /dev/null +++ b/resources/views/pembatalan/index.blade.php @@ -0,0 +1,185 @@ +@extends('layouts.main') + +@section('breadcrumbs') + {{ Breadcrumbs::render('pembatalan') }} +@endsection + +@section('content') +
+
+
+

+ Daftar Pembatalan Permohonan +

+
+
+ +
+ +
+
+ + +
+
+
{{ $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 ?? '' }}
+ + + + + + + + + + + + + + +
+ + + Nomor Registrasi + + + Nama Debitur + + + Cabang + + + User Pemohon + + + Alasan Pembatalan + + + Dokumen Pendukung + + + Status + + Action
+
+ +
+
+ @endsection + + @push('scripts') + + @endpush 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) -
- - - -
- @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/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/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/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/permohonan/index.blade.php b/resources/views/permohonan/index.blade.php index 095752d..d73af03 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,46 +29,46 @@
+ data-datatable-table="true"> - - - - - - - - - - - - + + + + + + + + + + + +
- - - 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
@@ -91,15 +91,15 @@ @push('scripts')