From efd0d570da787a2dce1cf92dda5d03e31072b4ae Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Thu, 7 Nov 2024 13:49:02 +0700 Subject: [PATCH] Tambah nomor dokumen untuk dokumen jaminan Menambahkan kolom 'dokumen_nomor' pada model DetailDokumenJaminan serta melakukan update terkait di controller dan view. Perubahan ini memungkinkan pengguna untuk memasukkan nomor dokumen selain file dokumen jaminan. Rutin yang terkait dengan penyimpanan dan pengambilan dokumen diperbarui untuk menangani data nomor dokumen. Perbaikan minor pada penataan kode juga dilakukan untuk konsistensi. --- .../Controllers/DokumenJaminanController.php | 175 ++++++++++-------- app/Models/DetailDokumenJaminan.php | 1 + .../debitur/components/dokumen.blade.php | 38 ++-- 3 files changed, 119 insertions(+), 95 deletions(-) diff --git a/app/Http/Controllers/DokumenJaminanController.php b/app/Http/Controllers/DokumenJaminanController.php index 60ff7a8..b3cfe8a 100644 --- a/app/Http/Controllers/DokumenJaminanController.php +++ b/app/Http/Controllers/DokumenJaminanController.php @@ -4,6 +4,8 @@ use App\Http\Controllers\Controller; use Exception; + use Illuminate\Http\JsonResponse; + use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; use Modules\Location\Models\City; @@ -18,8 +20,6 @@ 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 @@ -72,45 +72,41 @@ $document = DokumenJaminan::create($validate); - try { - foreach ($request->dokumen_jaminan as $key => $value) { - $file_name = $value->getClientOriginalName(); + if ($request->jenis_legalitas_jaminan_id) { + foreach ($request->jenis_legalitas_jaminan_id as $key => $value) { + $detailData = [ + 'dokumen_jaminan_id' => $document->id, + 'jenis_legalitas_jaminan_id' => $value, + 'name' => $request->name[$key], + 'keterangan' => $request->keterangan[$key], + ]; - if ($file_name) { - try { - $file_name = $value->getClientOriginalName(); - $value->storeAs( - 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', - $file_name, - ); - - $detail = [ - 'dokumen_jaminan_id' => $document->id, - 'jenis_legalitas_jaminan_id' => $request->jenis_legalitas_jaminan_id[$key], - 'dokumen_jaminan' => 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name, - 'name' => $request->name[$key], - 'keterangan' => $request->keterangan[$key], - 'details' => isset($request->custom_field[$key]) ? json_encode($request->custom_field[$key]) : '', - ]; - DetailDokumenJaminan::create($detail); - } catch (Exception $e) { - DB::rollBack(); - return redirect()->route('debitur.jaminan.index', $id)->with( - 'error', - 'Gagal upload file dokumen jaminan ' . $key . ': ' . $e->getMessage(), - ); + $dokumenJaminan = []; + $dokumenNomor = []; + if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) { + foreach ($request->dokumen_jaminan[$key] as $index => $file) { + if ($file) { + $file_name = $file->getClientOriginalName(); + $file->storeAs( + 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', + $file_name, + ); + $dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; + $dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? ''; + } } } + + if (!empty($dokumenJaminan)) { + $detailData['dokumen_jaminan'] = json_encode($dokumenJaminan); + $detailData['dokumen_nomor'] = json_encode($dokumenNomor); + } + + DetailDokumenJaminan::create($detailData); } - DB::commit(); - } catch (Exception $e) { - DB::rollBack(); - return redirect()->route('debitur.jaminan.index', $id)->with( - 'error', - 'gg' . $e->getMessage(), - ); } + DB::commit(); return redirect()->route('debitur.jaminan.index', $id)->with( 'success', 'Dokumen Jaminan berhasil ditambahkan', @@ -149,6 +145,7 @@ $debitur = Debiture::find($id); $validate = $request->validated(); + if ($validate) { try { DB::beginTransaction(); @@ -226,44 +223,59 @@ $document->update($validate); // Get existing detail documents - $existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy('id'); + $existingDetails = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get()->keyBy( + 'id', + ); - if($request->jenis_legalitas_jaminan_id){ - foreach($request->jenis_legalitas_jaminan_id as $key => $value){ + if ($request->jenis_legalitas_jaminan_id) { + foreach ($request->jenis_legalitas_jaminan_id as $key => $value) { $detailData = [ - 'dokumen_jaminan_id' => $document->id, + 'dokumen_jaminan_id' => $document->id, 'jenis_legalitas_jaminan_id' => $value, - 'name' => $request->name[$key], - 'keterangan' => $request->keterangan[$key], + 'name' => $request->name[$key], + 'keterangan' => $request->keterangan[$key], ]; $dokumenJaminan = []; + $dokumenNomor=[]; + if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) { - foreach($request->dokumen_jaminan[$key] as $file) { + foreach ($request->dokumen_jaminan[$key] as $index => $file) { if ($file) { $file_name = $file->getClientOriginalName(); $file->storeAs( 'public/jaminan/' . $debitur->id . '/' . $document->id . '/', - $file_name + $file_name, ); $dokumenJaminan[] = 'jaminan/' . $debitur->id . '/' . $document->id . '/' . $file_name; + $dokumenNomor[] = $request->dokumen_nomor[$key][$index] ?? ''; } } } if (!empty($dokumenJaminan)) { $detailData['dokumen_jaminan'] = json_encode($dokumenJaminan); + $detailData['dokumen_nomor'] = json_encode($dokumenNomor); } 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); if ($detailDocument) { // Merge new files with existing ones if (!empty($dokumenJaminan)) { - $existingFiles = json_decode($detailDocument->dokumen_jaminan, true) ?: []; - $mergedFiles = array_merge($existingFiles, $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); @@ -299,24 +311,26 @@ $id, $jaminan, ) { - $document = DokumenJaminan::find($jaminan); - $details = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get(); + $document = DokumenJaminan::find($jaminan); + $details = DetailDokumenJaminan::where('dokumen_jaminan_id', $document->id)->get(); - $debitur = Debiture::find($document->debiture_id); - $provinces = Province::all(); - $cities = City::where('province_code', $document->province_code)->get(); - $districts = District::where('city_code', $document->city_code)->get(); - $villages = Village::where('district_code', $document->district_code)->get(); + $debitur = Debiture::find($document->debiture_id); + $provinces = Province::all(); + $cities = City::where('province_code', $document->province_code)->get(); + $districts = District::where('city_code', $document->city_code)->get(); + $villages = Village::where('district_code', $document->district_code)->get(); $jenisJaminan = JenisJaminan::all(); $jenisLegalitasJaminan = JenisLegalitasJaminan::all(); - $_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id); + $_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(); - + $currentLegalitasJaminan = JenisLegalitasJaminan::whereIn( + 'id', + $document->detail->pluck('jenis_legalitas_jaminan_id')->toArray(), + )->get(); // Remove values from $legalitasJaminan that are in $currentLegalitasJaminan @@ -324,8 +338,8 @@ $legalitas = JenisLegalitasJaminan::whereIn('code', $legalitasJaminan)->get(); - $pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get(); - $hubunganPemilik = HubunganPemilikJaminan::all(); + $pemilikJaminan = PemilikJaminan::where('debiture_id', $document->debiture_id)->get(); + $hubunganPemilik = HubunganPemilikJaminan::all(); return view( 'lpj::debitur.jaminan', @@ -341,7 +355,7 @@ 'villages', 'pemilikJaminan', 'hubunganPemilik', - 'legalitas' + 'legalitas', ), ); } @@ -378,7 +392,9 @@ if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) { foreach ($documents as $document) { - $files = is_array(json_decode($document->dokumen_jaminan)) ? json_decode($document->dokumen_jaminan) : [$document->dokumen_jaminan]; + $files = is_array(json_decode($document->dokumen_jaminan)) ? json_decode( + $document->dokumen_jaminan, + ) : [$document->dokumen_jaminan]; foreach ($files as $file) { $filePath = storage_path('app/public/' . $file); @@ -411,7 +427,9 @@ { $dokumen = request()->get('dokumen'); $document = DetailDokumenJaminan::find($dokumen); - $file = is_array(json_decode($document->dokumen_jaminan)) ? json_decode($document->dokumen_jaminan) : [$document->dokumen_jaminan]; + $file = is_array(json_decode($document->dokumen_jaminan)) ? json_decode( + $document->dokumen_jaminan, + ) : [$document->dokumen_jaminan]; return response()->download(storage_path('app/public/' . $file[request()->get('index')])); } @@ -425,20 +443,19 @@ } - public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1) : JsonResponse - { - - $jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId); - $legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id; + 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 = []; + $newLegalitas = []; // Create a set of new jenis_legalitas_jaminan_ids for quick lookup $newLegalitasIds = $newLegalitasJaminan->pluck('id')->toArray(); - if($id>0) { + if ($id > 0) { $document = DokumenJaminan::findOrFail($id); if ($document && $document->detail) { foreach ($document->detail as $detail) { @@ -448,12 +465,14 @@ 'id' => $detail->id, 'jenis_legalitas_jaminan_id' => $detail->jenis_legalitas_jaminan_id, 'name' => $detail->jenisLegalitasJaminan->name, - 'dokumen_jaminan' => json_decode($detail->dokumen_jaminan) ?? $detail->dokumen_jaminan, + 'dokumen_jaminan' => json_decode( + $detail->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 + 'is_existing' => true, ]; } } @@ -463,15 +482,15 @@ foreach ($newLegalitasJaminan as $legalitas) { if (!Collection::make($existingLegalitas)->contains('jenis_legalitas_jaminan_id', $legalitas->id)) { $newLegalitas[] = [ - 'id' => null, + '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 + '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, ]; } } diff --git a/app/Models/DetailDokumenJaminan.php b/app/Models/DetailDokumenJaminan.php index 487cf75..ad76f13 100644 --- a/app/Models/DetailDokumenJaminan.php +++ b/app/Models/DetailDokumenJaminan.php @@ -16,6 +16,7 @@ 'jenis_legalitas_jaminan_id', 'name', 'dokumen_jaminan', + 'dokumen_nomor', 'keterangan', 'details', 'status', diff --git a/resources/views/debitur/components/dokumen.blade.php b/resources/views/debitur/components/dokumen.blade.php index 4278656..35fc4d0 100644 --- a/resources/views/debitur/components/dokumen.blade.php +++ b/resources/views/debitur/components/dokumen.blade.php @@ -146,10 +146,10 @@
- +
@@ -158,10 +158,11 @@ Dokumen Jaminan
-
+
- - + + +
@@ -234,10 +235,10 @@
- +
@@ -246,10 +247,11 @@ Dokumen Jaminan
-
+
- - + + +
@@ -287,8 +289,8 @@
@php $n++; @endphp @endforeach + @endif
- @endif
@@ -565,8 +568,9 @@ const newInput = document.createElement('div'); newInput.className = 'flex items-center gap-2 mb-2 w-full'; newInput.innerHTML = ` - - + + + `; container.appendChild(newInput); }