fix(dokumen): perbaiki logika penyimpanan dokumen jaminan

- Tambahkan pengecekan untuk menentukan apakah semua file telah dihapus.
- Sesuaikan logika penyimpanan dokumen dan nomor dokumen berdasarkan kondisi file yang ada.
- Perbaiki tampilan tombol hapus file agar selalu ditampilkan.
This commit is contained in:
Daeng Deni Mardaeni
2025-03-11 10:48:35 +07:00
parent ce792474c6
commit 059f58842e
2 changed files with 17 additions and 8 deletions

View File

@@ -290,8 +290,11 @@
$newDokumenJaminan = []; $newDokumenJaminan = [];
$newDokumenNomor = []; $newDokumenNomor = [];
$allFilesDeleted = true;
foreach ($existingDokumen as $index => $existingFile) { foreach ($existingDokumen as $index => $existingFile) {
if (isset($request->dokumen_jaminan[$key][$index])) { if (isset($request->dokumen_jaminan[$key][$index])) {
$allFilesDeleted = false;
$file = $request->dokumen_jaminan[$key][$index]; $file = $request->dokumen_jaminan[$key][$index];
if ($file instanceof \Illuminate\Http\UploadedFile) { if ($file instanceof \Illuminate\Http\UploadedFile) {
// File baru diupload // File baru diupload
@@ -304,7 +307,6 @@
$newDokumenJaminan[] = $existingFile; $newDokumenJaminan[] = $existingFile;
$newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? $existingNomor[$index]; $newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? $existingNomor[$index];
} }
// Jika $file adalah null, berarti file dihapus dan tidak perlu ditambahkan ke array baru
} else { } else {
// File dihapus, hapus dari storage jika ada // File dihapus, hapus dari storage jika ada
if (Storage::exists('public/' . $existingFile)) { if (Storage::exists('public/' . $existingFile)) {
@@ -313,12 +315,10 @@
} }
} }
//dd($request->dokumen_jaminan[$key]);
// Tambahkan file baru yang mungkin ditambahkan // Tambahkan file baru yang mungkin ditambahkan
foreach ($request->dokumen_jaminan[$key] ?? [] as $index => $file) { foreach ($request->dokumen_jaminan[$key] ?? [] as $index => $file) {
if ($file instanceof UploadedFile) { if ($file instanceof UploadedFile) {
$allFilesDeleted = false;
$file_name = $file->getClientOriginalName(); $file_name = $file->getClientOriginalName();
$path = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; $path = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
if (!in_array($path, $newDokumenJaminan)) { if (!in_array($path, $newDokumenJaminan)) {
@@ -327,19 +327,29 @@
$newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-'; $newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-';
} }
} elseif (is_string($file) && !empty($file) && !in_array($file, $newDokumenJaminan)) { } elseif (is_string($file) && !empty($file) && !in_array($file, $newDokumenJaminan)) {
$allFilesDeleted = false;
$newDokumenJaminan[] = $file; $newDokumenJaminan[] = $file;
$newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-'; $newDokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-';
} }
} }
$dokumenJaminan = $newDokumenJaminan; if ($allFilesDeleted) {
$dokumenNomor = $newDokumenNomor; $dokumenJaminan = [];
$dokumenNomor = [];
} else {
$dokumenJaminan = $newDokumenJaminan;
$dokumenNomor = $newDokumenNomor;
}
} }
if (!empty($dokumenJaminan)) { if (!empty($dokumenJaminan)) {
$detailData['dokumen_jaminan'] = json_encode($dokumenJaminan); $detailData['dokumen_jaminan'] = json_encode($dokumenJaminan);
$detailData['dokumen_nomor'] = json_encode($dokumenNomor); $detailData['dokumen_nomor'] = json_encode($dokumenNomor);
} else if(empty($dokumenJaminan)){
$detailData['dokumen_jaminan'] = null;
$detailData['dokumen_nomor'] = null;
} }
if (isset($request->detail_dokumen_jaminan_id[$key])) { if (isset($request->detail_dokumen_jaminan_id[$key])) {

View File

@@ -307,9 +307,8 @@
<i class="ki-filled ki-cloud-download"></i> <i class="ki-filled ki-cloud-download"></i>
</a> </a>
</span> </span>
@if($loop->index > 0)
<button type="button" class="flex-none btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button> <button type="button" class="flex-none btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button>
@endif
</div> </div>
@if($detail->details) @if($detail->details)