Merge branch 'staging' of https://git.putrakuningan.com/daengdeni/lpj into andydev
This commit is contained in:
@@ -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
|
||||
// ];
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
147
app/Http/Controllers/PembatalanController.php
Normal file
147
app/Http/Controllers/PembatalanController.php
Normal file
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Maatwebsite\Excel\Facades\Excel;
|
||||
use Modules\Location\Models\City;
|
||||
use Modules\Location\Models\District;
|
||||
use Modules\Location\Models\Province;
|
||||
use Modules\Location\Models\Village;
|
||||
use Modules\Lpj\Exports\PermohonanExport;
|
||||
use Modules\Lpj\Http\Requests\PermohonanRequest;
|
||||
use Modules\Lpj\Models\Branch;
|
||||
use Modules\Lpj\Models\Debiture;
|
||||
use Modules\Lpj\Models\DokumenJaminan;
|
||||
use Modules\Lpj\Models\JenisFasilitasKredit;
|
||||
use Modules\Lpj\Models\NilaiPlafond;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Lpj\Models\PermohonanPembatalan;
|
||||
use Modules\Lpj\Models\StatusPermohonan;
|
||||
use Modules\Lpj\Models\TujuanPenilaian;
|
||||
use Modules\Lpj\Services\PermohonanHistoryService;
|
||||
|
||||
class PembatalanController extends Controller
|
||||
{
|
||||
public $user;
|
||||
protected $historyService;
|
||||
|
||||
public function __construct(PermohonanHistoryService $historyService)
|
||||
{
|
||||
$this->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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -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');
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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()
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -163,4 +163,8 @@
|
||||
{
|
||||
return $this->hasMany(DokumenJaminan::class);
|
||||
}
|
||||
|
||||
public function pembatalan(){
|
||||
return $this->hasMany(PermohonanPembatalan::class);
|
||||
}
|
||||
}
|
||||
|
||||
50
app/Models/PermohonanPembatalan.php
Normal file
50
app/Models/PermohonanPembatalan.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Lpj\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Modules\Lpj\Models\Permohonan;
|
||||
use Modules\Usermanagement\Models\User;
|
||||
|
||||
class PermohonanPembatalan extends Base
|
||||
{
|
||||
|
||||
protected $table = 'permohonan_pembatalan';
|
||||
|
||||
protected $fillable = [
|
||||
'permohonan_id',
|
||||
'alasan_pembatalan',
|
||||
'file_pembatalan',
|
||||
'status',
|
||||
'keterangan',
|
||||
'authorized_at',
|
||||
'authorized_status',
|
||||
'created_by',
|
||||
'updated_by',
|
||||
'deleted_by',
|
||||
'authorized_by',
|
||||
];
|
||||
|
||||
protected $dates = [
|
||||
'created_at',
|
||||
'updated_at',
|
||||
'deleted_at',
|
||||
'authorized_at',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'authorized_status' => 'string',
|
||||
];
|
||||
|
||||
// Relationship with Permohonan
|
||||
public function permohonan()
|
||||
{
|
||||
return $this->belongsTo(Permohonan::class, 'permohonan_id');
|
||||
}
|
||||
|
||||
public function creator(){
|
||||
return $this->belongsTo(User::class, 'created_by');
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user