fix(dokumen): perbaiki logika penyimpanan dan penghapusan dokumen jaminan
- Memperbaiki penyimpanan dokumen baru yang diupload. - Menangani penghapusan dokumen dari storage jika file dihapus. - Menambahkan logika untuk memperbarui nomor dokumen yang tidak diubah. - Memastikan detail dokumen yang diupload disimpan dengan benar. - Menambahkan tombol untuk menghapus input file jika lebih dari satu.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -307,7 +307,9 @@
|
||||
<i class="ki-filled ki-cloud-download"></i>
|
||||
</a>
|
||||
</span>
|
||||
@if($loop->index > 0)
|
||||
<button type="button" class="flex-none btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@if($detail->details)
|
||||
|
||||
Reference in New Issue
Block a user