Tambahkan validasi dan relasi dokumen jaminan pada permohonan

- Menambahkan pengecekan keberadaan dokumen jaminan saat membuat atau memperbarui permohonan.
- Menambahkan relasi `has('documents')` pada query permohonan untuk memastikan hanya data yang memiliki dokumen terkait yang ditampilkan.
- Menambahkan tampilan nomor permohonan di komponen dokumen pada view.
- Merapikan dan memperbaiki format kode pada berbagai fungsi controller.
This commit is contained in:
Daeng Deni Mardaeni
2025-01-01 20:48:04 +07:00
parent 64ba6cf71e
commit 8a69970542
3 changed files with 56 additions and 20 deletions

View File

@@ -8,6 +8,7 @@
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Log;
use Modules\Location\Models\City; use Modules\Location\Models\City;
use Modules\Location\Models\District; use Modules\Location\Models\District;
use Modules\Location\Models\Province; use Modules\Location\Models\Province;
@@ -20,6 +21,7 @@
use Modules\Lpj\Models\JenisJaminan; use Modules\Lpj\Models\JenisJaminan;
use Modules\Lpj\Models\JenisLegalitasJaminan; use Modules\Lpj\Models\JenisLegalitasJaminan;
use Modules\Lpj\Models\PemilikJaminan; use Modules\Lpj\Models\PemilikJaminan;
use Modules\Lpj\Models\Permohonan;
use ZipArchive; use ZipArchive;
class DokumenJaminanController extends Controller class DokumenJaminanController extends Controller
@@ -31,6 +33,13 @@
{ {
$debitur = Debiture::find($id); $debitur = Debiture::find($id);
$documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get(); $documents = DokumenJaminan::with('pemilik', 'detail')->where('debiture_id', $id)->get();
if (request()->get('permohonan_id') !== null) {
$permohonan_id = request()->get('permohonan_id');
$documents = DokumenJaminan::with('pemilik', 'detail')
->where('debiture_id', $id)
->where('permohonan_id', $permohonan_id)
->get();
}
return view( return view(
'lpj::debitur.edit', 'lpj::debitur.edit',
@@ -127,7 +136,10 @@
$jenisLegalitasJaminan = JenisLegalitasJaminan::all(); $jenisLegalitasJaminan = JenisLegalitasJaminan::all();
$pemilikJaminan = PemilikJaminan::where('debiture_id', $id)->get(); $pemilikJaminan = PemilikJaminan::where('debiture_id', $id)->get();
$hubunganPemilik = HubunganPemilikJaminan::all(); $hubunganPemilik = HubunganPemilikJaminan::all();
$permohonan = null;
if(request()->get('permohonan_id')) {
$permohonan = Permohonan::where('id', request()->get('permohonan_id'))->first();
}
return view( return view(
'lpj::debitur.jaminan', 'lpj::debitur.jaminan',
compact( compact(
@@ -137,6 +149,7 @@
'jenisLegalitasJaminan', 'jenisLegalitasJaminan',
'pemilikJaminan', 'pemilikJaminan',
'hubunganPemilik', 'hubunganPemilik',
'permohonan'
), ),
); );
} }
@@ -238,7 +251,7 @@
]; ];
$dokumenJaminan = []; $dokumenJaminan = [];
$dokumenNomor=[]; $dokumenNomor = [];
if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) { if (isset($request->dokumen_jaminan[$key]) && is_array($request->dokumen_jaminan[$key])) {
foreach ($request->dokumen_jaminan[$key] as $index => $file) { foreach ($request->dokumen_jaminan[$key] as $index => $file) {
@@ -311,7 +324,8 @@
public function edit( public function edit(
$id, $id,
$jaminan, $jaminan,
) { )
{
$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();
@@ -325,9 +339,9 @@
$jenisJaminan = JenisJaminan::all(); $jenisJaminan = JenisJaminan::all();
$jenisLegalitasJaminan = JenisLegalitasJaminan::all(); $jenisLegalitasJaminan = JenisLegalitasJaminan::all();
$_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id); $_jenisJaminan = JenisJaminan::find($document->jenis_jaminan_id);
$legalitas=''; $legalitas = '';
if($_jenisJaminan) { if ($_jenisJaminan) {
$legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true); $legalitasJaminan = json_decode($_jenisJaminan->jenis_legalitas_jaminan_id, true);
$currentLegalitasJaminan = JenisLegalitasJaminan::whereIn( $currentLegalitasJaminan = JenisLegalitasJaminan::whereIn(
@@ -367,7 +381,8 @@
public function destroy( public function destroy(
$id, $id,
$jaminan_id, $jaminan_id,
) { )
{
try { try {
$jaminan = DokumenJaminan::find($jaminan_id); $jaminan = DokumenJaminan::find($jaminan_id);
$details = DetailDokumenJaminan::where('dokumen_jaminan_id', $jaminan->id)->get(); $details = DetailDokumenJaminan::where('dokumen_jaminan_id', $jaminan->id)->get();
@@ -385,7 +400,7 @@
public function bulkDownload() public function bulkDownload()
{ {
$dokumenIds = request()->get('jaminan'); // Expecting an array of dokumen_jaminan_id $dokumenIds = request()->get('jaminan'); // Expecting an array of dokumen_jaminan_id
$documents = DokumenJaminan::where('id', $dokumenIds)->with(['jenisJaminan', 'detail','debiture'])->get(); $documents = DokumenJaminan::where('id', $dokumenIds)->with(['jenisJaminan', 'detail', 'debiture'])->get();
if ($documents->isEmpty()) { if ($documents->isEmpty()) {
return redirect()->back()->with('error', 'No documents found for the provided IDs.'); return redirect()->back()->with('error', 'No documents found for the provided IDs.');
@@ -397,23 +412,23 @@
if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) { if ($zip->open($zipFilePath, ZipArchive::CREATE) === true) {
foreach ($documents as $document) { foreach ($documents as $document) {
$jenisJaminan = $document->debiture->permohonan->nomor_registrasi ?? 'Uncategorized'; $jenisJaminan = $document->debiture->permohonan->nomor_registrasi ?? 'Uncategorized';
$folderName = $this->sanitizeFolderName($jenisJaminan); $folderName = $this->sanitizeFolderName($jenisJaminan);
foreach ($document->detail as $detail) { foreach ($document->detail as $detail) {
if($detail->dokumen_jaminan) { if ($detail->dokumen_jaminan) {
$folderJaminanName = $this->sanitizeFolderName($detail->jenisLegalitasJaminan->name?? 'Uncategorized'); $folderJaminanName = $this->sanitizeFolderName($detail->jenisLegalitasJaminan->name ?? 'Uncategorized');
$files = is_array(json_decode($detail->dokumen_jaminan)) $files = is_array(json_decode($detail->dokumen_jaminan))
? json_decode($detail->dokumen_jaminan) ? json_decode($detail->dokumen_jaminan)
: [$detail->dokumen_jaminan]; : [$detail->dokumen_jaminan];
foreach ($files as $file) { foreach ($files as $file) {
$filePath = storage_path('app/public/' . $file); $filePath = storage_path('app/public/' . $file);
if (file_exists($filePath)) { if (file_exists($filePath)) {
$zip->addFile($filePath, $folderName . '/' .$folderJaminanName.'/'.basename($filePath)); $zip->addFile($filePath, $folderName . '/' . $folderJaminanName . '/' . basename($filePath));
} else { } else {
// Log or display an error message for missing files // Log or display an error message for missing files
\Log::warning('File not found: ' . $filePath); Log::warning('File not found: ' . $filePath);
} }
} }
} }
@@ -463,7 +478,8 @@
public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1) public function getLegalitasJaminan($id = 10, $jenisJaminanId = 1)
: JsonResponse { : JsonResponse
{
$jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId); $jenisJaminan = JenisJaminan::findOrFail($jenisJaminanId);
$legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id; $legalitasJaminan = $jenisJaminan->jenis_legalitas_jaminan_id;
$newLegalitasJaminan = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get(); $newLegalitasJaminan = JenisLegalitasJaminan::whereIn('code', json_decode($legalitasJaminan, true))->get();
@@ -487,7 +503,7 @@
'dokumen_jaminan' => json_decode( 'dokumen_jaminan' => json_decode(
$detail->dokumen_jaminan, $detail->dokumen_jaminan,
) ?? $detail->dokumen_jaminan, ) ?? $detail->dokumen_jaminan,
'dokumen_nomor' => json_decode( 'dokumen_nomor' => json_decode(
$detail->dokumen_nomor, $detail->dokumen_nomor,
) ?? $detail->dokumen_nomor, ) ?? $detail->dokumen_nomor,
'custom_field' => $detail->jenisLegalitasJaminan->custom_field, 'custom_field' => $detail->jenisLegalitasJaminan->custom_field,
@@ -508,7 +524,7 @@
'jenis_legalitas_jaminan_id' => $legalitas->id, 'jenis_legalitas_jaminan_id' => $legalitas->id,
'name' => $legalitas->name, 'name' => $legalitas->name,
'dokumen_jaminan' => null, 'dokumen_jaminan' => null,
'dokumen_nomor' => null, 'dokumen_nomor' => null,
'custom_field' => $legalitas->custom_field, 'custom_field' => $legalitas->custom_field,
'custom_field_type' => $legalitas->custom_field_type, 'custom_field_type' => $legalitas->custom_field_type,
'details' => null, 'details' => null,

View File

@@ -69,6 +69,11 @@
$permohonan->toArray(), $permohonan->toArray(),
$filePath, $filePath,
); );
$documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get();
if(count($documents)<1){
return redirect()->route('debitur.jaminan.create', array_merge(['permohonan_id'=>$permohonan->id],['id'=> $permohonan->debiture->id]))->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu');
}
return redirect() return redirect()
->route('permohonan.index')->with('success', 'Permohonan created successfully'); ->route('permohonan.index')->with('success', 'Permohonan created successfully');
} catch (Exception $e) { } catch (Exception $e) {
@@ -151,6 +156,11 @@
} }
$permohonan->update($validate); $permohonan->update($validate);
$documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get();
if(count($documents)<1){
return redirect()->route('debitur.jaminan.create', array_merge(['permohonan_id'=>$permohonan->id],['id'=> $permohonan->debiture->id]))->with('success', 'Permohonan created successfully, Lengkapi data jaminan terlebih dahulu');
}
return redirect() return redirect()
->route('permohonan.index')->with('success', 'Permohonan updated successfully'); ->route('permohonan.index')->with('success', 'Permohonan updated successfully');
} catch (Exception $e) { } catch (Exception $e) {
@@ -265,7 +275,7 @@
} }
// Retrieve data from the database // Retrieve data from the database
$query = Permohonan::query(); $query = Permohonan::query()->with('documents')->has('documents', '>', 0)->where('status', '=', 'order');
// Apply search filter if provided // Apply search filter if provided
if ($request->has('search') && !empty($request->get('search'))) { if ($request->has('search') && !empty($request->get('search'))) {
@@ -304,7 +314,7 @@
$filteredRecords = $query->count(); $filteredRecords = $query->count();
// Get the data for the current page // Get the data for the current page
$data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->where('status', '=', 'order')->get( $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(
); );
// Calculate the page count // Calculate the page count

View File

@@ -16,6 +16,16 @@
</p> </p>
</div> </div>
</div> </div>
<div class="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
<label class="form-label max-w-56">
Nomor Permohonan
</label>
<div class="flex flex-wrap items-baseline w-full">
<p class="text-base text-gray-700 font-bold">
{{ $permohonan->nomor_registrasi ?? "-" }}
</p>
</div>
</div>
<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"> <label class="form-label max-w-56">
Pemilik Jaminan Pemilik Jaminan