refactor(controllers): perbaikan struktur kode controllers Permohonan dan Penilai

- Reformat kode untuk meningkatkan keterbacaan, termasuk penghapusan spasi kosong yang tidak diperlukan.
- Penyesuaian indentasi dan konsistensi format import pada `PermohonanController`.
- Optimasi fungsi data handling pada fungsi-fungsi terkait permohonan seperti `update`, `destroy`, `dataForDatatables`, dan `dataForAuthorization`.
- Penyesuaian pemetaan data output dalam format JSON pada datatables.
- Penghapusan elemen komentar yang tidak relevan atau redundant.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-05-05 11:39:05 +07:00
parent e6d05cc4aa
commit 7f6c702683
3 changed files with 489 additions and 470 deletions

View File

@@ -3,15 +3,16 @@
namespace Modules\Lpj\Http\Controllers; namespace Modules\Lpj\Http\Controllers;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Barryvdh\DomPDF\Facade\Pdf;
use Exception; use Exception;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel; use Maatwebsite\Excel\Facades\Excel;
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;
use Modules\Location\Models\Village; use Modules\Location\Models\Village;
use Modules\Lpj\Models\PermohonanPembatalan;
use Modules\Lpj\Exports\PermohonanExport; use Modules\Lpj\Exports\PermohonanExport;
use Modules\Lpj\Http\Requests\PermohonanRequest; use Modules\Lpj\Http\Requests\PermohonanRequest;
use Modules\Lpj\Models\Branch; use Modules\Lpj\Models\Branch;
@@ -19,16 +20,12 @@ use Modules\Lpj\Models\Debiture;
use Modules\Lpj\Models\DokumenJaminan; use Modules\Lpj\Models\DokumenJaminan;
use Modules\Lpj\Models\JenisFasilitasKredit; use Modules\Lpj\Models\JenisFasilitasKredit;
use Modules\Lpj\Models\NilaiPlafond; use Modules\Lpj\Models\NilaiPlafond;
use Modules\Lpj\Models\Penilaian;
use Modules\Lpj\Models\Permohonan; use Modules\Lpj\Models\Permohonan;
use Modules\Lpj\Models\PermohonanPembatalan;
use Modules\Lpj\Models\StatusPermohonan; use Modules\Lpj\Models\StatusPermohonan;
use Modules\Lpj\Models\TujuanPenilaian; use Modules\Lpj\Models\TujuanPenilaian;
use Modules\Lpj\Notifications\PermohonanNotif;
use Modules\Lpj\Services\PermohonanHistoryService; use Modules\Lpj\Services\PermohonanHistoryService;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\DB;
use Modules\Lpj\Models\Penilaian;
use Modules\Usermanagement\Models\User;
class PermohonanController extends Controller class PermohonanController extends Controller
{ {
@@ -77,7 +74,10 @@ class PermohonanController extends Controller
$documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get(); $documents = DokumenJaminan::where('permohonan_id', $permohonan->id)->get();
if (count($documents) < 1) { 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()->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');
@@ -146,35 +146,6 @@ class PermohonanController extends Controller
); );
} }
public function update(PermohonanRequest $request, $id)
{
$permohonan = Permohonan::findOrFail($id);
$beforeRequest = $permohonan->toArray();
$validate = $request->validated();
if ($validate) {
try {
// Update in database
if ($permohonan->status == 'revisi') {
$validate['status'] = 'order';
}
$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()
->route('permohonan.index')->with('success', 'Permohonan updated successfully');
} catch (Exception $e) {
return redirect()
->route('permohonan.edit', $id)->with('error', 'Failed to update permohonan');
}
}
}
public function destroy($id) public function destroy($id)
{ {
try { try {
@@ -244,7 +215,37 @@ class PermohonanController extends Controller
$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', 'penilaian','documents'])->get(); $data = $query->get();
$data = $data->map(function ($item) {
return [
'id' => $item->id,
'nomor_registrasi' => $item->nomor_registrasi,
'mig_mst_lpj_nomor_jaminan' => $item->mig_mst_lpj_nomor_jaminan,
'tanggal_permohonan' => $item->tanggal_permohonan ? dateFormat(
$item->tanggal_permohonan,
) : null,
'pemohon' => $item->user->name ?? 'N/A',
'branch' => $item->branch->name ?? 'N/A',
'debiture' => [
'name' => $item->debiture->name,
],
'tujuan_penilaian' => [
'code' => $item->tujuanPenilaian->code ?? null,
'name' => $item->tujuanPenilaian->name ?? null,
],
'status' => $item->status,
'documents' => count($item->documents),
'keterangan' => $item->keterangan,
'penilaian' => [
'id' => $item->penilaian->id ?? null,
'waktu_penilaian' => $item->penilaian->waktu_penilaian ?? null,
'rejected_note' => $item->penilaian->rejected_note ?? null,
'authorized_status' => $item->penilaian->authorized_status ?? null,
],
'registrasi_catatan' => $item->registrasi_catatan,
];
});
// Calculate the page count // Calculate the page count
$pageCount = ceil($totalRecords / $size); $pageCount = ceil($totalRecords / $size);
@@ -324,8 +325,7 @@ class PermohonanController extends Controller
$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'])->get( $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get();
);
// Calculate the page count // Calculate the page count
$pageCount = ceil($totalRecords / $request->get('size')); $pageCount = ceil($totalRecords / $request->get('size'));
@@ -387,7 +387,6 @@ class PermohonanController extends Controller
return view('lpj::permohonan.pembatalan-form', compact('permohonan')); return view('lpj::permohonan.pembatalan-form', compact('permohonan'));
} }
public function pembatalan(Request $request) public function pembatalan(Request $request)
{ {
// Validate the request // Validate the request
@@ -414,8 +413,8 @@ class PermohonanController extends Controller
return redirect()->route('permohonan.index')->with('success', 'Pembatalan Permohonan Menunggu Approval'); return redirect()->route('permohonan.index')->with('success', 'Pembatalan Permohonan Menunggu Approval');
} }
public function storeAproved(Request $request, $id): JsonResponse public function storeAproved(Request $request, $id)
{ : JsonResponse {
$data = []; $data = [];
if (request()->ajax()) { if (request()->ajax()) {
try { try {
@@ -427,16 +426,15 @@ class PermohonanController extends Controller
$permohonan = Permohonan::findOrFail($request->permohonan_id); $permohonan = Permohonan::findOrFail($request->permohonan_id);
$permohonan->update([ $permohonan->update([
'status' => 'proses-survey' 'status' => 'proses-survey',
]); ]);
$data['status'] = 'success'; $data['status'] = 'success';
$data['message'] = 'Jadwal ' . $request->noReg . ' berhasil di aprove'; $data['message'] = 'Jadwal ' . $request->noReg . ' berhasil di aprove';
} catch (\Exception $e) { } catch (Exception $e) {
$data['status'] = 'error'; $data['status'] = 'error';
$data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage(); $data['message'] = 'Gagal membuat jadwal: ' . $e->getMessage();
} }
} else { } else {
$data['status'] = 'error'; $data['status'] = 'error';
$data['message'] = "no ajax request"; $data['message'] = "no ajax request";
@@ -445,6 +443,37 @@ class PermohonanController extends Controller
return response()->json($data); return response()->json($data);
} }
public function update(PermohonanRequest $request, $id)
{
$permohonan = Permohonan::findOrFail($id);
$beforeRequest = $permohonan->toArray();
$validate = $request->validated();
if ($validate) {
try {
// Update in database
if ($permohonan->status == 'revisi') {
$validate['status'] = 'order';
}
$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()
->route('permohonan.index')->with('success', 'Permohonan updated successfully');
} catch (Exception $e) {
return redirect()
->route('permohonan.edit', $id)->with('error', 'Failed to update permohonan');
}
}
}
public function storeRescheduleSurvey(Request $request, $id) public function storeRescheduleSurvey(Request $request, $id)
{ {
@@ -455,14 +484,14 @@ class PermohonanController extends Controller
'nomor_registrasi' => 'required', 'nomor_registrasi' => 'required',
'reschedule_note' => 'required', 'reschedule_note' => 'required',
'reschedule_date' => 'required', 'reschedule_date' => 'required',
'keterangan' => 'required' 'keterangan' => 'required',
]); ]);
DB::beginTransaction(); DB::beginTransaction();
$permohonan = Permohonan::findOrFail($request->permohonan_id); $permohonan = Permohonan::findOrFail($request->permohonan_id);
$permohonan->update([ $permohonan->update([
'status' => 'request-reschedule' 'status' => 'request-reschedule',
]); ]);
$penilaian = Penilaian::findOrFail($id); $penilaian = Penilaian::findOrFail($id);
@@ -477,7 +506,7 @@ class PermohonanController extends Controller
'status' => 'success', 'status' => 'success',
'message' => 'Proses request reschedule permohonan Nomor registrasi ' . $request->nomor_registrasi . ' berhasil', 'message' => 'Proses request reschedule permohonan Nomor registrasi ' . $request->nomor_registrasi . ' berhasil',
]); ]);
} catch (\Exception $e) { } catch (Exception $e) {
DB::rollBack(); DB::rollBack();
return response()->json([ return response()->json([
'status' => 'error', 'status' => 'error',

View File

@@ -49,11 +49,11 @@
<span class="sort"> <span class="sort-label"> Tanggal Permohonan </span> <span class="sort"> <span class="sort-label"> Tanggal Permohonan </span>
<span class="sort-icon"> </span> </span> <span class="sort-icon"> </span> </span>
</th> </th>
<th class="min-w-[150px]" data-datatable-column="user_id"> <th class="min-w-[150px]" data-datatable-column="pemohon">
<span class="sort"> <span class="sort-label"> User Pemohon </span> <span class="sort"> <span class="sort-label"> User Pemohon </span>
<span class="sort-icon"> </span> </span> <span class="sort-icon"> </span> </span>
</th> </th>
<th class="min-w-[150px]" data-datatable-column="branch_id"> <th class="min-w-[150px]" data-datatable-column="branch">
<span class="sort"> <span class="sort-label"> Cabang Pemohon </span> <span class="sort"> <span class="sort-label"> Cabang Pemohon </span>
<span class="sort-icon"> </span> </span> <span class="sort-icon"> </span> </span>
</th> </th>
@@ -150,21 +150,12 @@
}, },
tanggal_permohonan: { tanggal_permohonan: {
title: 'Tanggal Permohonan', title: 'Tanggal Permohonan',
render: (item, data) => {
return `${window.formatTanggalIndonesia(data.tanggal_permohonan)}`;
}, },
pemohon: {
title: 'User Pemohon'
}, },
user_id: { branch: {
title: 'User Pemohon',
render: (item, data) => {
return `${data.user.name}`;
},
},
branch_id: {
title: 'Cabang Pemohon', title: 'Cabang Pemohon',
render: (item, data) => {
return `${data.branch.name}`;
},
}, },
debitur_id: { debitur_id: {
title: 'Debitur', title: 'Debitur',
@@ -201,8 +192,7 @@
status: { status: {
title: 'Status', title: 'Status',
render: (item, data) => { render: (item, data) => {
console.log(data.documents.length); if (data.documents > 0) {
if (data.documents.length > 0) {
return `<span class="badge badge-sm badge-default uppercase flex justify-center">${data.status}</span>`; return `<span class="badge badge-sm badge-default uppercase flex justify-center">${data.status}</span>`;
} }
return `<span class="badge badge-sm badge-danger uppercase flex justify-center">Lengkapi Aset Jaminan</span>`; return `<span class="badge badge-sm badge-danger uppercase flex justify-center">Lengkapi Aset Jaminan</span>`;