perbaikan form inspeksi bagian unit, dan kertas kerja
This commit is contained in:
@@ -2,271 +2,279 @@
|
|||||||
|
|
||||||
namespace Modules\Lpj\Exports;
|
namespace Modules\Lpj\Exports;
|
||||||
|
|
||||||
use Maatwebsite\Excel\Concerns\FromCollection;
|
// use Maatwebsite\Excel\Concerns\FromCollection;
|
||||||
// use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
// use Maatwebsite\Excel\Concerns\WithColumnFormatting;
|
||||||
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
// use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
||||||
use Maatwebsite\Excel\Concerns\WithHeadings;
|
// use Maatwebsite\Excel\Concerns\WithHeadings;
|
||||||
use Maatwebsite\Excel\Concerns\WithStyles;
|
// use Maatwebsite\Excel\Concerns\WithStyles;
|
||||||
use Maatwebsite\Excel\Concerns\WithColumnWidths;
|
// use Maatwebsite\Excel\Concerns\WithColumnWidths;
|
||||||
use Maatwebsite\Excel\Concerns\WithEvents;
|
// use Maatwebsite\Excel\Concerns\WithEvents;
|
||||||
use Maatwebsite\Excel\Events\AfterSheet;
|
// use Maatwebsite\Excel\Events\AfterSheet;
|
||||||
|
use Illuminate\Contracts\View\View;
|
||||||
class KertasKerjaExport implements FromCollection, WithHeadings, WithStyles, WithColumnWidths, WithEvents
|
use Maatwebsite\Excel\Concerns\FromView;
|
||||||
|
class KertasKerjaExport implements FromView
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// class KertasKerjaExport implements FromCollection, WithHeadings, WithStyles, WithColumnWidths, WithEvents
|
||||||
|
// {
|
||||||
protected $data;
|
protected $data;
|
||||||
|
|
||||||
protected $headerInfo;
|
public function __construct($data)
|
||||||
|
|
||||||
public function __construct($data, $headerInfo)
|
|
||||||
{
|
{
|
||||||
$this->data = $data;
|
$this->data = $data;
|
||||||
$this->headerInfo = $headerInfo;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function collection()
|
public function view(): View
|
||||||
{
|
{
|
||||||
$rows = [];
|
return view('lpj::component.kertas-kerja', [
|
||||||
|
'data' => $this->data,
|
||||||
$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'
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($fields as $key => $label) {
|
|
||||||
$rows[] = [
|
|
||||||
$nomor++,
|
|
||||||
$label,
|
|
||||||
$this->data['objek'][$key] ?? '',
|
|
||||||
$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 headings(): array
|
// public function collection()
|
||||||
{
|
// {
|
||||||
return [
|
// $rows = [];
|
||||||
['KERTAS KERJA PENILAIAN'],
|
|
||||||
['Pendekatan Pasar'],
|
// $nomor = 1;
|
||||||
['Metode Perbandingan Data Pasar'],
|
// $fields = [
|
||||||
['Tanggal Penilaian: ' . ($this->headerInfo['tanggal_penilaian'] ?? '')],
|
// 'jenis_aset' => 'Jenis Aset',
|
||||||
['Nama Pemilik Aset: ' . ($this->headerInfo['nama_pemilik'] ?? '')],
|
// 'luas_tanah' => 'Luas Tanah (M²)',
|
||||||
['Nama Pemberi Tugas: ' . ($this->headerInfo['nama_pemberi_tugas'] ?? '')],
|
// 'luas_bangunan' => 'Luas Bangunan (M²)',
|
||||||
['Lokasi: ' . ($this->headerInfo['lokasi_lengkap'] ?? '')],
|
// 'harga' => 'Harga Transaksi/Penawaran',
|
||||||
['Nama Debitur: ' . ($this->headerInfo['nama_debitur'] ?? '')],
|
// 'tanggal_penawaran' => 'Tanggal Penawaran/Transaksi',
|
||||||
[''],
|
// 'diskon' => 'Diskon %',
|
||||||
['A. INFORMASI UMUM'],
|
// 'esitmasi_harga' => 'Esitmasi Harga Transaksi (Rp)',
|
||||||
['No.','Uraian', 'Objek Penilaian', 'Data Pembanding 1', 'Data Pembanding 2', 'Data Pembanding 3']
|
// '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'
|
||||||
|
|
||||||
|
// ];
|
||||||
|
|
||||||
|
// foreach ($fields as $key => $label) {
|
||||||
|
// $rows[] = [
|
||||||
|
// $nomor++,
|
||||||
|
// $label,
|
||||||
|
// $this->data['objek'][$key] ?? '',
|
||||||
|
// $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[] = [''];
|
||||||
public function registerEvents(): array
|
// $rows[] = ['INDIKASI NILAI TANAHATAS OBJEK PENILAIAN'];
|
||||||
{
|
|
||||||
return [
|
// $indikasi=[
|
||||||
AfterSheet::class => function (AfterSheet $event) {
|
// 'luas_tanah' => 'Luas Tanah ',
|
||||||
// Styling untuk header utama
|
// '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] ?? '',
|
||||||
|
// ];
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
// Styling untuk setiap section header
|
// // C. Peta Lokasi
|
||||||
$sectionRows = [10, 34, 56, 46, 52]; // Sesuaikan dengan posisi setiap section
|
// $rows[] = [''];
|
||||||
foreach ($sectionRows as $row) {
|
// $rows[] = [''];
|
||||||
$event->sheet->getStyle("A{$row}:F{$row}")->getFill()
|
// $rows[] = ['C. Peta Lokasi'];
|
||||||
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
|
// $rows[] = [$this->data['foto_objek']['foto_objek_peta'] ?? ''];
|
||||||
->getStartColor()->setRGB('E2EFDA');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Merge cells untuk headers
|
// // D. Foto Objek dan Data Pembanding
|
||||||
$event->sheet->mergeCells('A1:E1');
|
// $rows[] = [''];
|
||||||
$event->sheet->mergeCells('A2:E2');
|
// $rows[] = ['D. Foto Objek dan Data Pembanding'];
|
||||||
$event->sheet->mergeCells('A4:E4');
|
// $rows[] = [
|
||||||
$event->sheet->mergeCells('A5:E5');
|
// $this->data['foto_objek1']['foto_objek'] ?? '',
|
||||||
$event->sheet->mergeCells('A6:E6');
|
// $this->data['foto_objek2']['foto_objek'] ?? '',
|
||||||
$event->sheet->mergeCells('A7:E7');
|
// '', '', ''
|
||||||
$event->sheet->mergeCells('A8:E8');
|
// ];
|
||||||
|
|
||||||
// Alignment
|
// // E. Foto Objek
|
||||||
$event->sheet->getStyle('A1:E8')->getAlignment()
|
// $rows[] = [''];
|
||||||
->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT);
|
// $rows[] = ['E. Foto Objek'];
|
||||||
}
|
// $rows[] = [
|
||||||
];
|
// $this->data['foto']['foto_objek'] ?? '',
|
||||||
}
|
// $this->data['foto']['foto_objek'] ?? '',
|
||||||
public function columnWidths(): array
|
// '', '', ''
|
||||||
{
|
// ];
|
||||||
return [
|
|
||||||
'A' => 5,
|
|
||||||
'B' => 30,
|
|
||||||
'C' => 30,
|
|
||||||
'D' => 30,
|
|
||||||
'E' => 30,
|
|
||||||
'F' => 30,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function styles(Worksheet $sheet)
|
// return collect($rows);
|
||||||
{
|
// }
|
||||||
return [
|
|
||||||
// Style for the main header
|
|
||||||
|
|
||||||
// Style for section headers
|
// public function headings(): array
|
||||||
10 => ['font' => ['bold' => true]], // A. Informasi Umum
|
// {
|
||||||
34 => ['font' => ['bold' => true]], // B. Estimasi Nilai Tanah
|
// return [
|
||||||
35 => ['font' => ['bold' => true]], // C. Peta Lokasi
|
// ['KERTAS KERJA PENILAIAN'],
|
||||||
57 => ['font' => ['bold' => true]], // D. Foto Objek dan Pembanding
|
// ['Pendekatan Pasar'],
|
||||||
60 => ['font' => ['bold' => true]], // E. Foto Objek
|
// ['Metode Perbandingan Data Pasar'],
|
||||||
|
// ['Tanggal Penilaian: ' . ($this->headerInfo['tanggal_penilaian'] ?? '')],
|
||||||
// Default styling for columns
|
// ['Nama Pemilik Aset: ' . ($this->headerInfo['nama_pemilik'] ?? '')],
|
||||||
'A:J' => [
|
// ['Nama Pemberi Tugas: ' . ($this->headerInfo['nama_pemberi_tugas'] ?? '')],
|
||||||
'alignment' => ['horizontal' => 'left', 'vertical' => 'center'],
|
// ['Lokasi: ' . ($this->headerInfo['lokasi_lengkap'] ?? '')],
|
||||||
'wrapText' => true,
|
// ['Nama Debitur: ' . ($this->headerInfo['nama_debitur'] ?? '')],
|
||||||
],
|
// [''],
|
||||||
|
// ['A. INFORMASI UMUM'],
|
||||||
// Style for other sections (like photo and map sections)
|
// ['No.','Uraian', 'Objek Penilaian', 'Data Pembanding 1', 'Data Pembanding 2', 'Data Pembanding 3']
|
||||||
|
|
||||||
// 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']],
|
// public function registerEvents(): array
|
||||||
'borders' => [
|
// {
|
||||||
'allBorders' => [
|
// return [
|
||||||
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN
|
// AfterSheet::class => function (AfterSheet $event) {
|
||||||
]
|
// // Styling untuk header utama
|
||||||
]
|
|
||||||
],
|
|
||||||
'A35:F49' => [
|
|
||||||
'borders' => [
|
|
||||||
'allBorders' => [
|
|
||||||
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN
|
|
||||||
]
|
|
||||||
]
|
|
||||||
],
|
|
||||||
|
|
||||||
// end header
|
|
||||||
];
|
// // 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
|
||||||
|
// ];
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -192,19 +192,24 @@ class PenilaiController extends Controller
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function kertas_kerja($id, $jeniJaminan)
|
public function kertas_kerja($id, $jaminanId)
|
||||||
{
|
{
|
||||||
$data = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
$data = Inspeksi::where('permohonan_id', $id)->where('jenis_jaminan_id', $jaminanId)->first();
|
||||||
|
|
||||||
$headerInfo = [
|
// $data = null;
|
||||||
'tanggal_penilaian' => '',
|
// $headerInfo = [
|
||||||
'nama_pemilik' => '',
|
// 'tanggal_penilaian' => '',
|
||||||
'nama_pemberi_tugas' => '',
|
// 'nama_pemilik' => '',
|
||||||
'lokasi_lengkap' => '',
|
// 'nama_pemberi_tugas' => '',
|
||||||
'nama_debitur' => ''
|
// 'lokasi_lengkap' => '',
|
||||||
];
|
// 'nama_debitur' => ''
|
||||||
|
// ];
|
||||||
|
|
||||||
return Excel::download(new KertasKerjaExport($data, $headerInfo), 'kertas-kerja.xlsx');
|
// $datas = json_decode($data->data_pembanding);
|
||||||
|
// return response()->json(['data' =>$datas ]);
|
||||||
|
|
||||||
|
return view('lpj::component.kertas-kerja');
|
||||||
|
// return Excel::download(new KertasKerjaExport($data), 'kertas-kerja.xlsx');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -164,7 +164,6 @@ class SurveyorController extends Controller
|
|||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'message' => 'Data berhasil disimpan',
|
'message' => 'Data berhasil disimpan',
|
||||||
'data' => $processedData
|
|
||||||
], 200);
|
], 200);
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
@@ -178,67 +177,86 @@ class SurveyorController extends Controller
|
|||||||
|
|
||||||
private function getActionSpecificRules($data, $action, $request): array
|
private function getActionSpecificRules($data, $action, $request): array
|
||||||
{
|
{
|
||||||
$pisah = explode(',', $action);
|
$allowedActions = [
|
||||||
|
'apartemen-kantor' => 'getUnitData',
|
||||||
$allRules = [
|
'tanah' => 'getTanahData',
|
||||||
'tanah' => $this->getTanahData($data, $request),
|
'bangunan' => 'getBangunanData',
|
||||||
'bangunan' => $this->getBangunanData($data, $request),
|
'kapal' => 'getKapalData',
|
||||||
'kapal' => $this->getKapalData($data, $request),
|
'kendaraan' => 'getKendaraanData',
|
||||||
'kendaraan' => $this->getKendaraanData($data, $request),
|
'mesin' => 'getMesinData',
|
||||||
'mesin' => $this->getMesinData($data, $request),
|
'pesawat' => 'getPesawatData',
|
||||||
'pesawat' => $this->getPesawatData($data, $request),
|
'alat-berat' => 'getAlatBeratData',
|
||||||
'alat-berat' => $this->getAlatBeratData($data, $request),
|
'lingkungan' => 'getLingkunganData',
|
||||||
'apartemen-kantor' => $this->getUnitData($data, $request),
|
'fakta' => 'getFactData'
|
||||||
'lingkungan' => $this->getLingkunganData($data, $request),
|
|
||||||
'fakta' => $this->getFactData($data, $request),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$rules = [];
|
$rules = [];
|
||||||
$hasAssetDescriptionRules = false;
|
$hasAssetDescriptionRules = false;
|
||||||
|
|
||||||
|
$pisah = array_filter(
|
||||||
|
explode(',', $action),
|
||||||
|
function($act) use ($allowedActions) {
|
||||||
|
return isset($allowedActions[trim($act)]);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
foreach ($pisah as $act) {
|
foreach ($pisah as $act) {
|
||||||
if (isset($allRules[$act])) {
|
$act = trim($act);
|
||||||
$rules = array_merge($rules, $allRules[$act]);
|
$method = $allowedActions[$act];
|
||||||
if ($act == 'tanah' || $act == 'bangunan' || $act == 'apartemen-kantor') {
|
|
||||||
$hasAssetDescriptionRules = true;
|
$actionRules = $this->$method($data, $request);
|
||||||
}
|
$rules = array_merge($rules, $actionRules);
|
||||||
|
|
||||||
|
if (in_array($act, ['apartemen-kantor', 'tanah', 'bangunan'])) {
|
||||||
|
$hasAssetDescriptionRules = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($hasAssetDescriptionRules) {
|
if ($hasAssetDescriptionRules) {
|
||||||
$rules = array_merge($rules, $this->getAssetData($data));
|
$rules = array_merge($rules, $this->getAssetData($data));
|
||||||
}
|
}
|
||||||
|
|
||||||
return $rules;
|
return $rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function storeDenah(Request $request)
|
public function storeDenah(Request $request)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$maxSize = getMaxFileSize('Foto');
|
$maxSize = getMaxFileSize('Foto');
|
||||||
$validatedData = $request->validate([
|
$validationRules = [
|
||||||
'foto_denah' => 'required|file|mimes:jpeg,jpg,png,pdf,svg|max:'. $maxSize,
|
|
||||||
'luas' => 'required|numeric',
|
'luas' => 'required|numeric',
|
||||||
'permohonan_id' => 'required',
|
'permohonan_id' => 'required',
|
||||||
'jenis_jaminan_id' => 'required'
|
'jenis_jaminan_id' => 'required'
|
||||||
]);
|
];
|
||||||
|
|
||||||
$validatedData['foto_denah'] = $this->uploadFile($request->file('foto_denah'), 'foto_denah');
|
if ($request->hasFile('foto_denah')) {
|
||||||
|
$maxSize = getMaxFileSize('Foto');
|
||||||
|
$validationRules['foto_denah'] = 'file|mimes:jpeg,jpg,png,pdf,svg|max:'. $maxSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
$validatedData = $request->validate($validationRules);
|
||||||
|
|
||||||
$formatJsonDenah = [
|
$formatJsonDenah = [
|
||||||
'foto_denah' => $validatedData['foto_denah'],
|
|
||||||
'luas' => $validatedData['luas'],
|
'luas' => $validatedData['luas'],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if ($request->hasFile('foto_denah')) {
|
||||||
|
$formatJsonDenah['foto_denah'] = $this->uploadFile($request->file('foto_denah'), 'foto_denah');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
|
$inspeksi = Inspeksi::where('permohonan_id', $request->input('permohonan_id'))
|
||||||
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))
|
->where('jenis_jaminan_id', $request->input('jenis_jaminan_id'))
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if ($inspeksi) {
|
if ($inspeksi) {
|
||||||
|
$existingDenah = json_decode($inspeksi->denah_form, true) ?? [];
|
||||||
|
|
||||||
|
$updatedDenah = array_merge($existingDenah, $formatJsonDenah);
|
||||||
|
|
||||||
$inspeksi->update([
|
$inspeksi->update([
|
||||||
'denah_form' => json_encode($formatJsonDenah)
|
'denah_form' => json_encode($updatedDenah)
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
Inspeksi::create([
|
Inspeksi::create([
|
||||||
@@ -1660,7 +1678,7 @@ class SurveyorController extends Controller
|
|||||||
true
|
true
|
||||||
),
|
),
|
||||||
'hadap_mata_angin' => [
|
'hadap_mata_angin' => [
|
||||||
$data['hadap_mata_angin'] => ($data['hadap_mata_angin'] == 'sesuai') ? $data['hadap_mata_angin_sesuai'] : $data['hadap_mata_angin_tidak_sesuai']
|
$data['hadap_mata_angin'] => $data['hadap_mata_angin'] == 'sesuai' ? $data['hadap_mata_angin_sesuai'] : $data['hadap_mata_angin_tidak_sesuai'] ?? null
|
||||||
],
|
],
|
||||||
'bentuk_tanah' => $this->getFieldData(
|
'bentuk_tanah' => $this->getFieldData(
|
||||||
$data,
|
$data,
|
||||||
|
|||||||
@@ -66,16 +66,16 @@ class KJPPSeeder extends Seeder
|
|||||||
$jenisUsaha = $this->checkJenisUsaha($row[18]);
|
$jenisUsaha = $this->checkJenisUsaha($row[18]);
|
||||||
$jenisAsset = $this->checkJenisAsset($row[19]);
|
$jenisAsset = $this->checkJenisAsset($row[19]);
|
||||||
|
|
||||||
$detail_email_kantor = $this->checkDanJadikanJson($row[8]);
|
$detail_email_kantor = $this->checkDanJadikanJson($row[9]);
|
||||||
$nama_pic_reviewer = $this->checkDanJadikanJson($row[11]);
|
$nama_pic_reviewer = $this->checkDanJadikanJson($row[12]);
|
||||||
$nomor_hp_pic_reviewer = $this->checkDanJadikanJson($row[12]);
|
$nomor_hp_pic_reviewer = $this->checkDanJadikanJson($row[13]);
|
||||||
$detail_nama_pic_admin = $this->checkDanJadikanJson($row[13]);
|
$detail_nama_pic_admin = $this->checkDanJadikanJson($row[14]);
|
||||||
|
|
||||||
$nomor_hp_pic_admin = $this->checkDanJadikanJson($row[14]);
|
$nomor_hp_pic_admin = $this->checkDanJadikanJson($row[15]);
|
||||||
$nama_pic_marketing = $this->checkDanJadikanJson($row[15]);
|
$nama_pic_marketing = $this->checkDanJadikanJson($row[16]);
|
||||||
|
|
||||||
|
|
||||||
$nomor_hp_pic_marketing = $this->checkDanJadikanJson($row[16]);
|
$nomor_hp_pic_marketing = $this->checkDanJadikanJson($row[17]);
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -91,23 +91,23 @@ class KJPPSeeder extends Seeder
|
|||||||
'address' => $row[7],
|
'address' => $row[7],
|
||||||
'postal_code' => $locationData['postal_code'],
|
'postal_code' => $locationData['postal_code'],
|
||||||
'nomor_telepon_kantor' => $row[8],
|
'nomor_telepon_kantor' => $row[8],
|
||||||
'email_kantor' => $detail_email_kantor,
|
'email_kantor' => $detail_email_kantor[0],
|
||||||
'detail_email_kantor' => $detail_email_kantor,
|
'detail_email_kantor' => json_encode($detail_email_kantor),
|
||||||
'nama_pimpinan' => $row[9],
|
'nama_pimpinan' => $row[10],
|
||||||
'nomor_hp_pimpinan' => $row[10],
|
'nomor_hp_pimpinan' => $row[11],
|
||||||
'nama_pic_reviewer' => $nama_pic_reviewer,
|
'nama_pic_reviewer' => $nama_pic_reviewer[0],
|
||||||
'detail_nama_pic_reviewer' => $nama_pic_reviewer,
|
'detail_nama_pic_reviewer' => json_encode($nama_pic_reviewer),
|
||||||
'nomor_hp_pic_reviewer' => $nomor_hp_pic_reviewer,
|
'nomor_hp_pic_reviewer' => $nomor_hp_pic_reviewer[0],
|
||||||
'detail_nomor_hp_pic_reviewer' => $nomor_hp_pic_reviewer,
|
'detail_nomor_hp_pic_reviewer' => json_encode($nomor_hp_pic_reviewer),
|
||||||
|
|
||||||
'nama_pic_admin' => $detail_nama_pic_admin,
|
'nama_pic_admin' => $detail_nama_pic_admin[0],
|
||||||
'detail_nama_pic_admin' => $detail_nama_pic_admin,
|
'detail_nama_pic_admin' => json_encode($detail_nama_pic_admin),
|
||||||
'nomor_hp_pic_admin' => $nomor_hp_pic_admin,
|
'nomor_hp_pic_admin' => $nomor_hp_pic_admin[0],
|
||||||
'detail_nomor_hp_pic_admin' => $nomor_hp_pic_admin,
|
'detail_nomor_hp_pic_admin' => json_encode($nomor_hp_pic_admin),
|
||||||
'nama_pic_marketing' => $nama_pic_marketing,
|
'nama_pic_marketing' => $nama_pic_marketing[0],
|
||||||
'detail_nama_pic_marketing' => $nama_pic_marketing,
|
'detail_nama_pic_marketing' => json_encode($nama_pic_marketing),
|
||||||
'nomor_hp_pic_marketing' => $nomor_hp_pic_marketing[0],
|
'nomor_hp_pic_marketing' => $nomor_hp_pic_marketing[0],
|
||||||
'detail_nomor_hp_pic_marketing' => $nomor_hp_pic_marketing,
|
'detail_nomor_hp_pic_marketing' => json_encode($nomor_hp_pic_marketing),
|
||||||
'ijin_usaha_id' => json_encode($jenisUsaha),
|
'ijin_usaha_id' => json_encode($jenisUsaha),
|
||||||
'jenis_aset_id' => json_encode($jenisAsset),
|
'jenis_aset_id' => json_encode($jenisAsset),
|
||||||
'attachment' => null,
|
'attachment' => null,
|
||||||
@@ -137,181 +137,186 @@ class KJPPSeeder extends Seeder
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function generateKJPPCode()
|
private function generateKJPPCode()
|
||||||
{
|
{
|
||||||
do {
|
do {
|
||||||
$code = 'K' . str_pad(rand(1, 99999), 5, '0', STR_PAD_LEFT);
|
$code = 'K' . str_pad(rand(1, 99999), 5, '0', STR_PAD_LEFT);
|
||||||
} while (KJPP::where('code', $code)->exists());
|
} while (KJPP::where('code', $code)->exists());
|
||||||
|
|
||||||
return $code;
|
return $code;
|
||||||
}
|
|
||||||
|
|
||||||
public function checkKota($data)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$city = null;
|
|
||||||
if ($data) {
|
|
||||||
// Bersihkan data dan ubah ke uppercase
|
|
||||||
$cleanData = trim(strtoupper($data));
|
|
||||||
|
|
||||||
$possibleNames = [
|
|
||||||
'KAB. ' . $cleanData,
|
|
||||||
'KOTA ' . $cleanData,
|
|
||||||
'KAB. ADM. ' . $cleanData,
|
|
||||||
'KOTA ADM. ' . $cleanData,
|
|
||||||
$cleanData
|
|
||||||
];
|
|
||||||
|
|
||||||
$city = City::whereIn(DB::raw('UPPER(name)'), $possibleNames)->first();
|
|
||||||
|
|
||||||
if ($city) {
|
|
||||||
// Cari district berdasarkan city_code
|
|
||||||
$district = District::where('city_code', $city->code)->first();
|
|
||||||
if (!$district) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
$village = Village::where('district_code', $district->code)->first();
|
|
||||||
if (!$village) {
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return [
|
|
||||||
'province' => $city->province_code,
|
|
||||||
'city' => $city->code,
|
|
||||||
'district' => $district->code,
|
|
||||||
'village' => $village->code,
|
|
||||||
'postal_code' => $village->postal_code
|
|
||||||
];
|
|
||||||
} else{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$this->command->error(" ❌ Error: " . $e->getMessage());
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public function checkJenisAsset($data)
|
public function checkKota($data)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
if (!$data) return [];
|
$city = null;
|
||||||
|
if ($data) {
|
||||||
|
// Bersihkan data dan ubah ke uppercase
|
||||||
|
$cleanData = trim(strtoupper($data));
|
||||||
|
|
||||||
// Bersihkan dan ubah ke lowercase
|
$possibleNames = [
|
||||||
$cleanData = trim(strtolower($data));
|
'KAB. ' . $cleanData,
|
||||||
|
'KOTA ' . $cleanData,
|
||||||
|
'KAB. ADM. ' . $cleanData,
|
||||||
|
'KOTA ADM. ' . $cleanData,
|
||||||
|
$cleanData
|
||||||
|
];
|
||||||
|
|
||||||
// Pisahkan berdasarkan koma, titik koma, dan spasi
|
$city = City::whereIn(DB::raw('UPPER(name)'), $possibleNames)->first();
|
||||||
$assets = preg_split('/[;,]+|\\s+/', $cleanData);
|
|
||||||
|
|
||||||
// Daftar asset yang valid di database
|
if ($city) {
|
||||||
$validAssets = JenisJaminan::pluck('code')->toArray();
|
// Cari district berdasarkan city_code
|
||||||
$assetIds = [];
|
$district = District::where('city_code', $city->code)->first();
|
||||||
|
if (!$district) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($assets as $asset) {
|
$village = Village::where('district_code', $district->code)->first();
|
||||||
// Hapus spasi di awal dan akhir
|
if (!$village) {
|
||||||
$asset = trim($asset);
|
|
||||||
|
|
||||||
// Cek jika ada tanda kurung
|
return null;
|
||||||
if (preg_match('/\((.*?)\)/', $asset, $matches)) {
|
}
|
||||||
// Ambil isi dalam tanda kurung dan pisahkan
|
return [
|
||||||
$insideParentheses = explode(',', $matches[1]);
|
'province' => $city->province_code,
|
||||||
foreach ($insideParentheses as $insideAsset) {
|
'city' => $city->code,
|
||||||
$insideAsset = trim($insideAsset);
|
'district' => $district->code,
|
||||||
// Cari di database
|
'village' => $village->code,
|
||||||
$jenisAsset = JenisJaminan::whereRaw('LOWER(name) = ?', [$insideAsset])->first();
|
'postal_code' => $village->postal_code
|
||||||
if ($jenisAsset && in_array($jenisAsset->code, $validAssets)) {
|
];
|
||||||
$assetIds[] = $jenisAsset->code;
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$this->command->error(" ❌ Error: " . $e->getMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function checkJenisAsset($data)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
if (!$data) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bersihkan dan ubah ke lowercase
|
||||||
|
$cleanData = trim(strtolower($data));
|
||||||
|
|
||||||
|
// Pisahkan berdasarkan koma, titik koma, dan spasi
|
||||||
|
$assets = preg_split('/[;,]+|\\s+/', $cleanData);
|
||||||
|
|
||||||
|
// Daftar asset yang valid di database
|
||||||
|
$validAssets = JenisJaminan::pluck('code')->toArray();
|
||||||
|
$assetIds = [];
|
||||||
|
|
||||||
|
foreach ($assets as $asset) {
|
||||||
|
// Hapus spasi di awal dan akhir
|
||||||
|
$asset = trim($asset);
|
||||||
|
|
||||||
|
// Cek jika ada tanda kurung
|
||||||
|
if (preg_match('/\((.*?)\)/', $asset, $matches)) {
|
||||||
|
// Ambil isi dalam tanda kurung dan pisahkan
|
||||||
|
$insideParentheses = explode(',', $matches[1]);
|
||||||
|
foreach ($insideParentheses as $insideAsset) {
|
||||||
|
$insideAsset = trim($insideAsset);
|
||||||
|
// Cari di database
|
||||||
|
$jenisAsset = JenisJaminan::whereRaw('LOWER(name) = ?', [$insideAsset])->first();
|
||||||
|
if ($jenisAsset && in_array($jenisAsset->code, $validAssets)) {
|
||||||
|
$assetIds[] = $jenisAsset->code;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Cek jenis aset utama (tanpa tanda kurung)
|
||||||
|
$jenisAsset = JenisJaminan::whereRaw('LOWER(name) = ?', [$asset])->first();
|
||||||
|
if ($jenisAsset && in_array($jenisAsset->code, $validAssets)) {
|
||||||
|
$assetIds[] = $jenisAsset->code;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cek jenis aset utama (tanpa tanda kurung)
|
// Menghilangkan duplikat jika ada
|
||||||
$jenisAsset = JenisJaminan::whereRaw('LOWER(name) = ?', [$asset])->first();
|
$assetIds = array_unique($assetIds);
|
||||||
if ($jenisAsset && in_array($jenisAsset->code, $validAssets)) {
|
|
||||||
$assetIds[] = $jenisAsset->code;
|
|
||||||
|
|
||||||
}
|
// Sort array untuk konsistensi
|
||||||
|
sort($assetIds);
|
||||||
|
|
||||||
|
return $assetIds;
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$this->command->error(" ❌ Error pada checkJenisAsset: " . $e->getMessage());
|
||||||
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Menghilangkan duplikat jika ada
|
|
||||||
$assetIds = array_unique($assetIds);
|
|
||||||
|
|
||||||
// Sort array untuk konsistensi
|
|
||||||
sort($assetIds);
|
|
||||||
|
|
||||||
return $assetIds;
|
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$this->command->error(" ❌ Error pada checkJenisAsset: " . $e->getMessage());
|
|
||||||
return [];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public function checkJenisUsaha($data)
|
public function checkJenisUsaha($data)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
if (!$data) return [];
|
if (!$data) {
|
||||||
|
return [];
|
||||||
// Bersihkan dan ubah ke lowercase
|
|
||||||
$cleanData = trim(strtolower($data));
|
|
||||||
|
|
||||||
// Pisahkan berdasarkan koma, titik koma, atau garis miring
|
|
||||||
$usahas = preg_split('/[\s,;\/]+/', $cleanData);
|
|
||||||
|
|
||||||
// Ambil daftar valid usaha dari database
|
|
||||||
$validUsaha = IjinUsaha::pluck('code')->toArray();
|
|
||||||
$usahaIds = [];
|
|
||||||
|
|
||||||
foreach ($usahas as $usaha) {
|
|
||||||
// Hapus spasi di awal dan akhir
|
|
||||||
$usaha = trim($usaha);
|
|
||||||
|
|
||||||
// Cari jenis usaha di database
|
|
||||||
$jenisUsaha = IjinUsaha::whereRaw('LOWER(name) = ?', [$usaha])->first();
|
|
||||||
|
|
||||||
if ($jenisUsaha && in_array($jenisUsaha->code, $validUsaha)) {
|
|
||||||
$usahaIds[] = $jenisUsaha->code;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bersihkan dan ubah ke lowercase
|
||||||
|
$cleanData = trim(strtolower($data));
|
||||||
|
|
||||||
|
// Pisahkan berdasarkan koma, titik koma, atau garis miring
|
||||||
|
$usahas = preg_split('/[\s,;\/]+/', $cleanData);
|
||||||
|
|
||||||
|
// Ambil daftar valid usaha dari database
|
||||||
|
$validUsaha = IjinUsaha::pluck('code')->toArray();
|
||||||
|
$usahaIds = [];
|
||||||
|
|
||||||
|
foreach ($usahas as $usaha) {
|
||||||
|
// Hapus spasi di awal dan akhir
|
||||||
|
$usaha = trim($usaha);
|
||||||
|
|
||||||
|
// Cari jenis usaha di database
|
||||||
|
$jenisUsaha = IjinUsaha::whereRaw('LOWER(name) = ?', [$usaha])->first();
|
||||||
|
|
||||||
|
if ($jenisUsaha && in_array($jenisUsaha->code, $validUsaha)) {
|
||||||
|
$usahaIds[] = $jenisUsaha->code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Menghilangkan duplikat jika ada
|
||||||
|
$usahaIds = array_unique($usahaIds);
|
||||||
|
|
||||||
|
// Sort array untuk konsistensi
|
||||||
|
sort($usahaIds);
|
||||||
|
|
||||||
|
return $usahaIds;
|
||||||
|
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$this->command->error(" ❌ Error pada checkJenisUsaha: " . $e->getMessage());
|
||||||
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Menghilangkan duplikat jika ada
|
|
||||||
$usahaIds = array_unique($usahaIds);
|
|
||||||
|
|
||||||
// Sort array untuk konsistensi
|
|
||||||
sort($usahaIds);
|
|
||||||
|
|
||||||
return $usahaIds;
|
|
||||||
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$this->command->error(" ❌ Error pada checkJenisUsaha: " . $e->getMessage());
|
|
||||||
return [];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Fungsi untuk memisahkan dan mengonversi data menjadi array JSON
|
// Fungsi untuk memisahkan dan mengonversi data menjadi array JSON
|
||||||
function checkDanJadikanJson($input) {
|
public function checkDanJadikanJson($input)
|
||||||
|
{
|
||||||
|
$input = trim($input);
|
||||||
|
|
||||||
$input = trim($input);
|
// Memisahkan berdasarkan "/", ";", "dan", atau baris baru ("\n")
|
||||||
|
$separatedData = preg_split('/\s*\/\s*|\s*;\s*|\s*dan\s*|\s*\n\s*/i', $input);
|
||||||
|
|
||||||
// memisahkan berdasarkan "/", ";", "dan", atau baris baru ("\n")
|
// Membersihkan data
|
||||||
$separatedData = preg_split('/\s*\/\s*|\s*;\s*|\s*dan\s*|\s*\n\s*/i', $input);
|
$cleanedData = array_map('trim', $separatedData);
|
||||||
|
|
||||||
|
// Menghapus elemen kosong
|
||||||
|
$cleanedData = array_filter($cleanedData, function ($item) {
|
||||||
|
return !empty($item);
|
||||||
|
});
|
||||||
|
|
||||||
$cleanedData = array_map(function($item) {
|
// Kembalikan array yang sudah diurutkan ulang (indeks dimulai dari 0)
|
||||||
return trim($item);
|
return array_values($cleanedData);
|
||||||
}, $separatedData);
|
}
|
||||||
|
|
||||||
$cleanedData = array_filter($cleanedData, function($item) {
|
|
||||||
return !empty($item);
|
|
||||||
});
|
|
||||||
|
|
||||||
return json_encode(array_values($cleanedData));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
222
resources/views/component/kertas-kerja.blade.php
Normal file
222
resources/views/component/kertas-kerja.blade.php
Normal file
@@ -0,0 +1,222 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Penilaian Aset</title>
|
||||||
|
<style>
|
||||||
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
margin: 0;
|
||||||
|
padding: 15px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-table, .data-table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-table td {
|
||||||
|
padding: 5px 8px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-table .title {
|
||||||
|
font-weight: bold;
|
||||||
|
background-color: #f1f3f5;
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-table .value {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data-table th, .data-table td {
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
padding: 5px 8px;
|
||||||
|
text-align: left;
|
||||||
|
word-wrap: break-word;
|
||||||
|
max-width: 150px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data-table th {
|
||||||
|
background-color: #f1f3f5;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.data-table tr:nth-child(even) {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
body {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<table class="header-table">
|
||||||
|
<tr>
|
||||||
|
<td class="title">Pendekatan Pasar</td>
|
||||||
|
<td class="value">Metode Perbandingan Data Pasar</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">Tanggal Penilaian</td>
|
||||||
|
<td class="value">{{ $tanggal_penilaian ?? '-' }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">Nama Pemilik Aset</td>
|
||||||
|
<td class="value">PT ABC</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">Nama Pemberi Tugas</td>
|
||||||
|
<td class="value">PT ABC</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">Lokasi</td>
|
||||||
|
<td class="value">{{ $lokasi ?? '-' }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="title">Nama Debitur</td>
|
||||||
|
<td class="value">Bapak Saiful</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table class="data-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="5">No.</th>
|
||||||
|
<th width="20">Uraian</th>
|
||||||
|
<th width="15">Objek Penilaian</th>
|
||||||
|
<th width="20">Data Pembanding 1</th>
|
||||||
|
<th width="20">Data Pembanding 2</th>
|
||||||
|
<th width="20">Data Pembanding 3</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@php
|
||||||
|
$dataform = json_decode($data->data_form) ?? [];
|
||||||
|
$dataPembanding = json_decode($data->data_pembanding) ?? [];
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@php
|
||||||
|
function getNestedValue($data, $keyPath, $default = '-') {
|
||||||
|
// Pecah path kunci menjadi array
|
||||||
|
$keys = explode('.', $keyPath);
|
||||||
|
|
||||||
|
// Mulai dari data awal
|
||||||
|
$value = $data;
|
||||||
|
|
||||||
|
// Telusuri setiap kunci
|
||||||
|
foreach ($keys as $key) {
|
||||||
|
// Cek apakah kunci ada di level saat ini
|
||||||
|
if (is_array($value) && array_key_exists($key, $value)) {
|
||||||
|
$value = $value[$key];
|
||||||
|
} else {
|
||||||
|
// Jika kunci tidak ditemukan, kembalikan default
|
||||||
|
return $default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kembalikan nilai akhir atau default jika kosong
|
||||||
|
return $value ?? $default;
|
||||||
|
}
|
||||||
|
|
||||||
|
$rows = [
|
||||||
|
[
|
||||||
|
'label' => 'Jenis Aset',
|
||||||
|
'key' => 'jenis_aset',
|
||||||
|
'default' => 'Rumah Tinggal',
|
||||||
|
'variants' => [
|
||||||
|
'sesuai' => 'Sesuai',
|
||||||
|
'tidak sesuai' => 'Tidak Sesuai'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'label' => 'Luas Tanah (M²)',
|
||||||
|
'key' => 'tanah.luas_tanah',
|
||||||
|
'default' => '-',
|
||||||
|
'variants' => [
|
||||||
|
'sesuai' => 'Sesuai',
|
||||||
|
'tidak sesuai' => 'Tidak Sesuai'
|
||||||
|
]
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'label' => 'Luas Bangunan (M²)',
|
||||||
|
'key' => 'bangunan.luas_tanah_bangunan',
|
||||||
|
'default' => '-',
|
||||||
|
'variants' => [
|
||||||
|
'sesuai' => 'Sesuai',
|
||||||
|
'tidak sesuai' => 'Tidak Sesuai'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
@foreach($rows as $index => $item)
|
||||||
|
<tr>
|
||||||
|
<td class="text-center">{{ $index + 1 }}</td>
|
||||||
|
<td>{{ $item['label'] }}</td>
|
||||||
|
|
||||||
|
{{-- Objek Penilaian --}}
|
||||||
|
<td>
|
||||||
|
@php
|
||||||
|
// Coba berbagai varian kunci
|
||||||
|
$objekValue = '-';
|
||||||
|
foreach (['sesuai', 'tidak sesuai'] as $variant) {
|
||||||
|
$fullKey = $item['key'] . '.' . $variant;
|
||||||
|
$objekValue = getNestedValue($dataform, $fullKey, $item['default']);
|
||||||
|
|
||||||
|
// Jika nilai ditemukan, hentikan pencarian
|
||||||
|
if ($objekValue !== $item['default']) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
{{ $objekValue }}
|
||||||
|
</td>
|
||||||
|
|
||||||
|
{{-- Data Pembanding --}}
|
||||||
|
@for($i = 0; $i < 3; $i++)
|
||||||
|
<td>
|
||||||
|
@php
|
||||||
|
// Coba berbagai varian kunci untuk data pembanding
|
||||||
|
$pembandingValue = '-';
|
||||||
|
foreach (['sesuai', 'tidak sesuai'] as $variant) {
|
||||||
|
$fullKey = $item['key'] . '.' . $variant;
|
||||||
|
$pembandingValue = getNestedValue($dataPembanding[$i] ?? [], $fullKey, '-');
|
||||||
|
|
||||||
|
// Jika nilai ditemukan, hentikan pencarian
|
||||||
|
if ($pembandingValue !== '-') {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
{{ $pembandingValue }}
|
||||||
|
</td>
|
||||||
|
@endfor
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Tambahkan baris lainnya dengan cara yang sama -->
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -97,176 +97,176 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@foreach ($permohonan->debiture->documents as $dokumen)
|
@foreach ($permohonan->debiture->documents as $dokumen)
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="card-body grid gap-5">
|
<div class="card-body grid gap-5">
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
@php
|
@php
|
||||||
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
|
$surveyor = $permohonan->penilaian->userPenilai->where('role', 'surveyor')->first();
|
||||||
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
|
$penilai = $permohonan->penilaian->userPenilai->where('role', 'penilai')->first();
|
||||||
|
|
||||||
@endphp
|
@endphp
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Surveyor
|
Surveyor
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
{{ $surveyor->userPenilaiTeam->name }}
|
{{ $surveyor->userPenilaiTeam->name }}
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->region->name }}
|
<p class="flex w-full text-gray-600 font-medium text-sm">{{ $permohonan->region->name }}
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Penilai
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
|
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
|
||||||
{{ $penilai->userPenilaiTeam->name }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
|
||||||
{{ $permohonan->region->name }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Tujuan Penilaian
|
|
||||||
</label>
|
|
||||||
<p class="flex text-gray-600 font-medium text-sm w-full">
|
|
||||||
{{ $permohonan->tujuanPenilaian->name }}</p>
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Jenis Jaminan
|
|
||||||
</label>
|
|
||||||
<p class="flex text-gray-600 font-medium text-sm w-full">
|
|
||||||
@foreach ($permohonan->debiture->documents as $document)
|
|
||||||
{{ $document->jenisjaminan->name }}
|
|
||||||
@endforeach
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<label class="form-label max-w-56">
|
||||||
<label class="form-label max-w-56">
|
Penilai
|
||||||
Tanggal Survei
|
</label>
|
||||||
</label>
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
|
||||||
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Tanggal Laporan
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
|
||||||
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
No. Laporan
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<p class="flex w-full text-gray-600 font-medium text-sm">
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
{{ $penilai->userPenilaiTeam->name }}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
{{ $permohonan->region->name }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tujuan Penilaian
|
||||||
|
</label>
|
||||||
|
<p class="flex text-gray-600 font-medium text-sm w-full">
|
||||||
|
{{ $permohonan->tujuanPenilaian->name }}</p>
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Jenis Jaminan
|
||||||
|
</label>
|
||||||
|
<p class="flex text-gray-600 font-medium text-sm w-full">
|
||||||
|
@foreach ($permohonan->debiture->documents as $document)
|
||||||
|
{{ $document->jenisjaminan->name }}
|
||||||
|
@endforeach
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tanggal Survei
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Tanggal Laporan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
{{ formatTanggalIndonesia($permohonan->created_at) }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
No. Laporan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<p class="flex w-full text-gray-600 font-medium text-sm">
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full card-footer mt-2 ">
|
</div>
|
||||||
<div class="flex gap-5">
|
|
||||||
<a class="btn btn-primary" href="{{ route('penilai.lampiran', $permohonan->id) }}">
|
|
||||||
LAMPIRAN FOTO DAN DOKUMEN
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a class="btn btn-primary" data-modal-toggle="#modal_2">
|
|
||||||
KERTAS KERJA
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-primary" href="#">
|
|
||||||
PAPARAN
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="dropdown" data-dropdown="true" data-dropdown-trigger="click">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 w-full card-footer mt-2 ">
|
||||||
<button class="dropdown-toggle btn btn-primary">
|
<div class="flex gap-5">
|
||||||
WORKSHEET
|
<a class="btn btn-primary" href="{{ route('penilai.lampiran', $permohonan->id) }}">
|
||||||
</button>
|
LAMPIRAN FOTO DAN DOKUMEN
|
||||||
<div class="dropdown-content w-full max-w-56 py-2">
|
</a>
|
||||||
<div class="menu menu-default flex flex-col w-full">
|
|
||||||
<div class="menu-item">
|
|
||||||
<a class="menu-link" href="{{ route('penilai.memo', $permohonan->id) }}">
|
|
||||||
<span class="menu-icon">
|
|
||||||
<i class="ki-outline ki-badge">
|
|
||||||
</i>
|
|
||||||
</span>
|
|
||||||
<span class="menu-title">
|
|
||||||
MEMO
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="menu-item">
|
|
||||||
<a class="menu-link" href="{{ route('penilai.resume', $permohonan->id) }}">
|
|
||||||
<span class="menu-icon">
|
|
||||||
<i class="ki-outline ki-profile-circle">
|
|
||||||
</i>
|
|
||||||
</span>
|
|
||||||
<span class="menu-title">
|
|
||||||
RESUME
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="menu-item">
|
|
||||||
<a class="menu-link" onclick="seletSederhanaStandart()">
|
|
||||||
<span class="menu-icon">
|
|
||||||
<i class="ki-outline ki-setting-2">
|
|
||||||
</i>
|
|
||||||
</span>
|
|
||||||
<span class="menu-title">
|
|
||||||
LPJ
|
|
||||||
</span>
|
|
||||||
|
|
||||||
</a>
|
<a class="btn btn-primary" data-modal-toggle="#modal_2">
|
||||||
</div>
|
KERTAS KERJA
|
||||||
<div class="menu-item">
|
</a>
|
||||||
<a class="menu-link" href="#">
|
<a class="btn btn-primary" href="#">
|
||||||
<span class="menu-icon">
|
PAPARAN
|
||||||
<i class="ki-outline ki-message-programming">
|
</a>
|
||||||
</i>
|
|
||||||
</span>
|
<div class="dropdown" data-dropdown="true" data-dropdown-trigger="click">
|
||||||
<span class="menu-title">
|
<button class="dropdown-toggle btn btn-primary">
|
||||||
RAP
|
WORKSHEET
|
||||||
</span>
|
</button>
|
||||||
</a>
|
<div class="dropdown-content w-full max-w-56 py-2">
|
||||||
</div>
|
<div class="menu menu-default flex flex-col w-full">
|
||||||
|
<div class="menu-item">
|
||||||
|
<a class="menu-link" href="{{ route('penilai.memo', $permohonan->id) }}">
|
||||||
|
<span class="menu-icon">
|
||||||
|
<i class="ki-outline ki-badge">
|
||||||
|
</i>
|
||||||
|
</span>
|
||||||
|
<span class="menu-title">
|
||||||
|
MEMO
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="menu-item">
|
||||||
|
<a class="menu-link" href="{{ route('penilai.resume', $permohonan->id) }}">
|
||||||
|
<span class="menu-icon">
|
||||||
|
<i class="ki-outline ki-profile-circle">
|
||||||
|
</i>
|
||||||
|
</span>
|
||||||
|
<span class="menu-title">
|
||||||
|
RESUME
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="menu-item">
|
||||||
|
<a class="menu-link" onclick="seletSederhanaStandart()">
|
||||||
|
<span class="menu-icon">
|
||||||
|
<i class="ki-outline ki-setting-2">
|
||||||
|
</i>
|
||||||
|
</span>
|
||||||
|
<span class="menu-title">
|
||||||
|
LPJ
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="menu-item">
|
||||||
|
<a class="menu-link" href="#">
|
||||||
|
<span class="menu-icon">
|
||||||
|
<i class="ki-outline ki-message-programming">
|
||||||
|
</i>
|
||||||
|
</span>
|
||||||
|
<span class="menu-title">
|
||||||
|
RAP
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="flex justify-end gap-5">
|
<div class="flex justify-end gap-5">
|
||||||
<a class="btn btn-success" href="#">
|
<a class="btn btn-success" href="#">
|
||||||
SAVE
|
SAVE
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a class="btn btn-success" href="#">
|
<a class="btn btn-success" href="#">
|
||||||
REPORT
|
REPORT
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
||||||
<a class="btn btn-success" href="#">
|
<a class="btn btn-success" href="#">
|
||||||
PRINT OUT
|
PRINT OUT
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -294,10 +294,26 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group flex items-baseline flex-wrap">
|
<div class="form-group flex items-baseline flex-wrap">
|
||||||
|
@php
|
||||||
<a class="btn btn-outline btn-primary w-full"
|
$jenisJaminanId = null;
|
||||||
href="{{ route('penilai.export.kertas-kerja', $permohonan->id) }}">Export Kertas Kerja</a>
|
@endphp
|
||||||
|
@foreach ($permohonan->debiture->documents as $document)
|
||||||
|
@if ($document->jenisjaminan)
|
||||||
|
@php
|
||||||
|
$jenisJaminanId = $document->jenisjaminan->id;
|
||||||
|
@endphp
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
@if ($jenisJaminanId)
|
||||||
|
<a class="btn btn-outline btn-primary w-full"
|
||||||
|
href="{{ route('penilai.export.kertas-kerja', ['id' => $permohonan->id, 'jaminanId' => $jenisJaminanId]) }}">
|
||||||
|
Export Kertas Kerja
|
||||||
|
</a>
|
||||||
|
@else
|
||||||
|
<p class="text-red-500">Tidak ada dokumen yang memiliki jenis jaminan.</p>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
|
|
||||||
|
|||||||
@@ -165,7 +165,6 @@
|
|||||||
|
|
||||||
<div class="input-group w-full flex gap-2">
|
<div class="input-group w-full flex gap-2">
|
||||||
<input type="file"
|
<input type="file"
|
||||||
value="{{ old('foto_denah', isset($formDenah['foto_denah']) ? $formDenah['foto_denah'] : '') }}"
|
|
||||||
name="foto_denah" class="file-input file-input-bordered w-full"
|
name="foto_denah" class="file-input file-input-bordered w-full"
|
||||||
accept=".jpg,.jpeg,.png,.pdf" onchange="previewFile(this)">
|
accept=".jpg,.jpeg,.png,.pdf" onchange="previewFile(this)">
|
||||||
</div>
|
</div>
|
||||||
@@ -186,7 +185,7 @@
|
|||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
<span class="form-label">Masukkan total luas tanah</span>
|
<span class="form-label">Masukkan total luas tanah</span>
|
||||||
</label>
|
</label>
|
||||||
<input type="text" name="luas" class="input w-full "
|
<input type="text" name="luas" class="input w-full number-format"
|
||||||
value="{{ old('luas', isset($formDenah['luas']) ? $formDenah['luas'] : '') }}">
|
value="{{ old('luas', isset($formDenah['luas']) ? $formDenah['luas'] : '') }}">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -216,7 +215,15 @@
|
|||||||
|
|
||||||
|
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
|
@include('lpj::surveyor.js.utils')
|
||||||
<script>
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
document.querySelectorAll('.number-format').forEach(input => {
|
||||||
|
input.addEventListener('input', function() {
|
||||||
|
formatNumber(this);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
function previewFile(input) {
|
function previewFile(input) {
|
||||||
const previewContainer = document.getElementById('preview-container');
|
const previewContainer = document.getElementById('preview-container');
|
||||||
const imagePreview = document.getElementById('foto_denah-preview');
|
const imagePreview = document.getElementById('foto_denah-preview');
|
||||||
|
|||||||
@@ -215,14 +215,12 @@
|
|||||||
if (errors) {
|
if (errors) {
|
||||||
$.each(errors, function(key, value) {
|
$.each(errors, function(key, value) {
|
||||||
$(`#error-${key}`).text(value[0]);
|
$(`#error-${key}`).text(value[0]);
|
||||||
|
toastrErrorBuild(value[0]);
|
||||||
});
|
});
|
||||||
|
// toastrErrorBuild(error);
|
||||||
}
|
}
|
||||||
hideLoadingSwal();
|
hideLoadingSwal();
|
||||||
console.error('Terjadi error:', error); // Menampilkan pesan error di konsol
|
|
||||||
console.log('Status:', status);
|
|
||||||
console.log('Response:', xhr.responseText);
|
|
||||||
console.log(errors);
|
console.log(errors);
|
||||||
toastrErrorBuild(error);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -540,9 +540,7 @@ Route::middleware(['auth'])->group(function () {
|
|||||||
Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables');
|
Route::get('datatables', [PenilaiController::class, 'dataForDatatables'])->name('dataForTables');
|
||||||
|
|
||||||
Route::get('lampiran/{id}', [PenilaiController::class, 'lampiran'])->name('lampiran');
|
Route::get('lampiran/{id}', [PenilaiController::class, 'lampiran'])->name('lampiran');
|
||||||
Route::get('export/kertas-kerja', [PenilaiController::class, 'kertas_kerja'])->name('export.kertas-kerja');
|
Route::get('export/kertas-kerja/{id}/{jaminanId}', [PenilaiController::class, 'kertas_kerja'])->name('export.kertas-kerja');
|
||||||
Route::get('export/kertas-kerja', [PenilaiController::class, 'kertas_kerja'])->name('export.kertas-kerja');
|
|
||||||
Route::get('export/kertas-kerja', [PenilaiController::class, 'kertas_kerja'])->name('export.kertas-kerja');
|
|
||||||
|
|
||||||
Route::get('sederhana/{id}', [PenilaiController::class, 'sederhana'])->name('sederhana');
|
Route::get('sederhana/{id}', [PenilaiController::class, 'sederhana'])->name('sederhana');
|
||||||
Route::get('standard/{id}', [PenilaiController::class, 'standard'])->name('standard');
|
Route::get('standard/{id}', [PenilaiController::class, 'standard'])->name('standard');
|
||||||
|
|||||||
Reference in New Issue
Block a user