Update legal document handling in DokumenJaminanController

Refactored the detailed document processing logic to include handling of 'jenis_legalitas_jaminan_id' instead of 'detail_dokumen_jaminan_id'. Enhanced the view to dynamically add new legal documents, ensuring proper data handling and validation.
This commit is contained in:
Daeng Deni Mardaeni
2024-11-05 12:02:12 +07:00
parent be89941651
commit 85f8e3b482
2 changed files with 90 additions and 11 deletions

View File

@@ -223,9 +223,8 @@
$document = DokumenJaminan::find($jaminan); $document = DokumenJaminan::find($jaminan);
$document->update($validate); $document->update($validate);
if($request->jenis_legalitas_jaminan_id){
if ($request->detail_dokumen_jaminan_id) { foreach($request->jenis_legalitas_jaminan_id as $key => $value){
foreach ($request->detail_dokumen_jaminan_id as $key => $value) {
if (isset($request->dokumen_jaminan[$key])) { if (isset($request->dokumen_jaminan[$key])) {
$file = $request->dokumen_jaminan[$key]; $file = $request->dokumen_jaminan[$key];
if ($file) { if ($file) {
@@ -245,6 +244,7 @@
'name' => $request->name[$key], 'name' => $request->name[$key],
'keterangan' => $request->keterangan[$key], 'keterangan' => $request->keterangan[$key],
]; ];
if (isset($request->detail_dokumen_jaminan_id[$key])) { if (isset($request->detail_dokumen_jaminan_id[$key])) {
$detailDocument = DetailDokumenJaminan::find( $detailDocument = DetailDokumenJaminan::find(
$request->detail_dokumen_jaminan_id[$key], $request->detail_dokumen_jaminan_id[$key],
@@ -252,6 +252,9 @@
$detailDocument->update($detail); $detailDocument->update($detail);
$detailDocument->save(); $detailDocument->save();
} else {
$detailDocument = DetailDokumenJaminan::create($detail);
$detailDocument->save();
} }
} }
} else { } else {
@@ -290,13 +293,29 @@
) { ) {
$document = DokumenJaminan::find($jaminan); $document = DokumenJaminan::find($jaminan);
$details = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get(); $details = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get();
$debitur = Debiture::find($document->debiture_id); $debitur = Debiture::find($document->debiture_id);
$provinces = Province::all(); $provinces = Province::all();
$cities = City::where('province_code', $document->province_code)->get(); $cities = City::where('province_code', $document->province_code)->get();
$districts = District::where('city_code', $document->city_code)->get(); $districts = District::where('city_code', $document->city_code)->get();
$villages = Village::where('district_code', $document->district_code)->get(); $villages = Village::where('district_code', $document->district_code)->get();
$jenisJaminan = JenisJaminan::all(); $jenisJaminan = JenisJaminan::all();
$jenisLegalitasJaminan = JenisLegalitasJaminan::all(); $jenisLegalitasJaminan = JenisLegalitasJaminan::all();
$_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id);
$legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true);
$currentLegalitasJaminan = JenisLegalitasJaminan::whereIn('id',$document->detail->pluck('jenis_legalitas_jaminan_id')->toArray())->get();
// Remove values from $legalitasJaminan that are in $currentLegalitasJaminan
$legalitasJaminan = array_diff($legalitasJaminan, $currentLegalitasJaminan->pluck('code')->toArray());
$legalitas = JenisLegalitasJaminan::whereIn('code', $legalitasJaminan)->get();
$pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get(); $pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get();
$hubunganPemilik = HubunganPemilikJaminan::all(); $hubunganPemilik = HubunganPemilikJaminan::all();
@@ -314,6 +333,7 @@
'villages', 'villages',
'pemilikJaminan', 'pemilikJaminan',
'hubunganPemilik', 'hubunganPemilik',
'legalitas'
), ),
); );
} }

View File

@@ -134,11 +134,12 @@
</div> </div>
@if(isset($document->id)) @if(isset($document->id))
@php $n = 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">
<label class="form-label max-w-56 font-bold"> <label class="form-label max-w-56 font-bold">
{{ $loop->index + 1 }}. {{ $detail->jenisLegalitasJaminan->name }} {{ $n + 1 }}. {{ $detail->jenisLegalitasJaminan->name }}
</label> </label>
<input type="hidden" name="jenis_legalitas_jaminan_id[]" value=" {{ $detail->jenis_legalitas_jaminan_id }}"> <input type="hidden" name="jenis_legalitas_jaminan_id[]" value=" {{ $detail->jenis_legalitas_jaminan_id }}">
</div> </div>
@@ -167,14 +168,14 @@
@if($detail->details) @if($detail->details)
@php $custom_field = json_decode($detail->details,true) @endphp @php $custom_field = json_decode($detail->details,true) @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 capitalize">
{{ str_replace('_',' ',$detail->jenisLegalitasJaminan->custom_field) }} {{ str_replace('_',' ',$detail->jenisLegalitasJaminan->custom_field) }}
</label> </label>
<div class="flex flex-wrap items-baseline w-full"> <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] }}"> <input class="input" type="text" name="custom_field[][$detail->jenisLegalitasJaminan->custom_field]" value="{{ $custom_field[$detail->jenisLegalitasJaminan->custom_field] }}">
</div>
</div> </div>
</div>
@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">
@@ -185,6 +186,64 @@
<textarea class="textarea" rows="3" type="number" name="keterangan[]">{{ $detail->keterangan ?? "" }}</textarea> <textarea class="textarea" rows="3" type="number" name="keterangan[]">{{ $detail->keterangan ?? "" }}</textarea>
</div> </div>
</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}}]">
@elseif($item->custom_field_type === "number")
<input class="input" type="number" name="custom_field[][{{$item->custom_field}}]">
@elseif($item->custom_field_type === "date")
<input class="input" type="date" name="custom_field[][{{$item->custom_field}}]">
@elseif($item->custom_field_type === "textarea")
<textarea class="textarea" rows="3" name="custom_field[][{{$item->custom_field}}]"></textarea>
@else
<input class="input" type="text" name="custom_field[][{{$item->custom_field}}]">
@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 @endforeach
@else @else
<div id="doctainer" class="grid gap-5"> <div id="doctainer" class="grid gap-5">