This update enhances the `DokumenJaminan` model to support multiple files for each document entry. It modifies both the backend logic to store multiple files and the frontend view to display and handle these files correctly. Additionally, it includes functionality to delete old document files if they are no longer associated with any detail document entry.
608 lines
33 KiB
PHP
608 lines
33 KiB
PHP
<form action="{{ isset($document->id) ? route('debitur.jaminan.update', ['id'=>$debitur->id,'jaminan'=>$document->id]) : route('debitur.jaminan.store',$debitur->id) }}" method="POST" class="grid gap-5" enctype="multipart/form-data">
|
|
@if(isset($document->id))
|
|
@method('PUT')
|
|
@endif
|
|
@csrf
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Debitur
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input type="hidden" name="debiture_id" value="{{ $debitur->id ?? '' }}">
|
|
<p class="text-base text-gray-700">
|
|
{{ $debitur->name }} |
|
|
{{ formatAlamat($debitur) }}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Pemilik Jaminan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<div class="input-group w-full">
|
|
<select onchange="changePemilikJaminan()" class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="pemilik_jaminan_id" id="pemilik_jaminan_id">
|
|
<option value="">Pilih Pemilik Jaminan</option>
|
|
<option value="0">Sama Dengan Debitur</option>
|
|
<option value="00">Tidak Sama Dengan Debitur</option>
|
|
@if(isset($pemilikJaminan))
|
|
@foreach($pemilikJaminan as $pemilik)
|
|
@if(isset($document))
|
|
<option value="{{ $pemilik->id }}" {{ isset($document->pemilik_jaminan_id) && $document->pemilik_jaminan_id == $pemilik->id?'selected' : '' }}>
|
|
{{ $pemilik->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $pemilik->id }}">
|
|
{{ $pemilik->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
@endif
|
|
</select>
|
|
</div>
|
|
@error('pemilik_jaminan_id')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
<fieldset id="pemilik_jaminan" class="hidden border border-solid border-gray-300 p-3 w-full mt-5 grid gap-5">
|
|
<legend class="text-sm">Pemilik Jaminan</legend>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Hubungan Pemilik Jaminan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="hubungan_pemilik_jaminan_id" id="hubungan_pemilik_jaminan_id">
|
|
<option value="">Pilih Hubungan Pemilik Jaminan</option>
|
|
@if(isset($hubunganPemilik))
|
|
@foreach($hubunganPemilik as $hubungan)
|
|
@if(isset($pemilik))
|
|
<option value="{{ $hubungan->id }}" {{ isset($pemilik->hubungan_pemilik_jaminan_id) && $pemilik->hubungan_pemilik_jaminan_id == $hubungan->id?'selected' : '' }}>
|
|
{{ $hubungan->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $hubungan->id }}">
|
|
{{ $hubungan->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
@endif
|
|
</select>
|
|
@error('hubungan_pemilik_jaminan_id')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Nama Lengkap
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input @error('pemilik_name') border-danger bg-danger-light @enderror" type="text " id="pemilik_name" name="pemilik_name" value="{{ $pemilik->name ?? '' }}" placeholder="Nama Pemilik Jaminan">
|
|
@error('pemilik_name')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input @error('nomor_id') border-danger bg-danger-light @enderror" type="number" name="nomor_id" value="{{ $debitur->nomor_id ?? '' }}" placeholder="Nomor ID/KTP">
|
|
@error('nomor_id')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="nama_sertifikat">
|
|
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<button type="button" id="tambah_sertifikat" class="btn btn-primary btn-xs">Tambah Nama di Sertifikat</button>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Jenis Jaminan
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
@if(isset($document->id))
|
|
<input type="hidden" name="jenis_jaminan_id" value="{{ $document->jenis_jaminan_id }}">
|
|
@endif
|
|
<select onchange="getLegalitasJaminan()" class="input tomselect w-full @error('branch_id') border-danger bg-danger-light @enderror" name="jenis_jaminan_id" id="jenis_jaminan_id">
|
|
<option value="">Pilih Jenis Jaminan</option>
|
|
@foreach($jenisJaminan as $row)
|
|
@if(isset($document))
|
|
<option value="{{ $row->id }}" {{ isset($document->jenis_jaminan_id) && $document->jenis_jaminan_id == $row->id?'selected' : '' }}>
|
|
{{ $row->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $row->id }}">{{ $row->name }}</option>
|
|
@endif
|
|
@endforeach
|
|
</select>
|
|
@error('jenis_jaminan_id')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div id="doctainer" class="grid gap-5">
|
|
@if(isset($document->id))
|
|
@php $n = 0; @endphp
|
|
@foreach($document->detail as $detail)
|
|
<input type="hidden" name="detail_dokumen_jaminan_id[]" value="{{ $detail->id }}">
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 font-bold">
|
|
{{ $n + 1 }}. {{ $detail->jenisLegalitasJaminan->name }}
|
|
</label>
|
|
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value=" {{ $detail->jenis_legalitas_jaminan_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="{{ $detail->name ?? "" }}" placeholder="Nama Dokumen">
|
|
</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="file-input" type="file" name="dokumen_jaminan[{{ $n }}][]" multiple>
|
|
<button type="button" class="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))
|
|
@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)
|
|
<a href="{{ route('debitur.jaminan.download', ['id' => $debitur->id, 'dokumen' => $detail->id, 'index' => $index]) }}"
|
|
class="badge badge-sm badge-outline mt-2 mr-2">
|
|
{{ basename($dokumen) }}
|
|
<i class="ki-filled ki-cloud-download"></i>
|
|
</a>
|
|
@endforeach
|
|
@endif
|
|
</div>
|
|
</div>
|
|
|
|
@if($detail->details)
|
|
@php $custom_field = json_decode($detail->details,true) @endphp
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 capitalize">
|
|
{{ str_replace('_',' ',$detail->jenisLegalitasJaminan->custom_field) }}
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input" type="text" name="custom_field[][$detail->jenisLegalitasJaminan->custom_field]" value="{{ $custom_field[$detail->jenisLegalitasJaminan->custom_field] }}">
|
|
</div>
|
|
</div>
|
|
@else
|
|
@if($detail->jenisLegalitasJaminan->custom_field)
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 capitalize">
|
|
{{ str_replace('_',' ',$detail->jenisLegalitasJaminan->custom_field) }}
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
@if($detail->jenisLegalitasJaminan->custom_field_type === "text")
|
|
<input class="input" type="text" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
|
|
@elseif($detail->jenisLegalitasJaminan->custom_field_type === "number")
|
|
<input class="input" type="number" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
|
|
@elseif($detail->jenisLegalitasJaminan->custom_field_type === "date")
|
|
<input class="input" type="date" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
|
|
@elseif($detail->jenisLegalitasJaminan->custom_field_type === "textarea")
|
|
<textarea class="textarea" rows="3" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2"></textarea>
|
|
@else
|
|
<input class="input" type="text" name="custom_field[][{{$detail->jenisLegalitasJaminan->custom_field}}]" placeholder="... M2">
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@endif
|
|
@endif
|
|
|
|
<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[]">{{ $detail->keterangan ?? "" }}</textarea>
|
|
</div>
|
|
</div>
|
|
@php $n++; @endphp
|
|
@endforeach
|
|
@foreach($legalitas as $item)
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 font-bold">
|
|
{{ $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="Nama Dokumen">
|
|
</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">
|
|
<input class="file-input" type="file" name="dokumen_jaminan[]" value="">
|
|
</div>
|
|
</div>
|
|
|
|
@if($item->custom_field)
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 capitalize">
|
|
{{ str_replace('_',' ',$item->custom_field) }}
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
@if($item->custom_field_type === "text")
|
|
<input class="input" type="text" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
|
|
@elseif($item->custom_field_type === "number")
|
|
<input class="input" type="number" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
|
|
@elseif($item->custom_field_type === "date")
|
|
<input class="input" type="date" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
|
|
@elseif($item->custom_field_type === "textarea")
|
|
<textarea class="textarea" rows="3" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2"></textarea>
|
|
@else
|
|
<input class="input" type="text" name="custom_field[][{{$item->custom_field}}]" placeholder="... M2">
|
|
@endif
|
|
</div>
|
|
</div>
|
|
@endif
|
|
|
|
<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>
|
|
@php $n++; @endphp
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56">
|
|
Address
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select id="province_code" name="province_code" class="select w-full @error('province_code') border-danger bg-danger-light @enderror">
|
|
<option value="">Select Province</option>
|
|
@foreach($provinces as $province)
|
|
@if(isset($document))
|
|
<option value="{{ $province->code }}" {{ isset($document->province_code) && $document->province_code == $province->code?'selected' : '' }}>
|
|
{{ $province->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $province->code }}">
|
|
{{ $province->name }}
|
|
</option>
|
|
@endif
|
|
;
|
|
@endforeach
|
|
</select>
|
|
@error('province_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select id="city_code" name="city_code" class="select w-full @error('city_code') border-danger bg-danger-light @enderror">
|
|
<option value="">Select City</option>
|
|
@if(isset($cities))
|
|
@foreach($cities as $city)
|
|
@if(isset($document))
|
|
<option value="{{ $city->code }}" {{ isset($document->city_code) && $document->city_code == $city->code?'selected' : '' }}>
|
|
{{ $city->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $city->code }}">
|
|
{{ $city->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
|
|
@endif
|
|
</select>
|
|
@error('city_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div class="flex flex-col lg:flex-row gap-2 w-full mt-2 lg:mt-5">
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select id="district_code" name="district_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
|
<option value="">Select District</option>
|
|
@if(isset($districts))
|
|
@foreach($districts as $district)
|
|
@if(isset($document))
|
|
<option value="{{ $district->code }}" {{ isset($document->district_code) && $document->district_code == $district->code?'selected' : '' }}>
|
|
{{ $district->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $district->code }}">
|
|
{{ $district->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
|
|
@endif
|
|
</select>
|
|
@error('district_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<select id="village_code" name="village_code" class="select w-full @error('district_code') border-danger bg-danger-light @enderror">
|
|
<option value="">Select Village</option>
|
|
@if(isset($villages))
|
|
@foreach($villages as $village)
|
|
@if(isset($document))
|
|
<option value="{{ $village->code }}" {{ isset($document->village_code) && $document->village_code == $village->code?'selected' : '' }}>
|
|
{{ $village->name }}
|
|
</option>
|
|
@else
|
|
<option value="{{ $village->code }}">
|
|
{{ $village->name }}
|
|
</option>
|
|
@endif
|
|
@endforeach
|
|
|
|
@endif
|
|
</select>
|
|
@error('district_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input @error('postal_code') border-danger bg-danger-light @enderror" type="number" id="postal_code" name="postal_code" value="{{ $document->postal_code ?? '' }}" placeholder="Postal Code">
|
|
@error('postal_code')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
<div class="flex flex-row w-full mt-2 lg:mt-5">
|
|
<textarea class="textarea @error('address') border-danger bg-danger-light @enderror" rows="3" type="number" id="address" name="address">{{ $document->address ?? '' }}</textarea>
|
|
@error('address')
|
|
<em class="alert text-danger text-sm">{{ $message }}</em>
|
|
@enderror
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="flex justify-end">
|
|
<button type="submit" class="btn btn-primary">
|
|
Save
|
|
</button>
|
|
</div>
|
|
</form>
|
|
|
|
@push('scripts')
|
|
{{--Pemilik Jaminan--}}
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function () {
|
|
const namaSertifikatDiv = document.getElementById("nama_sertifikat");
|
|
|
|
// Function to add delete event listeners to existing buttons
|
|
function addDeleteListeners() {
|
|
document.querySelectorAll(".delete-button").forEach(button => {
|
|
button.addEventListener("click", function () {
|
|
this.closest(".flex.items-baseline.flex-wrap.lg\\:flex-nowrap.gap-2\\.5.mb-5").remove();
|
|
});
|
|
});
|
|
}
|
|
|
|
// Add delete listeners to existing buttons
|
|
addDeleteListeners();
|
|
|
|
document.getElementById("tambah_sertifikat").addEventListener("click", function () {
|
|
const newDiv = document.createElement("div");
|
|
newDiv.className = "flex items-baseline flex-wrap lg:flex-nowrap gap-2.5 mb-5";
|
|
newDiv.innerHTML = `
|
|
<label class="form-label max-w-56">
|
|
Nama Lengkap
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<div class="flex flex-col lg:flex-row gap-2 w-full">
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input" type="text" name="detail_sertifikat[name][]" value="" placeholder="Nama Pemilik Jaminan">
|
|
</div>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
<input class="input" type="number" name="detail_sertifikat[nomor_id][]" value="" placeholder="Nomor ID/KTP">
|
|
</div>
|
|
<button type="button" class="btn btn-danger btn-xs delete-button">Hapus</button>
|
|
</div>
|
|
</div>
|
|
`;
|
|
namaSertifikatDiv.appendChild(newDiv);
|
|
|
|
// Add delete listener to the new button
|
|
addDeleteListeners();
|
|
});
|
|
});
|
|
|
|
function changePemilikJaminan() {
|
|
var pemilikJaminan = document.getElementById("pemilik_jaminan_id").value;
|
|
var fieldsetPemilikJaminan = document.getElementById("pemilik_jaminan");
|
|
if (pemilikJaminan === "00") {
|
|
fieldsetPemilikJaminan.classList.remove("hidden");
|
|
} else {
|
|
fieldsetPemilikJaminan.classList.add("hidden");
|
|
}
|
|
}
|
|
</script>
|
|
|
|
{{--Legalitas Jaminan--}}
|
|
<script>
|
|
function getLegalitasJaminan() {
|
|
var legalitasJaminan = document.getElementById("jenis_jaminan_id").value;
|
|
var documentId = "{{ $document->id ?? "0" }}";
|
|
var debiturId = "{{ $debitur->id }}";
|
|
var url = `/basic-data/jenis-jaminan/legalitas/${documentId}/${legalitasJaminan}`;
|
|
fetch(url, {
|
|
method: "GET",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
"X-Requested-With": "XMLHttpRequest"
|
|
}
|
|
})
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
throw new Error(`HTTP error! status: ${response.status}`);
|
|
}
|
|
return response.json();
|
|
})
|
|
.then(data => {
|
|
var doctainer = document.getElementById("doctainer");
|
|
doctainer.innerHTML = "";
|
|
data.forEach((item, index) => {
|
|
doctainer.innerHTML += `
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 font-bold">
|
|
${index + 1}. ${item.name}
|
|
</label>
|
|
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value="${item.jenis_legalitas_jaminan_id}">
|
|
${item.is_existing ? `<input type="hidden" name="detail_dokumen_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" name="name[]" value="${item.name || ''}" placeholder="Nama Dokumen">
|
|
</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" id="file-container-${index}">
|
|
${item.dokumen_jaminan ? renderExistingFiles(item.dokumen_jaminan, debiturId, item.id) : ''}
|
|
<div class="flex items-center gap-2 my-2 w-full">
|
|
<input class="file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
|
<button type="button" class="btn btn-primary w-[100px] text-center" onclick="addFileInput(${index})">Add File</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
${item.custom_field ? `
|
|
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
|
<label class="form-label max-w-56 capitalize">
|
|
${item.custom_field.replace(/_/g, " ")}
|
|
</label>
|
|
<div class="flex flex-wrap items-baseline w-full">
|
|
${getCustomFieldInput(item.custom_field_type, item.custom_field, item.details)}
|
|
</div>
|
|
</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" name="keterangan[]">${item.keterangan || ''}</textarea>
|
|
</div>
|
|
</div>
|
|
`;
|
|
});
|
|
})
|
|
.catch(error => console.error('Error:', error));
|
|
}
|
|
|
|
function renderExistingFiles(dokumenJaminan, debiturId, itemId) {
|
|
if (typeof dokumenJaminan === 'string') {
|
|
return `
|
|
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}" class="badge badge-sm badge-outline mt-2 mr-2">
|
|
${dokumenJaminan.split('/').pop()}
|
|
<i class="ki-filled ki-cloud-download"></i>
|
|
</a>
|
|
`;
|
|
} else if (Array.isArray(dokumenJaminan)) {
|
|
return dokumenJaminan.map(file => `
|
|
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}&file=${encodeURIComponent(file)}" class="badge badge-sm badge-outline mt-2 mr-2">
|
|
${file.split('/').pop()}
|
|
<i class="ki-filled ki-cloud-download"></i>
|
|
</a>
|
|
`).join('');
|
|
}
|
|
return '';
|
|
}
|
|
|
|
function addFileInput(index) {
|
|
const container = document.getElementById(`file-container-${index}`);
|
|
const newInput = document.createElement('div');
|
|
newInput.className = 'flex items-center gap-2 mb-2 w-full';
|
|
newInput.innerHTML = `
|
|
<input class="file-input" type="file" name="dokumen_jaminan[${index}][]" multiple>
|
|
<button type="button" class="btn btn-danger w-[100px] text-center" onclick="removeFileInput(this)">Remove</button>
|
|
`;
|
|
container.appendChild(newInput);
|
|
}
|
|
|
|
function removeFileInput(button) {
|
|
button.closest('.flex.items-center.gap-2.mb-2').remove();
|
|
}
|
|
|
|
function renderExistingFiles(dokumenJaminan, debiturId, itemId) {
|
|
if (typeof dokumenJaminan === 'string') {
|
|
return `
|
|
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}" class="badge badge-sm badge-outline mt-2">
|
|
${dokumenJaminan.split('/').pop()}
|
|
<i class="ki-filled ki-cloud-download"></i>
|
|
</a>
|
|
`;
|
|
} else if (Array.isArray(dokumenJaminan)) {
|
|
return dokumenJaminan.map(file => `
|
|
<a href="/debitur/${debiturId}/jaminan/download?dokumen=${itemId}&file=${file}" class="badge badge-sm badge-outline mt-2 mr-2">
|
|
${file.split('/').pop()}
|
|
<i class="ki-filled ki-cloud-download"></i>
|
|
</a>
|
|
`).join('');
|
|
}
|
|
return '';
|
|
}
|
|
|
|
function getCustomFieldInput(type, fieldName, value) {
|
|
value = value ? JSON.parse(value)[fieldName] || '' : '';
|
|
switch (type) {
|
|
case "text":
|
|
return `<input class="input" type="text" name="custom_field[][${fieldName}]" value="${value}">`;
|
|
case "number":
|
|
return `<input class="input" type="number" name="custom_field[][${fieldName}]" value="${value}">`;
|
|
case "date":
|
|
return `<input class="input" type="date" name="custom_field[][${fieldName}]" value="${value}">`;
|
|
case "textarea":
|
|
return `<textarea class="textarea" rows="3" name="custom_field[][${fieldName}]">${value}</textarea>`;
|
|
default:
|
|
return `<input class="input" type="text" name="custom_field[][${fieldName}]" value="${value}">`;
|
|
}
|
|
}
|
|
</script>
|
|
@endpush
|