diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php
index 90c8000..e46dcec 100644
--- a/app/Http/Controllers/DokumenJaminanController.php
+++ b/app/Http/Controllers/DokumenJaminanController.php
@@ -225,58 +225,64 @@
$document = DokumenJaminan::find($jaminan);
$document->update($validate);
+ // Get existing detail documents
+ $existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy('id');
+
if($request->jenis_legalitas_jaminan_id){
foreach($request->jenis_legalitas_jaminan_id as $key => $value){
- if (isset($request->dokumen_jaminan[$key])) {
- $file = $request->dokumen_jaminan[$key];
- if ($file) {
- $file_name = $file->getClientOriginalName();
- }
+ $detailData = [
+ 'dokumen_jaminan_id' => $document->id,
+ 'jenis_legalitas_jaminan_id' => $value,
+ 'name' => $request->name[$key],
+ 'keterangan' => $request->keterangan[$key],
+ ];
- if (isset($file_name)) {
- $file->storeAs(
- 'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
- $file_name,
- );
-
- $detail = [
- 'dokumen_jaminan_id' => $document->id,
- 'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key],
- 'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name,
- 'name' => $request->name[$key],
- 'keterangan' => $request->keterangan[$key],
- ];
-
- if (isset($request->detail_dokumen_jaminan_id[$key])) {
- $detailDocument = DetailDokumenJaminan::find(
- $request->detail_dokumen_jaminan_id[$key],
+ $dokumenJaminan = [];
+ if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
+ foreach($request->dokumen_jaminan[$key] as $file) {
+ if ($file) {
+ $file_name = $file->getClientOriginalName();
+ $file->storeAs(
+ 'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
+ $file_name
);
-
- $detailDocument->update($detail);
- $detailDocument->save();
- } else {
- $detailDocument = DetailDokumenJaminan::create($detail);
- $detailDocument->save();
+ $dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
}
}
- } else {
- $detail = [
- 'dokumen_jaminan_id' => $document->id,
- 'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key],
- 'name' => $request->name[$key],
- 'keterangan' => $request->keterangan[$key],
- ];
+ }
- if (isset($request->detail_dokumen_jaminan_id[$key])) {
- $detailDocument = DetailDokumenJaminan::find(
- $request->detail_dokumen_jaminan_id[$key],
- );
- $detailDocument->update($detail);
+ if (!empty($dokumenJaminan)) {
+ $detailData['dokumen_jaminan'] = json_encode($dokumenJaminan);
+ }
+
+ if (isset($request->detail_dokumen_jaminan_id[$key])) {
+ $detailId = $request->detail_dokumen_jaminan_id[$key];
+ $detailDocument = $existingDetails->get($detailId);
+ if ($detailDocument) {
+ // Merge new files with existing ones
+ if (!empty($dokumenJaminan)) {
+ $existingFiles = json_decode($detailDocument->dokumen_jaminan, true) ?: [];
+ $mergedFiles = array_merge($existingFiles, $dokumenJaminan);
+ $detailData['dokumen_jaminan'] = json_encode($mergedFiles);
+ }
+ $detailDocument->update($detailData);
+ $existingDetails->forget($detailId);
}
+ } else {
+ DetailDokumenJaminan::create($detailData);
}
}
}
+ // Delete any remaining existing details that weren't updated
+ foreach ($existingDetails as $detail) {
+ $files = json_decode($detail->dokumen_jaminan, true) ?: [];
+ foreach ($files as $file) {
+ Storage::delete('public/' . $file);
+ }
+ $detail->delete();
+ }
+
DB::commit();
return redirect()->route('debitur.jaminan.index', $id)->with(
'success',
@@ -436,8 +442,8 @@
$existingLegalitas[] = [
'id' => $detail->id,
'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id,
- 'name' => $detail->name,
- 'dokumen_jaminan' => $detail->dokumen_jaminan,
+ 'name' => $detail->jenisLegalitasJaminan->name,
+ 'dokumen_jaminan' => json_decode($detail->dokumen_jaminan) ?? $detail->dokumen_jaminan,
'custom_field' => $detail->jenisLegalitasJaminan->custom_field,
'custom_field_type' => $detail->jenisLegalitasJaminan->custom_field_type,
'details' => $detail->details,
diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php
index be5c1c0..7e649a0 100644
--- a/resources/views/debitur/components/dokumen.blade.php
+++ b/resources/views/debitur/components/dokumen.blade.php
@@ -167,8 +167,16 @@
@if(isset($detail->dokumen_jaminan))
- {{ basename($detail->dokumen_jaminan) }}
-
+ @php
+ $dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan];
+ @endphp
+ @foreach($dokumen_jaminan as $index => $dokumen)
+
+ {{ basename($dokumen) }}
+
+
+ @endforeach
@endif
@@ -527,6 +535,25 @@
.catch(error => console.error('Error:', error));
}
+ function renderExistingFiles(dokumenJaminan, debiturId, itemId) {
+ if (typeof dokumenJaminan === 'string') {
+ return `
+
+ ${dokumenJaminan.split('/').pop()}
+
+
+ `;
+ } else if (Array.isArray(dokumenJaminan)) {
+ return dokumenJaminan.map(file => `
+
+ ${file.split('/').pop()}
+
+
+ `).join('');
+ }
+ return '';
+ }
+
function addFileInput(index) {
const container = document.getElementById(`file-container-${index}`);
const newInput = document.createElement('div');