From c4bb3bea280e678909d16b247ed380c78b109a7b Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Sun, 21 Sep 2025 21:17:19 +0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7(backend):=20Perbaikan=20&=20optima?= =?UTF-8?q?si=20controller=20serta=20view=20untuk=20modul=20penilai=20dan?= =?UTF-8?q?=20surveyor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - PenilaiController: tambah eager loading relasi `penawaran` untuk kurangi N+1 query - RegistrasiFinalController: ubah filter status dari `spk` → `registrasi-final` - SurveyorController: perbaiki pengecekan jenisPenilaian dengan `in_array` (support External/Eksternal, case-insensitive) - SurveyorController: ubah field `tanggal_laporan` → `tgl_final_laporan` sesuai DB baru - SurveyorController: sanitasi koordinat lat/lon dengan menghapus koma untuk valid format - SurveyorController: perbaiki exception handling (`Exeception` → `\Exception`, `$th` → `$e`, tambah namespace lengkap) - SurveyorController: konsistensi penggunaan `Auth::user()` alih-alih `auth()->user()` - View pembayaran/index.blade.php: tambahkan safe navigation `data.debiture?.name` untuk hindari null error - View penilai/index.blade.php: cleanup baris kosong & perbaiki logika status pakai `data.penawaran?.status` --- app/Http/Controllers/PenilaiController.php | 3 +- .../Controllers/RegistrasiFinalController.php | 2 +- app/Http/Controllers/SurveyorController.php | 29 +++++++++++-------- resources/views/pembayaran/index.blade.php | 2 +- resources/views/penilai/index.blade.php | 11 +++---- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 4251a3e..0116e9b 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -622,7 +622,8 @@ class PenilaiController extends Controller 'jenisfasilitasKredit', 'penilaian.userPenilai', 'penilai', - 'nilaiPlafond' + 'nilaiPlafond', + 'penawaran' ])->get(); // Calculate the page count diff --git a/app/Http/Controllers/RegistrasiFinalController.php b/app/Http/Controllers/RegistrasiFinalController.php index e7b17b2..b01b204 100644 --- a/app/Http/Controllers/RegistrasiFinalController.php +++ b/app/Http/Controllers/RegistrasiFinalController.php @@ -49,7 +49,7 @@ $query =PenawaranTender::query() ->select('penawaran.*', 'tujuan_penilaian_kjpp.name as tujuan_penilaian_kjpp_name') ->leftJoin('tujuan_penilaian_kjpp', 'tujuan_penilaian_kjpp.id','=','penawaran.tujuan_penilaian_kjpp_id') - ->where('penawaran.status','=','spk') + ->where('penawaran.status','=','registrasi-final') ->withCount('penawarandetails'); // Apply search filter if provided diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 9e76a1a..7da0728 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -794,12 +794,12 @@ class SurveyorController extends Controller ]); - if ($permohonan->jenisPenilaian->name == "External") { + if (in_array(strtolower($permohonan->jenisPenilaian->name), ['external', 'eksternal'])) { LaporanExternal::updateOrCreate( ['permohonan_id' => $permohonan->id], [ 'nomor_laporan' => $permohonan->nomor_registrasi, - 'tanggal_laporan' => now(), + 'tgl_final_laporan' => now(), 'created_by' => Auth::id(), ] ); @@ -1396,6 +1396,11 @@ class SurveyorController extends Controller } public function storeDataPembanding(Request $request) { + $request->merge([ + 'kordinat_lat' => $request->get('kordinat_lat') ? str_replace(',', '', $request->get('kordinat_lat')) : null, + 'kordinat_lng' => $request->get('kordinat_lng') ? str_replace(',', '', $request->get('kordinat_lng')) : null, + ]); + try { DB::beginTransaction(); @@ -1847,10 +1852,10 @@ class SurveyorController extends Controller return redirect() ->route('basicdata.' . $type . '.index') ->with('success', 'created successfully'); - } catch (Exeception $e) { + } catch (\Exception $e) { return redirect() ->route('basicdata.' . $type . '.index') - ->with('error', $th->getMessage()); + ->with('error', $e->getMessage()); } } } @@ -2116,7 +2121,7 @@ class SurveyorController extends Controller public function dataForDatatablesData(Request $request, $type) { - if (is_null(auth()->user()) || !$this->user->can('jenis_aset.view')) { + if (is_null(Auth::user()) || !$this->user->can('jenis_aset.view')) { //abort(403, 'Sorry! You are not allowed to view users.'); } @@ -2156,7 +2161,7 @@ class SurveyorController extends Controller if (array_key_exists($type, $models)) { $query = $models[$type]::query(); } else { - throw new InvalidArgumentException("Invalid type: $type"); + throw new \InvalidArgumentException("Invalid type: $type"); } if ($request->has('search') && !empty($request->get('search'))) { @@ -2229,9 +2234,9 @@ class SurveyorController extends Controller $model = $modelClass::findOrFail($id); $model->delete(); return response()->json(['success' => true, 'message' => 'deleted successfully']); - } catch (ModelNotFoundException $e) { + } catch (\Illuminate\Database\Eloquent\ModelNotFoundException $e) { return response()->json(['success' => false, 'message' => 'not found.'], 404); - } catch (Exception $e) { + } catch (\Exception $e) { return response()->json(['success' => false, 'message' => 'Failed to delete.'], 500); } } @@ -2387,14 +2392,14 @@ class SurveyorController extends Controller $path = $file->storeAs("public/surveyor/{$request->type}", $fileName); if ($path === false) { - throw new Exception("Failed to store file for {$fileKey}"); + throw new \Exception("Failed to store file for {$fileKey}"); } if (isset($data[$fileKey]) && $data[$fileKey]) { $this->deleteFile($data[$fileKey]); } return str_replace('public/', '', $path); } else { - throw new Exception("Invalid file upload for {$fileKey}"); + throw new \Exception("Invalid file upload for {$fileKey}"); } } elseif (isset($data[$fileKey]) && $data[$fileKey]) { return $data[$fileKey]; @@ -2423,14 +2428,14 @@ class SurveyorController extends Controller public function uploadFile($file, $type) { if (!$file->isValid()) { - throw new Exception("Invalid file upload for {$type}"); + throw new \Exception("Invalid file upload for {$type}"); } $fileName = time() . '_' . $file->getClientOriginalName(); $path = $file->storeAs("public/surveyor/{$type}", $fileName); if ($path === false) { - throw new Exception("Failed to store file for {$type}"); + throw new \Exception("Failed to store file for {$type}"); } return str_replace('public/', '', $path); diff --git a/resources/views/pembayaran/index.blade.php b/resources/views/pembayaran/index.blade.php index 3e3512e..fc4af62 100644 --- a/resources/views/pembayaran/index.blade.php +++ b/resources/views/pembayaran/index.blade.php @@ -195,7 +195,7 @@ debitur_id: { title: 'Debitur', render: (item, data) => { - return `${data.debiture.name}`; + return `${data.debiture?.name}`; }, }, status_bayar: { diff --git a/resources/views/penilai/index.blade.php b/resources/views/penilai/index.blade.php index 4c90b18..eac1cf4 100644 --- a/resources/views/penilai/index.blade.php +++ b/resources/views/penilai/index.blade.php @@ -218,9 +218,6 @@ } } - - - return formatDate(waktu_penilaian); }, @@ -228,7 +225,11 @@ status: { title: 'Status', render: (item, data) => { - return `${data.status.replace(/-/g, ' ')}`; + if (data.penawaran) { + return `${data.penawaran?.status.replace(/-/g, ' ')}`; + } + + //return `${data.status.replace(/-/g, ' ')}`; }, }, actions: { @@ -238,7 +239,7 @@ .status === 'paparan' || data.status === 'proses-paparan' || data.status === 'paparan' || data.status == 'revisi-laporan' || data.status === 'done' || data .status === 'revisi-paparan' || data.status === 'unfreeze-sla' || data.status === - 'reject-freeze') { + 'reject-freeze' || data.penawaran?.status === 'registrasi-final') { return `