diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index d7bd597..b3d2398 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -9,6 +9,7 @@ use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; + use Illuminate\Http\UploadedFile; use Log; use Modules\Location\Models\City; use Modules\Location\Models\District; @@ -249,7 +250,7 @@ 'jenis_legalitas_jaminan_id' => $value, 'name' => $request->name[$key], 'keterangan' => $request->keterangan[$key], - 'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '' + 'details' => isset($request->custom_field[$key]) ? json_encode(array_values($request->custom_field[$key])) : '' ]; $dokumenJaminan = []; @@ -279,7 +280,6 @@ } - // Setelah loop, periksa apakah ada dokumen yang dihapus $existingDetail = $existingDetails->get($request->detail_dokumen_jaminan_id[$key] ?? null); @@ -287,26 +287,53 @@ $existingDokumen = json_decode($existingDetail->dokumen_jaminan, true) ?? []; $existingNomor = json_decode($existingDetail->dokumen_nomor, true) ?? []; + $newDokumenJaminan = []; + $newDokumenNomor = []; - - // Jika jumlah dokumen berkurang, berarti ada yang dihapus - if (count($existingDokumen) > count($dokumenJaminan)) { - $dokumenJaminan = $existingDokumen; - $dokumenNomor = $existingNomor; - foreach ($request->dokumen_jaminan[$key] as $index => $file) { - if ($file === null) { - // Hapus dokumen yang tidak ada lagi - unset($dokumenJaminan[$index]); - unset($dokumenNomor[$index]); + foreach ($existingDokumen as $index => $existingFile) { + if (isset($request->dokumen_jaminan[$key][$index])) { + $file = $request->dokumen_jaminan[$key][$index]; + if ($file instanceof \Illuminate\Http\UploadedFile) { + // File baru diupload + $file_name = $file->getClientOriginalName(); + $file->storeAs('public/jaminan/' . $debitur->id . '/' . $document->id . '/', $file_name); + $newDokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; + $newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-'; } elseif (is_string($file) && !empty($file)) { - // Update nomor dokumen untuk file yang tidak diubah - $dokumenNomor[$index] = $request->dokumen_nomor[$key][$index] ?? '-'; + // File tidak diubah + $newDokumenJaminan[] = $existingFile; + $newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? $existingNomor[$index]; + } + // Jika $file adalah null, berarti file dihapus dan tidak perlu ditambahkan ke array baru + } else { + // File dihapus, hapus dari storage jika ada + if (Storage::exists('public/' . $existingFile)) { + Storage::delete('public/' . $existingFile); } } - // Reset array keys - $dokumenJaminan = array_values($dokumenJaminan); - $dokumenNomor = array_values($dokumenNomor); } + + //dd($request->dokumen_jaminan[$key]); + + // Tambahkan file baru yang mungkin ditambahkan + foreach ($request->dokumen_jaminan[$key] ?? [] as $index => $file) { + + if ($file instanceof UploadedFile) { + $file_name = $file->getClientOriginalName(); + $path = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; + if (!in_array($path, $newDokumenJaminan)) { + $file->storeAs('public/' . dirname($path), $file_name); + $newDokumenJaminan[] = $path; + $newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-'; + } + } elseif (is_string($file) && !empty($file) && !in_array($file, $newDokumenJaminan)) { + $newDokumenJaminan[] = $file; + $newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-'; + } + } + + $dokumenJaminan = $newDokumenJaminan; + $dokumenNomor = $newDokumenNomor; } diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 2debb71..5179f00 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -307,7 +307,9 @@ + @if($loop->index > 0) + @endif @if($detail->details)