diff --git a/app/Http/Controllers/PenilaiController.php b/app/Http/Controllers/PenilaiController.php index 0c42578..3917272 100644 --- a/app/Http/Controllers/PenilaiController.php +++ b/app/Http/Controllers/PenilaiController.php @@ -656,7 +656,7 @@ class PenilaiController extends Controller 'lpjData', 'formFoto', 'basicData', - 'inspeksi', + 'inspeksi', 'lpj', 'statusLpj', 'alamat', diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index ba884f4..ec6516d 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -384,44 +384,48 @@ class SurveyorController extends Controller return $result; } - private function processFotoLantaiUnit(Request $request) + public function replaceFotoLantaiUnit(Request $request) { - $processedFotoLantaiUnit = []; - - // Ambil semua file foto lantai unit - $fotoLantaiUnit = $request->file('foto_lantai_unit', []); - - foreach ($fotoLantaiUnit as $lantaiKey => $files) { - $processedFiles = []; - - foreach ($files as $index => $file) { + // Pastikan foto lantai unit ada dalam request + if ($request->has('foto_lantai_unit')) { + $fotoLantaiUnit = $request->file('foto_lantai_unit', []); + + // Target lantai dan foto yang ingin diubah + $lantaiKey = $request->input('lantai_key'); // Misal: 1 + $indexToReplace = $request->input('index'); // Misal: 0 + + // Cek jika lantaiKey ada dan file yang akan diganti ada + if (isset($fotoLantaiUnit[$lantaiKey]) && isset($fotoLantaiUnit[$lantaiKey][$indexToReplace])) { + $file = $fotoLantaiUnit[$lantaiKey][$indexToReplace]; + // Pastikan file valid if ($file && $file->isValid()) { - // Generate unique filename - $filename = $this->generateUniqueFileName($file, "lantai_unit_{$lantaiKey}_{$index}"); - - $processedFiles[] = [ - 'path' => $this->uploadFile($file, $filename . '.' . $index), - 'name' => "Foto Lantai {$lantaiKey} - " . ($index + 1), + // Generate filename baru untuk foto yang diganti + $filename = $this->generateUniqueFileName($file, "lantai_unit_{$lantaiKey}_{$indexToReplace}"); + + // Gantikan foto yang lama dengan yang baru + $processedFoto = [ + 'path' => $this->uploadFile($file, $filename . '.' . $file->getClientOriginalExtension()), + 'name' => "Foto Lantai {$lantaiKey} - " . ($indexToReplace + 1), ]; + + // Update foto lantai unit yang sudah diproses + $fotoLantaiUnit[$lantaiKey][$indexToReplace] = $processedFoto; } } - - // Simpan file yang diproses dengan kunci lantai - if (!empty($processedFiles)) { - $processedFotoLantaiUnit[$lantaiKey] = $processedFiles; - } } - - return $processedFotoLantaiUnit; + + // Kembalikan data foto lantai unit yang sudah diperbarui + return response()->json(['foto_lantai_unit' => $fotoLantaiUnit]); } -// Fungsi helper untuk generate nama file unik -private function generateUniqueFileName($file, $prefix = '') -{ - $extension = $file->getClientOriginalExtension(); - return $prefix . '_' . uniqid() . '.' . $extension; -} + + // Fungsi helper untuk generate nama file unik + private function generateUniqueFileName($file, $prefix = '') + { + $extension = $file->getClientOriginalExtension(); + return $prefix . '_' . uniqid() . '.' . $extension; + } private function categoryHasNewFiles(Request $request, array $fields): bool { @@ -476,11 +480,11 @@ private function generateUniqueFileName($file, $prefix = '') 'name_basement.*' => 'nullable|string|max:255', 'foto_gerbang' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,webp,bmp,tiff,heic,heif|max:'. $maxSize, 'name_gerbang' => 'nullable|string|max:255', - - + + 'name_lantai_unit' => 'array', 'foto_lantai_unit' => 'array', - 'foto_lantai_unit.*' => 'array', + 'foto_lantai_unit.*' => 'array', ]); } @@ -1458,7 +1462,7 @@ private function generateUniqueFileName($file, $prefix = '') $query->whereRaw('LOWER(status) = ?', ['assign']); - if(!Auth::user()->hasRole('administrator')) { + if (!Auth::user()->hasRole('administrator')) { $query->whereHas('penilaian.userPenilai', function ($q) { $q->where('user_id', Auth::user()->id); $q->where('role', 'surveyor'); @@ -1582,7 +1586,7 @@ private function generateUniqueFileName($file, $prefix = '') if ($type == 'Spek Bangunan') { $data = $query->with(['bangunanKategori'])->get(); - }else{ + } else { $data = $query->get(); } diff --git a/resources/views/surveyor/components/foto.blade.php b/resources/views/surveyor/components/foto.blade.php index eb92a0a..9eddfa3 100644 --- a/resources/views/surveyor/components/foto.blade.php +++ b/resources/views/surveyor/components/foto.blade.php @@ -372,97 +372,96 @@ @endforeach @if (isset($formFoto['foto_lantai_unit'])) -
-
-
- - -
+
+
+
+ + +
-
- @foreach ($formFoto['foto_lantai_unit'] as $lantaiKey => $lantaiFotos) -
-
- - -
-
-
- @foreach ($lantaiFotos as $foto) -
- {{ $foto['name'] }} - -
- @endforeach +
+ @foreach ($formFoto['foto_lantai_unit'] as $lantaiKey => $lantaiFotos) +
+
+ + +
+
+
+ @foreach ($lantaiFotos as $foto) + @if (is_array($foto) && isset($foto['path']) && isset($foto['name'])) +
+ {{ $foto['name'] }} + +
+ @else +

Invalid photo data.

+ @endif + @endforeach +
+ + +
+
+ @endforeach +
- -
-
- @endforeach -
-
-
-@else + @else +
+
+
+ + +
- -
-
-
- - -
- -
- -
-
- - -
-
-
- - +
+ +
+
+ + +
+
+
+ + +
-
-@endif + @endif
@@ -602,8 +601,7 @@ @include('lpj::surveyor.js.utils') @push('scripts')