From 16baa94d2be41aeea417098b8a25fdcbf4c42cc0 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 5 Nov 2024 16:23:49 +0700 Subject: [PATCH] Refactor legalitas jaminan functionality Updated route to point to new getLegalitasJaminan method in DokumenJaminanController. Enhanced logic to handle additional parameters and provide more contextual data, including existing document details. Refined Blade template to dynamically load legalitas jaminan fields, ensuring better user experience and maintainability. --- .../Controllers/DokumenJaminanController.php | 60 ++- .../debitur/components/dokumen.blade.php | 349 +++++++++--------- routes/web.php | 2 +- 3 files changed, 241 insertions(+), 170 deletions(-) diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index a562485..90c8000 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -18,6 +18,8 @@ use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\JenisLegalitasJaminan; use Modules\Lpj\Models\PemilikJaminan; + use Illuminate\Http\JsonResponse; + use Illuminate\Support\Collection; use ZipArchive; class DokumenJaminanController extends Controller @@ -402,7 +404,7 @@ return response()->download(storage_path('app/public/' . $document->dokumen_jaminan)); } - public function legalitasJaminan($id, $jaminan) + public function legalitasJaminan($id) { $jenisJaminan = JenisJaminan::find($id); $legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id; @@ -410,4 +412,60 @@ $legalitas = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get(); echo json_encode($legalitas); } + + + public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1) : JsonResponse + { + + $jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId); + $legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id; + $newLegalitasJaminan = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get(); + + $existingLegalitas = []; + $newLegalitas = []; + + // Create a set of new jenis_legalitas_jaminan_ids for quick lookup + $newLegalitasIds = $newLegalitasJaminan->pluck('id')->toArray(); + + if($id>0) { + $document = DokumenJaminan::findOrFail($id); + if ($document && $document->detail) { + foreach ($document->detail as $detail) { + // Only include existing legalitas if its id is in the new set + if (in_array($detail->jenis_legalitas_jaminan_id, $newLegalitasIds)) { + $existingLegalitas[] = [ + 'id' => $detail->id, + 'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id, + 'name' => $detail->name, + 'dokumen_jaminan' => $detail->dokumen_jaminan, + 'custom_field' => $detail->jenisLegalitasJaminan->custom_field, + 'custom_field_type' => $detail->jenisLegalitasJaminan->custom_field_type, + 'details' => $detail->details, + 'keterangan' => $detail->keterangan, + 'is_existing' => true + ]; + } + } + } + } + + foreach ($newLegalitasJaminan as $legalitas) { + if (!Collection::make($existingLegalitas)->contains('jenis_legalitas_jaminan_id', $legalitas->id)) { + $newLegalitas[] = [ + 'id' => null, + 'jenis_legalitas_jaminan_id' => $legalitas->id, + 'name' => $legalitas->name, + 'dokumen_jaminan' => null, + 'custom_field' => $legalitas->custom_field, + 'custom_field_type' => $legalitas->custom_field_type, + 'details' => null, + 'keterangan' => null, + 'is_existing' => false + ]; + } + } + + $combinedLegalitas = array_merge($existingLegalitas, $newLegalitas); + return response()->json($combinedLegalitas); + } } diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 40c55fd..23acee9 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -132,142 +132,141 @@ @enderror - - @if(isset($document->id)) - @php $n = 0; @endphp - @foreach($document->detail as $detail) - -
- - -
- -
- -
- -
-
- -
- -
- - @if(isset($detail->dokumen_jaminan)) - {{ basename($detail->dokumen_jaminan) }} - - @endif -
-
- - @if($detail->details) - @php $custom_field = json_decode($detail->details,true) @endphp +
+ @if(isset($document->id)) + @php $n = 0; @endphp + @foreach($document->detail as $detail) +
-
+ +
+
- +
- @else - @if($detail->jenisLegalitasJaminan->custom_field) + +
+ +
+ + @if(isset($detail->dokumen_jaminan)) + {{ basename($detail->dokumen_jaminan) }} + + @endif +
+
+ + @if($detail->details) + @php $custom_field = json_decode($detail->details,true) @endphp
- @if($detail->jenisLegalitasJaminan->custom_field_type === "text") - - @elseif($detail->jenisLegalitasJaminan->custom_field_type === "number") - - @elseif($detail->jenisLegalitasJaminan->custom_field_type === "date") - - @elseif($detail->jenisLegalitasJaminan->custom_field_type === "textarea") - + +
+
+ @else + @if($detail->jenisLegalitasJaminan->custom_field) +
+ +
+ @if($detail->jenisLegalitasJaminan->custom_field_type === "text") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "number") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "date") + + @elseif($detail->jenisLegalitasJaminan->custom_field_type === "textarea") + + @else + + @endif +
+
+ @endif + @endif + +
+ +
+ +
+
+ @php $n++; @endphp + @endforeach + @foreach($legalitas as $item) +
+ + +
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + @if($item->custom_field) +
+ +
+ @if($item->custom_field_type === "text") + + @elseif($item->custom_field_type === "number") + + @elseif($item->custom_field_type === "date") + + @elseif($item->custom_field_type === "textarea") + @else - + @endif
@endif - @endif -
- -
- -
-
- @php $n++; @endphp - @endforeach - @foreach($legalitas as $item) -
- - -
- -
- -
- -
-
- -
- -
- -
-
- - @if($item->custom_field)
-
- @endif - -
- -
- -
-
- @php $n++; @endphp - @endforeach - @else - + @php $n++; @endphp + @endforeach +
@endif
@@ -445,11 +444,14 @@ @endpush diff --git a/routes/web.php b/routes/web.php index f821e44..44ea0fa 100644 --- a/routes/web.php +++ b/routes/web.php @@ -66,7 +66,7 @@ Route::middleware(['auth'])->group(function () { Route::resource('jenis-legalitas-jaminan', JenisLegalitasJaminanController::class); Route::name('jenis-jaminan.')->prefix('jenis-jaminan')->group(function () { - Route::get('legalitas/{id}', [JenisJaminanController::class, 'legalitasJaminan'])->name('legalitas'); + Route::get('legalitas/{id}/{jenisJaminanId}', [DokumenJaminanController::class, 'getLegalitasJaminan'])->name('legalitas'); Route::get('restore/{id}', [JenisJaminanController::class, 'restore'])->name('restore'); Route::get('datatables', [JenisJaminanController::class, 'dataForDatatables'])->name('datatables'); Route::get('export', [JenisJaminanController::class, 'export'])->name('export');