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');