diff --git a/app/Exports/LaporanPenilaiJaminanExport.php b/app/Exports/LaporanPenilaiJaminanExport.php index 64e8165..d2330ab 100644 --- a/app/Exports/LaporanPenilaiJaminanExport.php +++ b/app/Exports/LaporanPenilaiJaminanExport.php @@ -10,6 +10,7 @@ use Illuminate\Database\Eloquent\Builder; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; use Modules\Lpj\Models\Debiture; use Modules\Lpj\Models\Permohonan; +use Modules\Lpj\Helpers\Lpj; class LaporanPenilaiJaminanExport implements FromQuery, WithHeadings, WithMapping, ShouldAutoSize { @@ -30,7 +31,7 @@ class LaporanPenilaiJaminanExport implements FromQuery, WithHeadings, WithMappin public function query() { $query = Permohonan::query() - ->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'dokumenjaminan.jenisJaminan','nilaiPlafond', 'penilai']); + ->with(['user', 'debiture', 'branch', 'tujuanPenilaian', 'penilaian', 'dokumenjaminan.jenisJaminan','nilaiPlafond', 'penilai', 'inspeksi']); // Filter by date range if provided if ($this->tanggalAwal && $this->tanggalAkhir) { @@ -41,6 +42,7 @@ class LaporanPenilaiJaminanExport implements FromQuery, WithHeadings, WithMappin // Filter by status if provided if ($this->status) { $types = is_array($this->status) ? $this->status : [$this->status]; + $types = array_map('strtolower', $types); $query->whereHas('penilai', function (Builder $query) use ($types) { $query->whereIn('type_penilai', $types); }); @@ -59,10 +61,22 @@ class LaporanPenilaiJaminanExport implements FromQuery, WithHeadings, WithMappin public function map($row): array { - $fieldPenilai = ['sederhana', 'standar', 'resume', 'memo', 'rap', 'call-report']; + + // ambil data alamat dari inspeksi + $alamat_inspeksi = null; + + if ($row->inspeksi) { + $alamat_inspeksi = json_decode($row->inspeksi->data_form, true) ?? null; + $alamat_inspeksi = $alamat_inspeksi['asset']['alamat']['sesuai'] ?? $alamat_inspeksi['asset']['alamat']['tidak sesuai'] ?? []; + } + $alamat_inspeksi = $alamat_inspeksi['address'] ?? '-'; + + + // ambil data dari table penilai + $fieldPenilai = ['lpj', 'resume', 'memo', 'rap', 'call-report']; $penilaiCek = null; - // Find the first available field in the array + // Cari field yang tersedia foreach ($fieldPenilai as $value) { if (!empty($row->penilai->$value)) { $penilaiCek = $row->penilai->$value; @@ -71,6 +85,39 @@ class LaporanPenilaiJaminanExport implements FromQuery, WithHeadings, WithMappin } $decodePenilai = json_decode($penilaiCek, true) ?? []; + // Ambil nilai utama + $luasTanah = $decodePenilai['luas_tanah'] ?? 0; + $nilaiTanah1 = $decodePenilai['nilai_tanah_1'] ?? 0; + $luasBangunan = $decodePenilai['luas_bangunan'] ?? 0; + $nilaiBangunan1 = $decodePenilai['nilai_bangunan_1'] ?? 0; + $totalNilaiPasar = $decodePenilai['total_nilai_pasar_wajar'] ?? 0; + $likuidasi = $decodePenilai['likuidasi'] ?? 0; + + // Ambil data npw_tambahan jika ada + $npwTambahan = $decodePenilai['npw_tambahan'] ?? []; + $tambahanDetails = []; + foreach ($npwTambahan as $tambahan) { + $tambahanDetails[] = sprintf( + '%s: Luas: %s, Nilai 1: %s, Nilai 2: %s', + $tambahan['name'] ?? '-', + $tambahan['luas'] ?? 0, + $tambahan['nilai_1'] ?? 0, + $tambahan['nilai_2'] ?? 0 + ); + } + $tambahanSummary = implode("; ", $tambahanDetails); + + // Ambil data penilaian dari table penilaian + $user_penilai = $row->penilaian->userPenilai ?? null; + $user_penilai_name = null; + foreach ($user_penilai as $value) { + if ($value->role == 'penilai') { + $user_penilai_name = $value->user->name; + $nik_penilai = $value->user->nik ?? '-'; + break; + } + } + return [ $row->id, @@ -80,27 +127,28 @@ class LaporanPenilaiJaminanExport implements FromQuery, WithHeadings, WithMappin $row->tujuanPenilaian->name, $row->debiture->name, $row->penilai->type_penilai ?? '-', - '-', - $decodePenilai['luas_tanah'] ?? 0, - $decodePenilai['luas_bangunan'] ?? 0, - $decodePenilai['nilai_tanah_1'] ?? 0, - $decodePenilai['nilai_bangunan_1'] ?? 0, - $decodePenilai['total_nilai_pasar_wajar'] ?? 0, - $decodePenilai['likuidasi'] ?? 0, - $row->authorized_at, - $row->authorized_status ?? '-', - $row->authorized_by ?? '-', + $alamat_inspeksi ?? '-', + $luasTanah, + $luasBangunan, + $nilaiTanah1, + $nilaiBangunan1, + $totalNilaiPasar, + $likuidasi, + $row->laporan->created_at ?? '-', + $user_penilai_name, + $nik_penilai, $row->created_at, ]; } + public function headings(): array { return [ 'ID', 'Nomor Registrasi', 'User Pemohon', - 'Branch Pemohon', + 'Cabang', 'Tujuan Penilaian', 'Debitur', 'Jenis Laporan', @@ -114,6 +162,7 @@ class LaporanPenilaiJaminanExport implements FromQuery, WithHeadings, WithMappin 'Tanggal Laporan', 'Nama Penilai', 'Nik Penilai', + 'Created At', ]; } public function columnFormats(): array diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 0759b17..5644430 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -248,4 +248,15 @@ { return $this->belongsTo(LaporanExternal::class,'id','permohonan_id'); } + + + public function laporan() + { + return $this->belongsTo(Laporan::class,'id','permohonan_id'); + } + + public function inspeksi(){ + return $this->belongsTo(Inspeksi::class, 'permohonan_id'); + } + }