From 145b677dbc36fa78514a205babe8c784aa280fcc Mon Sep 17 00:00:00 2001 From: majid Date: Fri, 20 Dec 2024 16:08:11 +0700 Subject: [PATCH 1/2] perbaikan submit surveyor tidak bisa submit --- app/Http/Controllers/SurveyorController.php | 23 ++++++++++----------- app/Models/Inspeksi.php | 9 ++------ 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 2d1be44..ed42275 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -465,7 +465,9 @@ class SurveyorController extends Controller { try { // Get all inspeksi records for this permohonan - $inspeksiRecords = Inspeksi::where('permohonan_id', $id)->get(); + $inspeksiRecords = Inspeksi::with(['dokument.jenisJaminan']) + ->where('permohonan_id', $id) + ->get(); if ($inspeksiRecords->isEmpty()) { return response()->json(['buttonDisable' => true]); @@ -477,23 +479,20 @@ class SurveyorController extends Controller $denahForm = json_decode($inspeksi->denah_form, true); $dataPembanding = json_decode($inspeksi->data_pembanding, true); - // Get jenis jaminan to check if it needs denah - $jenisJaminan = JenisJaminan::find($inspeksi->dokument_id); + $jenisJaminan = $inspeksi->dokument->jenisJaminan->name ?? ''; + $isTanahBangunan = !in_array( strtoupper($jenisJaminan->name ?? ''), ['KAPAL', 'PESAWAT', 'KENDARAAN', 'ALAT BERAT'] ); - // Check if required forms are empty or incomplete - if (empty($dataForm) || empty($fotoForm)) { - return response()->json(['buttonDisable' => true]); - } + $isInvalid = + empty($dataForm) || + empty($fotoForm) || + (($isTanahBangunan && empty($denahForm)) || + empty($dataPembanding)); - if ($isTanahBangunan && empty($denahForm)) { - return response()->json(['buttonDisable' => true]); - } - - if (empty($dataPembanding)) { + if ($isInvalid) { return response()->json(['buttonDisable' => true]); } } diff --git a/app/Models/Inspeksi.php b/app/Models/Inspeksi.php index 32e9c90..e6d253d 100644 --- a/app/Models/Inspeksi.php +++ b/app/Models/Inspeksi.php @@ -21,13 +21,8 @@ class Inspeksi extends Model return $this->belongsTo(Permohonan::class, 'permohonan_id'); } - public function jenis_jaminan() + public function dokument() { - return $this->belongsTo(JenisJaminan::class, 'jenis_jaminan_id'); + return $this->belongsTo(DokumenJaminan::class, 'dokument_id'); } - - // protected static function newFactory(): InspeksiFactory - // { - // // return InspeksiFactory::new(); - // } } From 01408bbac3142572256784f51645175e372e4138 Mon Sep 17 00:00:00 2001 From: majid Date: Fri, 20 Dec 2024 16:25:54 +0700 Subject: [PATCH 2/2] perbaikan foto objek jaminan ketika di update tidak hilang --- app/Http/Controllers/SurveyorController.php | 51 +++++++++++++-------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index ed42275..f344f13 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -305,15 +305,19 @@ class SurveyorController extends Controller $formatFotojson = $existingData; - // Process each photo category foreach ($photoCategories as $category => $fields) { - // Only update if new files are provided - if ($this->categoryHasNewFiles($request, $fields)) { - // Delete old files for this category only - if (isset($existingData[$category])) { - $this->deleteFilesForCategory($existingData[$category]); - } - $formatFotojson[$category] = $this->processPhotoCategory($request, $fields); + $photoField = $fields[0]; + $nameField = $fields[1]; + $descriptionField = $fields[2] ?? null; + + if ($request->hasFile($photoField)) { + $newPhotos = $this->processPhotoCategory( + $request, + $fields, + $existingData[$category] ?? [] + ); + + $formatFotojson[$category] = $newPhotos; } } @@ -342,29 +346,40 @@ class SurveyorController extends Controller /** * Process a photo category and its subcategories */ - - private function processPhotoCategory(Request $request, array $fields) + private function processPhotoCategory(Request $request, array $fields, array $existingPhotos = []) { - $result = []; + $result = $existingPhotos; // Start with existing photos $photoField = $fields[0]; + $nameField = $fields[1]; + $descriptionField = $fields[2] ?? null; if ($request->hasFile($photoField)) { - foreach ($request->file($photoField, []) as $key => $value) { - $item = []; - $item[$fields[1]] = $request->input($fields[1] . '.' . $key); - $item[$photoField] = $this->uploadFile($value, $photoField . '.' . $key); + $newFiles = $request->file($photoField, []); + $newNames = $request->input($nameField, []); + $newDescriptions = $descriptionField ? $request->input($descriptionField, []) : []; - if (isset($fields[2])) { - $item[$fields[2]] = $request->input($fields[2] . '.' . $key); + // Process each new file + foreach ($newFiles as $key => $file) { + // Create new photo entry + $newPhotoEntry = [ + $nameField => $newNames[$key] ?? '', // Use new name if provided + $photoField => $this->uploadFile($file, $photoField . '.' . $key) + ]; + + // Add description if field exists + if ($descriptionField) { + $newPhotoEntry[$descriptionField] = $newDescriptions[$key] ?? ''; } - $result[] = $item; + // Add to result + $result[] = $newPhotoEntry; } } return $result; } + private function categoryHasNewFiles(Request $request, array $fields): bool { $photoField = $fields[0]; // First element is usually the photo field