diff --git a/app/Exports/LaporanHasilPenilaianJaminanInternalExternalExport.php b/app/Exports/LaporanHasilPenilaianJaminanInternalExternalExport.php index 9d3efa2..b30e800 100644 --- a/app/Exports/LaporanHasilPenilaianJaminanInternalExternalExport.php +++ b/app/Exports/LaporanHasilPenilaianJaminanInternalExternalExport.php @@ -41,6 +41,13 @@ $query->where('branch_id', $this->request->branch_id); } + if ($this->request->has('penilai_id') && !empty($this->request->penilai_id)) { + $request = $this->request; // Store in a local variable + $query->whereHas('penilaian._user_penilai.userPenilaiTeam', function($q) use ($request) { + $q->where('user_id', $request->penilai_id); + }); + } + // Apply search filter if provided if ($this->request->has('search') && !empty($this->request->search)) { $search = $this->request->search; @@ -256,7 +263,16 @@ $sheet->getStyle($headerRange)->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor()->setARGB('FFCCCCCC'); - + + // Auto-size columns - fixed to handle columns beyond Z + $highestColumn = $sheet->getHighestColumn(); + $highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn); + + for ($i = 1; $i <= $highestColumnIndex; $i++) { + $currentColumn = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($i); + $sheet->getColumnDimension($currentColumn)->setAutoSize(true); + } + // Add borders to all cells with data $dataRange = 'A7:' . $sheet->getHighestColumn() . $sheet->getHighestRow(); $sheet->getStyle($dataRange)->getBorders()->getAllBorders()->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN); diff --git a/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php b/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php index 2d31cd2..91ef5d5 100644 --- a/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php +++ b/app/Http/Controllers/LaporanHasilPenilaianJaminanInternalExternalController.php @@ -46,6 +46,12 @@ $query->where('branch_id', $search->branch_id); } + if (isset($search->penilai_id) && !empty($search->penilai_id)) { + $query->whereHas('penilaian._user_penilai.userPenilaiTeam', function($q) use ($search) { + $q->where('user_id', $search->penilai_id); + }); + } + if (isset($search->search)) { $query->where(function ($q) use ($search) { @@ -110,25 +116,25 @@ return [ 'id' => $permohonan->id, 'nomor_registrasi' => $permohonan->nomor_registrasi, - 'jenis_penilaian' => $permohonan->jenisPenilaian->name, - 'tujuan_penilaian' => $permohonan->tujuanPenilaian->name, - 'jenis_fasilitas_kredit' => $permohonan->jenisFasilitasKredit->name, - 'branch' => $permohonan->debiture->branch->name, - 'pemohon' => $permohonan->creator->name, + 'jenis_penilaian' => $permohonan->jenisPenilaian?->name, + 'tujuan_penilaian' => $permohonan->tujuanPenilaian?->name, + 'jenis_fasilitas_kredit' => $permohonan->jenisFasilitasKredit?->name, + 'branch' => $permohonan->debiture->branch?->name, + 'pemohon' => $permohonan->creator?->name, 'cif' => $permohonan->debiture->cif, - 'name' => $permohonan->debiture->name, - 'jenis_agunan' => $permohonan->documents->pluck('jenisJaminan.name')->unique()->implode(', '), - 'alamat_agunan' => $permohonan->documents->map(function ($document) { + 'name' => $permohonan->debiture?->name, + 'jenis_agunan' => $permohonan->documents?->pluck('jenisJaminan.name')->unique()->implode(', '), + 'alamat_agunan' => $permohonan->documents?->map(function ($document) { return formatAlamat($document); })->unique()->implode(', '), - 'bukti_kepemilikan' => $permohonan->documents->flatMap(function ($document) { + 'bukti_kepemilikan' => $permohonan->documents?->flatMap(function ($document) { return $document->detail->map(function ($detail) { return (!empty($detail->dokumen_nomor) && is_array($detail->dokumen_nomor)) ? ($detail->jenisLegalitasJaminan->name ?? '') . "\n" . implode(', ', $detail->dokumen_nomor) : null; }); })->filter()->unique()->implode(', '), - 'nama_pemilik' => $permohonan->documents->pluck('pemilik.name')->unique()->implode(', '), + 'nama_pemilik' => $permohonan->documents?->pluck('pemilik.name')->unique()->implode(', '), 'luas_tanah' => $luas_tanah . ' m²', 'nilai_tanah' => formatRupiah($nilai_tanah,2), 'luas_bangunan' => $luas_bangunan . ' m²', @@ -136,7 +142,7 @@ 'nilai_njop' => formatRupiah($permohonan->nilai_njop,2), 'nilai_pasar_wajar' => formatRupiah($npw,2), 'nilai_likuidasi' => formatRupiah($nilai_liquidasi,2), - 'tanggal_documen_diterima' => $permohonan->documents->map(function ($document) { + 'tanggal_documen_diterima' => $permohonan->documents?->map(function ($document) { return $document->created_at->format('d-m-Y'); }), 'tanggal_spk' => '', @@ -145,15 +151,15 @@ 'tanggal_kunjungan' => '', 'taggal_delivered' => '', 'jangka_waktu_sla' => '', - 'nama_penilai' => $permohonan->penilaian->_user_penilai->userPenilaiTeam->name, - 'nama_team_leader' => $permohonan->penilaian->teams, + 'nama_penilai' => $permohonan->penilaian?->_user_penilai?->userPenilaiTeam?->name, + 'nama_team_leader' => $permohonan->penilaian?->teams, 'saran' => '', 'catatan' => '', 'tanggal_permohonan' => $permohonan->tanggal_permohonan, 'tanggal_laporan' => $permohonan->approval_dd_at ?? $permohonan->approval_eo_at ?? '', - 'tanggal_review' => $permohonan->penilaian->tanggal_kunjungan ?? '', + 'tanggal_review' => $permohonan->penilaian?->tanggal_kunjungan ?? '', ]; }); diff --git a/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php b/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php index 2646fa9..7ac129b 100644 --- a/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php +++ b/resources/views/laporan_hasil_penilaian_jaminan_internal_external/index.blade.php @@ -6,44 +6,75 @@ @section('content')