fix(dokumen_jaminan): perbaiki pengambilan dan penyimpanan data dokumen jaminan
- Memperbaiki pengecekan kondisi saat mengambil detail dokumen. - Menambahkan penanganan untuk file yang diupload dan yang tidak diubah. - Memastikan nomor dokumen selalu diperbarui, baik saat file diubah atau tidak. - Menghapus dokumen yang tidak ada lagi dari daftar jika ada perubahan.
This commit is contained in:
@@ -104,7 +104,7 @@
|
|||||||
$file_name,
|
$file_name,
|
||||||
);
|
);
|
||||||
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
||||||
$dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '';
|
$dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -249,7 +249,7 @@
|
|||||||
'jenis_legalitas_jaminan_id' => $value,
|
'jenis_legalitas_jaminan_id' => $value,
|
||||||
'name' => $request->name[$key],
|
'name' => $request->name[$key],
|
||||||
'keterangan' => $request->keterangan[$key],
|
'keterangan' => $request->keterangan[$key],
|
||||||
'details' => isset($request->custom_field[$value]) ? json_encode($request->custom_field[$value]) : ''
|
'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : ''
|
||||||
];
|
];
|
||||||
|
|
||||||
$dokumenJaminan = [];
|
$dokumenJaminan = [];
|
||||||
@@ -257,60 +257,75 @@
|
|||||||
|
|
||||||
if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
|
if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
|
||||||
foreach ($request->dokumen_jaminan[$key] as $index => $file) {
|
foreach ($request->dokumen_jaminan[$key] as $index => $file) {
|
||||||
if ($file) {
|
if ($file instanceof \Illuminate\Http\UploadedFile) {
|
||||||
|
// Jika file baru diupload
|
||||||
$file_name = $file->getClientOriginalName();
|
$file_name = $file->getClientOriginalName();
|
||||||
$file->storeAs(
|
$file->storeAs(
|
||||||
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
'public/jaminan/' . $debitur->id . '/' . $document->id . '/',
|
||||||
$file_name,
|
$file_name,
|
||||||
);
|
);
|
||||||
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
$dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name;
|
||||||
$dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '';
|
} elseif (is_string($file) && !empty($file)) {
|
||||||
|
// Jika file tidak diubah, gunakan path yang sudah ada
|
||||||
|
$dokumenJaminan[] = $file;
|
||||||
|
} else {
|
||||||
|
// Jika file kosong atau null, tambahkan placeholder atau skip
|
||||||
|
$dokumenJaminan[] = null; // atau skip dengan continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Selalu update dokumen_nomor, baik file diubah atau tidak
|
||||||
|
$dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? '-';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Setelah loop, periksa apakah ada dokumen yang dihapus
|
||||||
|
$existingDetail = $existingDetails->get($request->detail_dokumen_jaminan_id[$key] ?? null);
|
||||||
|
|
||||||
|
if ($existingDetail) {
|
||||||
|
$existingDokumen = json_decode($existingDetail->dokumen_jaminan, true) ?? [];
|
||||||
|
$existingNomor = json_decode($existingDetail->dokumen_nomor, true) ?? [];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 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]);
|
||||||
|
} elseif (is_string($file) && !empty($file)) {
|
||||||
|
// Update nomor dokumen untuk file yang tidak diubah
|
||||||
|
$dokumenNomor[$index] = $request->dokumen_nomor[$key][$index] ?? '-';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Reset array keys
|
||||||
|
$dokumenJaminan = array_values($dokumenJaminan);
|
||||||
|
$dokumenNomor = array_values($dokumenNomor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($request->detail_dokumen_jaminan_id[$key])) {
|
if (isset($request->detail_dokumen_jaminan_id[$key])) {
|
||||||
$detailId = $request->detail_dokumen_jaminan_id[$key];
|
$detailId = $request->detail_dokumen_jaminan_id[$key];
|
||||||
$detailDocument = $existingDetails->get($detailId);
|
$detailDocument = $existingDetails->get($detailId);
|
||||||
if ($detailDocument) {
|
$detailDocument->update($detailData);
|
||||||
// Merge new files with existing ones
|
|
||||||
if (!empty($dokumenJaminan)) {
|
|
||||||
$existingFiles = json_decode(
|
|
||||||
$detailDocument->dokumen_jaminan,
|
|
||||||
true,
|
|
||||||
) ?: [];
|
|
||||||
$existingNomor = json_decode(
|
|
||||||
$detailDocument->dokumen_nomor,
|
|
||||||
true,
|
|
||||||
) ?: [];
|
|
||||||
$mergedFiles = array_merge($existingFiles, $dokumenJaminan);
|
|
||||||
$mergedNomor = array_merge($existingNomor, $dokumenNomor);
|
|
||||||
$detailData['dokumen_jaminan'] = json_encode($mergedFiles);
|
|
||||||
$detailData['dokumen_nomor'] = json_encode($mergedNomor);
|
|
||||||
}
|
|
||||||
$detailDocument->update($detailData);
|
|
||||||
$existingDetails->forget($detailId);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
DetailDokumenJaminan::create($detailData);
|
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();
|
DB::commit();
|
||||||
return redirect()->route('debitur.jaminan.index', $id)->with(
|
return redirect()->route('debitur.jaminan.index', $id)->with(
|
||||||
'success',
|
'success',
|
||||||
@@ -342,6 +357,7 @@
|
|||||||
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
|
$jenisLegalitasJaminan = JenisLegalitasJaminan::all();
|
||||||
|
|
||||||
$_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id);
|
$_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id);
|
||||||
|
|
||||||
$legalitas = '';
|
$legalitas = '';
|
||||||
if ($_jenisJaminan) {
|
if ($_jenisJaminan) {
|
||||||
$legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true);
|
$legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true);
|
||||||
|
|||||||
@@ -272,73 +272,73 @@
|
|||||||
</a>
|
</a>
|
||||||
<table class="table align-middle text-sm text-gray-500">
|
<table class="table align-middle text-sm text-gray-500">
|
||||||
@php $document = $dokumen; @endphp
|
@php $document = $dokumen; @endphp
|
||||||
@foreach($document->detail as $detail)
|
@foreach($document->detail as $detail)
|
||||||
<tr>
|
|
||||||
<td colspan="2">
|
|
||||||
<strong class="text-2xs text-gray-600 uppercase">
|
|
||||||
{{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }}
|
|
||||||
</strong>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
@if(isset($detail->dokumen_jaminan))
|
|
||||||
@php
|
|
||||||
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan];
|
|
||||||
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []);
|
|
||||||
@endphp
|
|
||||||
@foreach($dokumen_jaminan as $index => $dokumen)
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td colspan="2">
|
||||||
<span class="text-2xs text-gray-600 uppercase pl-3">
|
<strong class="text-2xs text-gray-600 uppercase">
|
||||||
{{ $loop->index+1 }}. Nomor : {{ $dokumen_nomor[$index] }}
|
{{ $loop->index+1 }}. {{ $detail->jenisLegalitasJaminan->name }}
|
||||||
</span>
|
</strong>
|
||||||
</td>
|
|
||||||
<td class="text-left">
|
|
||||||
@if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo']))
|
|
||||||
<a href="{{ route('debitur.jaminan.download', ['id' => $permohonan->debiture->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
|
||||||
class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
|
||||||
{{ basename($dokumen) }}
|
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
|
||||||
</a>
|
|
||||||
@endif
|
|
||||||
<span class="badge badge-sm badge-outline badge-warning mt-2" onclick="viewPDF('{{ Storage::url($dokumen_jaminan[$index]) }}')">
|
|
||||||
<i class="ki-filled ki-eye mr-2"></i>Preview
|
|
||||||
</span>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
@if(isset($detail->details) && json_decode($detail->details)[$index])
|
@if(isset($detail->dokumen_jaminan))
|
||||||
@foreach (json_decode($detail->details)[$index] as $key => $value)
|
@php
|
||||||
|
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan];
|
||||||
|
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []);
|
||||||
|
@endphp
|
||||||
|
@foreach($dokumen_jaminan as $index => $dokumen)
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<span class="text-2xs text-gray-600 uppercase pl-3">
|
<span class="text-2xs text-gray-600 uppercase pl-3">
|
||||||
- {{ str_replace("_"," ",$key) ?? "" }}
|
{{ $loop->index+1 }}. Nomor : {{ $dokumen_nomor[$index] }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-left">
|
<td class="text-left">
|
||||||
<p class="text-2xs text-gray-600 max-w-[250px]">
|
@if(in_array(Auth::user()->roles[0]->name,['administrator','pemohon-eo']))
|
||||||
{{ $value }}
|
<a href="{{ route('debitur.jaminan.download', ['id' => $permohonan->debiture->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
||||||
</p>
|
class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
||||||
|
{{ basename($dokumen) }}
|
||||||
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
|
</a>
|
||||||
|
@endif
|
||||||
|
<span class="badge badge-sm badge-outline badge-warning mt-2" onclick="viewPDF('{{ Storage::url($dokumen_jaminan[$index]) }}')">
|
||||||
|
<i class="ki-filled ki-eye mr-2"></i>Preview
|
||||||
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@if(isset($detail->details) && isset(json_decode($detail->details)[$index]))
|
||||||
|
@foreach (json_decode($detail->details)[$index] as $key => $value)
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<span class="text-2xs text-gray-600 uppercase pl-3">
|
||||||
|
- {{ str_replace("_"," ",$key) ?? "" }}
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
<td class="text-left">
|
||||||
|
<p class="text-2xs text-gray-600 max-w-[250px]">
|
||||||
|
{{ $value }}
|
||||||
|
</p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
@endforeach
|
@endforeach
|
||||||
@endif
|
@endif
|
||||||
@endforeach
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<span class="text-2xs text-gray-600 uppercase pl-3">
|
<span class="text-2xs text-gray-600 uppercase pl-3">
|
||||||
- keterangan
|
- keterangan
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-right">
|
<td class="text-right">
|
||||||
<p class="text-2xs text-gray-600 max-w-[250px]">
|
<p class="text-2xs text-gray-600 max-w-[250px]">
|
||||||
{{ $detail->keterangan }}
|
{{ $detail->keterangan }}
|
||||||
</p>
|
</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@endforeach
|
@endforeach
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -255,7 +255,7 @@
|
|||||||
|
|
||||||
<div id="doctainer" class="grid gap-5">
|
<div id="doctainer" class="grid gap-5">
|
||||||
@if(isset($document->id))
|
@if(isset($document->id))
|
||||||
@php $n = 0; @endphp
|
@php $n = 0; $p_index = 0; @endphp
|
||||||
@foreach($document->detail as $detail)
|
@foreach($document->detail as $detail)
|
||||||
<input type="hidden" name="detail_dokumen_jaminan_id[]" value="{{ $detail->id }}">
|
<input type="hidden" name="detail_dokumen_jaminan_id[]" value="{{ $detail->id }}">
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
@@ -282,129 +282,177 @@
|
|||||||
<input class="input " type="text" id="name" name="name[]" value="{{ $detail->name ?? "" }}" placeholder="Nomor">
|
<input class="input " type="text" id="name" name="name[]" value="{{ $detail->name ?? "" }}" placeholder="Nomor">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="document-container-${index}">
|
<div id="document-container-{{ $n }}">
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Dokumen Jaminan
|
Dokumen Jaminan
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<div class="flex flex-col w-full gap-2" id="file-container-{{$n}}">
|
|
||||||
<div class="flex items-center gap-2">
|
|
||||||
<input class="flex-1 input" type="text" name="dokumen_nomor[{{ $n }}][]" placeholder="Nomor Dokumen">
|
|
||||||
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" accept=".pdf,image/*">
|
|
||||||
<button type="button" class="flex-none btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
|
||||||
</div>
|
|
||||||
<div id="additional-files-{{ $n }}"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@if(isset($detail->dokumen_jaminan))
|
@if(isset($detail->dokumen_jaminan))
|
||||||
@if(isset($detail->dokumen_jaminan))
|
@php
|
||||||
@php
|
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan];
|
||||||
$dokumen_jaminan = is_array(json_decode($detail->dokumen_jaminan)) ? json_decode($detail->dokumen_jaminan) : [$detail->dokumen_jaminan];
|
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []);
|
||||||
$dokumen_nomor = is_array(json_decode($detail->dokumen_nomor)) ? json_decode($detail->dokumen_nomor) : ($detail->dokumen_nomor ? [$detail->dokumen_nomor] : []);
|
@endphp
|
||||||
@endphp
|
<div class="flex flex-col w-full gap-2" id="document_container">
|
||||||
<div class="flex flex-col w-full gap-2">
|
@foreach($dokumen_jaminan as $index => $dokumen)
|
||||||
@foreach($dokumen_jaminan as $index => $dokumen)
|
<div class="flex flex-col w-full gap-2 custom-field-set" id="document_container_{{ $p_index }}">
|
||||||
<div class="flex w-full lg:w-[30%]">
|
<div class="flex items-start gap-2 mt-2">
|
||||||
@if(!empty($dokumen_nomor))
|
<input class="flex-1 input" type="text" name="dokumen_nomor[{{ $n }}][]" placeholder="Nomor Dokumen" value="{{ $dokumen_nomor[$index] ?? '' }}">
|
||||||
<span class="flex-1 mt-2 text-info text-sm">Nomor Dokumen : {{ $dokumen_nomor[$index] }}</span>
|
<span class="flex-1">
|
||||||
|
<input class="file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" accept=".pdf,image/*">
|
||||||
|
<input type="hidden" name="dokumen_jaminan[{{ $n }}][]" value="{{ $dokumen }}">
|
||||||
|
<a href="{{ route('debitur.jaminan.download', ['id' => $debitur->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
||||||
|
class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
||||||
|
{{ basename($dokumen) }}
|
||||||
|
<i class="ki-filled ki-cloud-download"></i>
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
<button type="button" class="flex-none btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if($detail->details)
|
||||||
|
@if($detail->jenisLegalitasJaminan->custom_fields)
|
||||||
|
@foreach($detail->jenisLegalitasJaminan->custom_fields as $key)
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 custom-field">
|
||||||
|
@php
|
||||||
|
$customField = getCustomField($key);
|
||||||
|
$fieldValue = json_decode($detail->details)[$index]->{$customField->name} ?? '';
|
||||||
|
@endphp
|
||||||
|
<label class="form-label max-w-56 capitalize">
|
||||||
|
{{ $customField->label ?? "" }}
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
@switch($customField->type)
|
||||||
|
@case('text')
|
||||||
|
<input class="input" type="text" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" value="{{ $fieldValue }}" placeholder="...">
|
||||||
|
@break
|
||||||
|
@case('number')
|
||||||
|
<input class="input" type="number" step="0.01" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" value="{{ $fieldValue }}" placeholder="...">
|
||||||
|
@break
|
||||||
|
@case('date')
|
||||||
|
<input class="input" type="date" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" value="{{ $fieldValue }}">
|
||||||
|
@break
|
||||||
|
@case('textarea')
|
||||||
|
<textarea class="textarea" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" placeholder="...">{{ $fieldValue }}</textarea>
|
||||||
|
@break
|
||||||
|
@case('select')
|
||||||
|
<select class="select" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]">
|
||||||
|
<option value="">Select an option</option>
|
||||||
|
@foreach($customField->options as $option)
|
||||||
|
<option value="{{ $option }}" {{ $fieldValue == $option ? 'selected' : '' }}>{{ $option }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
@break
|
||||||
|
@default
|
||||||
|
<input class="input" type="text" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" value="{{ $fieldValue }}" placeholder="...">
|
||||||
|
@endswitch
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
@endif
|
@endif
|
||||||
<a href="{{ route('debitur.jaminan.download', ['id' => $debitur->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
@else
|
||||||
class="flex-none badge badge-sm badge-outline mt-2 mr-2">
|
@if($detail->jenisLegalitasJaminan->custom_fields)
|
||||||
{{ basename($dokumen) }}
|
@foreach($detail->jenisLegalitasJaminan->custom_fields as $key)
|
||||||
<i class="ki-filled ki-cloud-download"></i>
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
</a>
|
@php
|
||||||
|
$customField = getCustomField($key);
|
||||||
|
@endphp
|
||||||
|
<label class="form-label max-w-56 capitalize">
|
||||||
|
{{ $customField->label }}
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
@switch($customField->type)
|
||||||
|
@case('text')
|
||||||
|
<input class="input" type="text" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" placeholder="...">
|
||||||
|
@break
|
||||||
|
@case('number')
|
||||||
|
<input class="input" type="number" step="0.01" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" placeholder="...">
|
||||||
|
@break
|
||||||
|
@case('date')
|
||||||
|
<input class="input" type="date" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]">
|
||||||
|
@break
|
||||||
|
@case('textarea')
|
||||||
|
<textarea class="textarea" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" placeholder="..."></textarea>
|
||||||
|
@break
|
||||||
|
@case('select')
|
||||||
|
<select class="select" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]">
|
||||||
|
<option value="">Select an option</option>
|
||||||
|
@foreach($customField->options as $option)
|
||||||
|
<option value="{{ $option }}">{{ $option }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
@break
|
||||||
|
@default
|
||||||
|
<input class="input" type="text" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" placeholder="...">
|
||||||
|
@endswitch
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
@php $p_index++; @endphp
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center justify-end gap-2 my-2 w-full">
|
||||||
|
<button type="button" class="flex-none btn btn-primary text-center" onclick="addFileInput({{$n}},{{ $p_index-1 }})">Add File</button>
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="flex flex-col w-full gap-2" id="document_container">
|
||||||
|
<div class="flex items-start gap-2 mt-2">
|
||||||
|
<input class="flex-1 input" type="text" name="dokumen_nomor[{{ $n }}][]" placeholder="Nomor Dokumenss">
|
||||||
|
<span class="flex-1">
|
||||||
|
<input class="file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" accept=".pdf,image/*">
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
@if($detail->jenisLegalitasJaminan->custom_fields)
|
||||||
|
@foreach($detail->jenisLegalitasJaminan->custom_fields as $key)
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
@php
|
||||||
|
$customField = getCustomField($key);
|
||||||
|
@endphp
|
||||||
|
<label class="form-label max-w-56 capitalize">
|
||||||
|
{{ $customField->label }}
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
@switch($customField->type)
|
||||||
|
@case('text')
|
||||||
|
<input class="input" type="text" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" placeholder="...">
|
||||||
|
@break
|
||||||
|
@case('number')
|
||||||
|
<input class="input" type="number" step="0.01" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" placeholder="...">
|
||||||
|
@break
|
||||||
|
@case('date')
|
||||||
|
<input class="input" type="date" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]">
|
||||||
|
@break
|
||||||
|
@case('textarea')
|
||||||
|
<textarea class="textarea" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" placeholder="..."></textarea>
|
||||||
|
@break
|
||||||
|
@case('select')
|
||||||
|
<select class="select" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]">
|
||||||
|
<option value="">Select an option</option>
|
||||||
|
@foreach($customField->options as $option)
|
||||||
|
<option value="{{ $option }}">{{ $option }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
@break
|
||||||
|
@default
|
||||||
|
<input class="input" type="text" name="custom_field[{{$n}}][{{$p_index}}][{{$customField->name}}]" placeholder="...">
|
||||||
|
@endswitch
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
@endif
|
||||||
@endif
|
</div>
|
||||||
|
<div class="flex items-center justify-end gap-2 my-2 w-full">
|
||||||
|
<button type="button" class="flex-none btn btn-primary text-center" onclick="addFileInput({{ $n }})">Add File</button>
|
||||||
|
</div>
|
||||||
|
@php $p_index++; @endphp
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="document-container"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if($detail->details)
|
|
||||||
@if($detail->jenisLegalitasJaminan->custom_fields)
|
|
||||||
@foreach($detail->jenisLegalitasJaminan->custom_fields as $key)
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 custom-field">
|
|
||||||
@php
|
|
||||||
$customField = getCustomField($key);
|
|
||||||
$fieldValue = json_decode($detail->details)->{$customField->name} ?? '';
|
|
||||||
@endphp
|
|
||||||
<label class="form-label max-w-56 capitalize">
|
|
||||||
{{ $customField->label ?? "" }}
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
@switch($customField->type)
|
|
||||||
@case('text')
|
|
||||||
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" value="{{ $fieldValue }}" placeholder="...">
|
|
||||||
@break
|
|
||||||
@case('number')
|
|
||||||
<input class="input" type="number" step="0.01" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" value="{{ $fieldValue }}" placeholder="...">
|
|
||||||
@break
|
|
||||||
@case('date')
|
|
||||||
<input class="input" type="date" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" value="{{ $fieldValue }}">
|
|
||||||
@break
|
|
||||||
@case('textarea')
|
|
||||||
<textarea class="textarea" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="...">{{ $fieldValue }}</textarea>
|
|
||||||
@break
|
|
||||||
@case('select')
|
|
||||||
<select class="select" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]">
|
|
||||||
<option value="">Select an option</option>
|
|
||||||
@foreach($customField->options as $option)
|
|
||||||
<option value="{{ $option }}" {{ $fieldValue == $option ? 'selected' : '' }}>{{ $option }}</option>
|
|
||||||
@endforeach
|
|
||||||
</select>
|
|
||||||
@break
|
|
||||||
@default
|
|
||||||
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" value="{{ $fieldValue }}" placeholder="...">
|
|
||||||
@endswitch
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endforeach
|
|
||||||
@endif
|
|
||||||
@else
|
|
||||||
@if($detail->jenisLegalitasJaminan->custom_fields)
|
|
||||||
@foreach($detail->jenisLegalitasJaminan->custom_fields as $key)
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
@php
|
|
||||||
$customField = getCustomField($key);
|
|
||||||
@endphp
|
|
||||||
<label class="form-label max-w-56 capitalize">
|
|
||||||
{{ $customField->label }}
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
@switch($customField->type)
|
|
||||||
@case('text')
|
|
||||||
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="...">
|
|
||||||
@break
|
|
||||||
@case('number')
|
|
||||||
<input class="input" type="number" step="0.01" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="...">
|
|
||||||
@break
|
|
||||||
@case('date')
|
|
||||||
<input class="input" type="date" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]">
|
|
||||||
@break
|
|
||||||
@case('textarea')
|
|
||||||
<textarea class="textarea" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="..."></textarea>
|
|
||||||
@break
|
|
||||||
@case('select')
|
|
||||||
<select class="select" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]">
|
|
||||||
<option value="">Select an option</option>
|
|
||||||
@foreach($customField->options as $option)
|
|
||||||
<option value="{{ $option }}">{{ $option }}</option>
|
|
||||||
@endforeach
|
|
||||||
</select>
|
|
||||||
@break
|
|
||||||
@default
|
|
||||||
<input class="input" type="text" name="custom_field[{{$detail->jenisLegalitasJaminan->id}}][{{$customField->name}}]" placeholder="...">
|
|
||||||
@endswitch
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@endforeach
|
|
||||||
@endif
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Keterangan
|
Keterangan
|
||||||
@@ -415,88 +463,95 @@
|
|||||||
</div>
|
</div>
|
||||||
@php $n++; @endphp
|
@php $n++; @endphp
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|
||||||
@if($legalitas)
|
@if($legalitas)
|
||||||
@foreach($legalitas as $item)
|
@foreach($legalitas as $item)
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div id="document-container-{{ $n }}">
|
||||||
<label class="form-label max-w-56 font-bold">
|
<div class="flex flex-col w-full gap-2">
|
||||||
{{ $n + 1 }}. {{ $item->name }}
|
|
||||||
</label>
|
|
||||||
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value=" {{ $item->id }}">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Nama Dokumen
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<input class="input " type="text" id="name" name="name[]" value="" placeholder="Nomor">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
||||||
<label class="form-label max-w-56">
|
|
||||||
Dokumen Jaminan
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
<div class="flex flex-col w-full gap-2" id="file-container-{{$n}}">
|
|
||||||
<div class="flex items-center gap-2">
|
|
||||||
<input class="flex-1 input" type="text" name="dokumen_nomor[{{ $n }}][]" placeholder="Nomor Dokumen">
|
|
||||||
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" accept=".pdf,image/*">
|
|
||||||
<button type="button" class="flex-none btn btn-primary w-[100px] text-center" onclick="addFileInput({{ $n }})">Add More</button>
|
|
||||||
</div>
|
|
||||||
<div id="additional-files-{{ $n }}"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
@if($item->custom_fields)
|
|
||||||
@foreach($item->custom_fields as $field)
|
|
||||||
@php $custom_field = getCustomField($field) @endphp
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56 capitalize">
|
<label class="form-label max-w-56 font-bold">
|
||||||
{{ $custom_field->label }}
|
{{ $n + 1 }}. {{ $item->name }}
|
||||||
|
</label>
|
||||||
|
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value=" {{ $item->id }}">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Nama Dokumen
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
@switch($custom_field->type)
|
<input class="input " type="text" id="name" name="name[]" value="" placeholder="Nomor">
|
||||||
@case('text')
|
|
||||||
<input class="input" type="text" name="custom_field[{{$item->id}}][{{$custom_field->name}}]" placeholder="...">
|
|
||||||
@break
|
|
||||||
@case('number')
|
|
||||||
<input class="input" type="number" step="0.01" name="custom_field[{{$item->id}}][{{$custom_field->name}}]" placeholder="...">
|
|
||||||
@break
|
|
||||||
@case('date')
|
|
||||||
<input class="input" type="date" name="custom_field[{{$item->id}}][{{$custom_field->name}}]">
|
|
||||||
@break
|
|
||||||
@case('textarea')
|
|
||||||
<textarea class="textarea" name="custom_field[{{$item->id}}][{{$custom_field->name}}]" placeholder="..."></textarea>
|
|
||||||
@break
|
|
||||||
@case('select')
|
|
||||||
<select class="select" name="custom_field[{{$item->id}}][{{$custom_field->name}}]">
|
|
||||||
<option value="">Select an option</option>
|
|
||||||
@foreach($custom_field->options as $option)
|
|
||||||
<option value="{{ $option }}">{{ $option }}</option>
|
|
||||||
@endforeach
|
|
||||||
</select>
|
|
||||||
@break
|
|
||||||
@default
|
|
||||||
<input class="input" type="text" name="custom_field[{{$item->id}}][{{$custom_field->name}}]" placeholder="...">
|
|
||||||
@endswitch
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Keterangan
|
Dokumen Jaminan
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<textarea class="textarea" rows="3" type="number" name="keterangan[]"></textarea>
|
<div class="flex flex-col w-full gap-2" id="document_container">
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<input class="flex-1 input" type="text" name="dokumen_nomor[{{ $n }}][]" placeholder="Nomor Dokumen">
|
||||||
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" accept=".pdf,image/*">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@if($item->custom_fields)
|
||||||
|
@foreach($item->custom_fields as $field)
|
||||||
|
@php $custom_field = getCustomField($field) @endphp
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56 capitalize">
|
||||||
|
{{ $custom_field->label }}
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
@switch($custom_field->type)
|
||||||
|
@case('text')
|
||||||
|
<input class="input" type="text" name="custom_field[{{$n}}][{{$p_index}}][{{$custom_field->name}}]" placeholder="...">
|
||||||
|
@break
|
||||||
|
@case('number')
|
||||||
|
<input class="input" type="number" step="0.01" name="custom_field[{{$n}}][{{$p_index}}][{{$custom_field->name}}]" placeholder="...">
|
||||||
|
@break
|
||||||
|
@case('date')
|
||||||
|
<input class="input" type="date" name="custom_field[{{$n}}][{{$p_index}}][{{$custom_field->name}}]">
|
||||||
|
@break
|
||||||
|
@case('textarea')
|
||||||
|
<textarea class="textarea" name="custom_field[{{$n}}][{{$p_index}}][{{$custom_field->name}}]" placeholder="..."></textarea>
|
||||||
|
@break
|
||||||
|
@case('select')
|
||||||
|
<select class="select" name="custom_field[{{$n}}][{{$p_index}}][{{$custom_field->name}}]">
|
||||||
|
<option value="">Select an option</option>
|
||||||
|
@foreach($custom_field->options as $option)
|
||||||
|
<option value="{{ $option }}">{{ $option }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
@break
|
||||||
|
@default
|
||||||
|
<input class="input" type="text" name="custom_field[{{$n}}][{{$p_index}}][{{$custom_field->name}}]" placeholder="...">
|
||||||
|
@endswitch
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center justify-end gap-2 my-2 w-full">
|
||||||
|
<button type="button" class="flex-none btn btn-primary text-center" onclick="addFileInput({{ $n }})">Add File</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
|
<label class="form-label max-w-56">
|
||||||
|
Keterangan
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
<textarea class="textarea" rows="3" type="number" name="keterangan[]"></textarea>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@php $n++; @endphp
|
@php $n++;$p_index++; @endphp
|
||||||
@endforeach
|
@endforeach
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-end">
|
<div class="flex justify-end">
|
||||||
@@ -608,30 +663,31 @@
|
|||||||
<label class="form-label max-w-56">
|
<label class="form-label max-w-56">
|
||||||
Dokumen Jaminan
|
Dokumen Jaminan
|
||||||
</label>
|
</label>
|
||||||
<div class="flex flex-wrap items-baseline w-full" id="file-container-${index}">
|
<div class="flex flex-wrap items-baseline w-full" id="document_container">
|
||||||
<div class="flex flex-col w-full gap-2">
|
<div class="flex flex-col w-full gap-2">
|
||||||
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ""}
|
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id, item.dokumen_nomor) : ""}
|
||||||
</div>
|
|
||||||
<div class="flex items-center gap-2 my-2 w-full">
|
<div class="flex items-center gap-2 my-2 w-full">
|
||||||
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
||||||
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" accept=".pdf,image/*">
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" accept=".pdf,image/*">
|
||||||
<button type="button" class="flex-none btn btn-primary w-[100px] text-center" onclick="addFileInput(${index})">Add File</button>
|
</div>
|
||||||
|
${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => `
|
||||||
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-2 custom-field">
|
||||||
|
<label class="form-label max-w-56 capitalize">
|
||||||
|
${field.label}
|
||||||
|
</label>
|
||||||
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
|
${getCustomFieldInput(index, field.type, field.name, item.details, item.jenis_legalitas_jaminan_id, 0)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`).join('') : ""}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
${item.custom_fields && item.custom_fields.length > 0 ? item.custom_fields.map(field => `
|
<div class="flex items-center justify-end gap-2 my-2 w-full">
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-2 custom-field">
|
<button type="button" class="flex-none btn btn-primary text-center" onclick="addFileInput(${index})">Add File</button>
|
||||||
<label class="form-label max-w-56 capitalize">
|
</div>
|
||||||
${field.label}
|
|
||||||
</label>
|
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
|
||||||
${getCustomFieldInput(index, field.type, field.name, item.details, item.jenis_legalitas_jaminan_id, 0)}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`).join('') : ""}
|
|
||||||
|
|
||||||
<div id="document_container"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
@@ -648,14 +704,23 @@
|
|||||||
.catch(error => console.error("Error:", error));
|
.catch(error => console.error("Error:", error));
|
||||||
}
|
}
|
||||||
|
|
||||||
function addFileInput(index) {
|
function addFileInput(index, pindex = null) {
|
||||||
const documentContainer = document.getElementById(`document-container-${index}`);
|
const documentContainer = document.getElementById(`document-container-${index}`);
|
||||||
const customFields = documentContainer.querySelectorAll('.custom-field');
|
let container = null;
|
||||||
const container = documentContainer.querySelector('#document_container');
|
const parentContainer = documentContainer.querySelector('#document_container');
|
||||||
|
if (pindex !== null) {
|
||||||
|
|
||||||
|
container = parentContainer.querySelector(`#document_container_${pindex}`);
|
||||||
|
} else {
|
||||||
|
container = documentContainer.querySelector('#document_container');
|
||||||
|
}
|
||||||
|
|
||||||
|
const customFields = container.querySelectorAll('.custom-field');
|
||||||
|
|
||||||
|
|
||||||
// Get the current number of custom field sets
|
// Get the current number of custom field sets
|
||||||
const currentFieldSets = container.querySelectorAll('.custom-field-set').length;
|
const currentFieldSets = container.querySelectorAll('.custom-field-set').length;
|
||||||
const newFieldIndex = currentFieldSets+1;
|
const newFieldIndex = currentFieldSets + 1;
|
||||||
|
|
||||||
const newInput = document.createElement("div");
|
const newInput = document.createElement("div");
|
||||||
newInput.className = "flex flex-col w-full gap-2 mb-4 custom-field-set";
|
newInput.className = "flex flex-col w-full gap-2 mb-4 custom-field-set";
|
||||||
@@ -677,23 +742,22 @@
|
|||||||
|
|
||||||
newInput.innerHTML = `
|
newInput.innerHTML = `
|
||||||
<div class="flex flex-wrap items-baseline w-full">
|
<div class="flex flex-wrap items-baseline w-full">
|
||||||
<div class="flex flex-col w-full gap-2">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="flex items-center gap-2 w-full">
|
<div class="flex items-center gap-2 w-full">
|
||||||
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
<input class="flex-1 input" type="text" name="dokumen_nomor[${index}][]" placeholder="Nomor Dokumen">
|
||||||
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" accept=".pdf,image/*">
|
<input class="flex-1 file-input" type="file" name="dokumen_jaminan[${index}][]" accept=".pdf,image/*">
|
||||||
<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 text-center" onclick="removeFileInput(this)">Remove</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
${customFieldsHtml}
|
${customFieldsHtml}
|
||||||
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
container.appendChild(newInput);
|
parentContainer.appendChild(newInput);
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeFileInput(button) {
|
function removeFileInput(button) {
|
||||||
button.closest(".flex.flex-col.w-full.gap-2.mb-4").remove();
|
button.closest(".custom-field-set").remove();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderExistingFiles(dokumenJaminan, debiturId, itemId, dokumenNomor) {
|
function renderExistingFiles(dokumenJaminan, debiturId, itemId, dokumenNomor) {
|
||||||
|
|||||||
@@ -110,7 +110,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if(isset($detail->details))
|
@if(isset($detail->details))
|
||||||
@if(json_decode($detail->details)[$index])
|
@if(isset(json_decode($detail->details)[$index]))
|
||||||
@foreach (json_decode($detail->details)[$index] as $key => $value)
|
@foreach (json_decode($detail->details)[$index] as $key => $value)
|
||||||
|
|
||||||
<div class="flex items-start justify-between flex-wrap my-2.5 gap-2">
|
<div class="flex items-start justify-between flex-wrap my-2.5 gap-2">
|
||||||
|
|||||||
Reference in New Issue
Block a user