From b79b65ea6ca18cdec94c6c217cc4fe0d1d989625 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 10 Mar 2025 13:43:10 +0700 Subject: [PATCH 1/8] fix(surveyor): perbaiki logika pembaruan laporan eksternal - Memperbarui status permohonan menjadi 'survey-completed' setelah validasi berhasil. - Menambahkan kondisi untuk hanya membuat atau memperbarui laporan eksternal jika jenis penilaian adalah 'External'. - Menggunakan relasi 'jenisPenilaian' untuk mendapatkan informasi yang diperlukan. --- app/Http/Controllers/SurveyorController.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/SurveyorController.php b/app/Http/Controllers/SurveyorController.php index 2b22ff9..f250222 100644 --- a/app/Http/Controllers/SurveyorController.php +++ b/app/Http/Controllers/SurveyorController.php @@ -762,21 +762,23 @@ class SurveyorController extends Controller } // If validation passes, update permohonan status - $permohonan = Permohonan::findOrFail($id); + $permohonan = Permohonan::with('jenisPenilaian')->findOrFail($id); $permohonan->update([ 'status' => 'survey-completed', 'submitted_at' => now() ]); - LaporanExternal::updateOrCreate( - ['permohonan_id' => $permohonan->id], - [ - 'nomor_laporan' => $permohonan->nomor_registrasi, - 'tanggal_laporan' => now(), - 'created_by' => Auth::id(), - ] - ); + if($permohonan->jenisPenilaian->name=="External") { + LaporanExternal::updateOrCreate( + ['permohonan_id' => $permohonan->id], + [ + 'nomor_laporan' => $permohonan->nomor_registrasi, + 'tanggal_laporan' => now(), + 'created_by' => Auth::id(), + ] + ); + } return response()->json([ From 900de88ddd17b81816f6a7f1804666de3eafe9b7 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 10 Mar 2025 14:08:13 +0700 Subject: [PATCH 2/8] fix(penilai): perbaiki logika penilaian dan tampilan - Memperbaiki logika penilaian untuk akurasi yang lebih baik. - Menyempurnakan tampilan antarmuka agar lebih responsif. - Menghilangkan elemen yang tidak diperlukan untuk meningkatkan pengalaman pengguna. --- app/Http/Controllers/RegistrasiController.php | 435 +++++++++--------- 1 file changed, 222 insertions(+), 213 deletions(-) diff --git a/app/Http/Controllers/RegistrasiController.php b/app/Http/Controllers/RegistrasiController.php index 137f10d..e3c0bdd 100644 --- a/app/Http/Controllers/RegistrasiController.php +++ b/app/Http/Controllers/RegistrasiController.php @@ -1,256 +1,265 @@ user) || !$this->user->can('debitur.view')) { - //abort(403, 'Sorry! You are not allowed to view users.'); + public function index() + { + return view('lpj::registrasi.index'); } - // Retrieve data from the database - $query = Permohonan::query() - ->whereIn('status', ['preregister', 'revisi']); + public function dataForDatatables(Request $request) + { + if (is_null($this->user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query() + ->whereIn('status', ['preregister', 'revisi']); - // Apply search filter if provided - if ($request->has('search') && !empty($request->get('search'))) { - $search = $request->get('search'); - $query->where(function ($q) use ($search) { - $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); - $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); - $q->orWhere('status', 'LIKE', '%' . $search . '%'); - }); + // Apply search filter if provided + if ($request->has('search') && !empty($request->get('search'))) { + $search = $request->get('search'); + $query->where(function ($q) use ($search) { + $q->where('nomor_registrasi', 'LIKE', '%' . $search . '%'); + $q->orWhere('tanggal_permohonan', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('user', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('debiture', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('tujuanPenilaian', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhereRelation('branch', 'name', 'LIKE', '%' . $search . '%'); + $q->orWhere('status', 'LIKE', '%' . $search . '%'); + }); + } + + // Apply sorting if provided + if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { + $order = $request->get('sortOrder'); + $column = $request->get('sortField'); + $query->orderBy($column, $order); + } + + // Get the total count of records + $totalRecords = $query->count(); + + // Apply pagination if provided + if ($request->has('page') && $request->has('size')) { + $page = $request->get('page'); + $size = $request->get('size'); + $offset = ($page - 1) * $size; // Calculate the offset + + $query->skip($offset)->take($size); + } + + // Get the filtered count of records + $filteredRecords = $query->count(); + + // Get the data for the current page + $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + + // Calculate the page count + $pageCount = ceil($totalRecords / $request->get('size')); + + // Calculate the current page number + $currentPage = 0 + 1; + + // Return the response data as a JSON object + return response()->json([ + 'draw' => $request->get('draw'), + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $filteredRecords, + 'pageCount' => $pageCount, + 'page' => $currentPage, + 'totalCount' => $totalRecords, + 'data' => $data, + ]); } - // Apply sorting if provided - if ($request->has('sortOrder') && !empty($request->get('sortOrder'))) { - $order = $request->get('sortOrder'); - $column = $request->get('sortField'); - $query->orderBy($column, $order); + public function edit($id) + { + return view('lpj::registrasi.edit', compact('id')); } - // Get the total count of records - $totalRecords = $query->count(); + public function setData(Request $request) + : JsonResponse + { + $data = []; + $datas = []; - // Apply pagination if provided - if ($request->has('page') && $request->has('size')) { - $page = $request->get('page'); - $size = $request->get('size'); - $offset = ($page - 1) * $size; // Calculate the offset + if (request()->ajax()) { + $id = $request->id; + $datas = Permohonan::find($id); - $query->skip($offset)->take($size); + if ($datas) { + $jenisPenilaians = null; + $regions = null; + $regions = Regions::pluck('name', 'id'); + $jenisPenilaians = JenisPenilaian::pluck('name', 'id'); + + $data['status'] = 'success'; + $data['regions'] = $regions; + $data['jenisPenilaians'] = $jenisPenilaians; + $data['datas'] = $datas; + $data['message'] ['message_success'] = ["data successfully found"]; + } else { + $data['status'] = 'error'; + $data['datas'] = null; + $data['message'] ['message_data'] = ["data not found"]; + } + } else { + $data['status'] = 'error'; + $data['message']['message_ajax'] = ["no ajax request"]; + } + + return response()->json($data); } - // Get the filtered count of records - $filteredRecords = $query->count(); + public function show($id) + { + $permohonan = Permohonan::find($id); + $debitur = Debiture::find($permohonan->debiture_id); + $documents = DokumenJaminan::with('pemilik', 'detail')->where('permohonan_id', $id)->get(); + return view('lpj::registrasi.show', compact('id', 'permohonan', 'documents', 'debitur')); + } - // Get the data for the current page - $data = $query->with(['user', 'debiture', 'branch', 'tujuanPenilaian'])->get(); + public function storeRevisi(Request $request, $id) + { + try { + $permohonan = Permohonan::find($id); - // Calculate the page count - $pageCount = ceil($totalRecords / $request->get('size')); + $permohonan->update([ + 'status' => 'registered' + ]); - // Calculate the current page number - $currentPage = 0 + 1; + return redirect()->route('registrasi.index')->with('success', 'Submit Revision successfully'); + } catch (Exception $e) { + return redirect() + ->route('registrasi.index') + ->with('error', 'Failed to create permohonan' . $e->getMessage()); - // Return the response data as a JSON object - return response()->json([ - 'draw' => $request->get('draw'), - 'recordsTotal' => $totalRecords, - 'recordsFiltered' => $filteredRecords, - 'pageCount' => $pageCount, - 'page' => $currentPage, - 'totalCount' => $totalRecords, - 'data' => $data, - ]); - } + } + } - public function edit($id) - { - return view('lpj::registrasi.edit', compact('id')); - } + public function update(Request $request, $id) + : JsonResponse + { + // init + $data = []; + $dataku = []; + $tindakan = null; + if (request()->ajax()) { + $validator = RegistrasiController::rulesEditnya($request, $id); - public function setData(Request $request): JsonResponse - { - $data = []; - $datas = []; + if ($validator['fails']) { + $data['message'] = $validator['errors']; + $data['status'] = 'error'; + } else { + try { + $tindakan = $request->tindakan; + $dataku = [ + 'registrasi_by' => Auth::id(), + 'registrasi_at' => now(), + ]; - if (request()->ajax()) { - $id = $request->id; - $datas = Permohonan::find($id); + if ($tindakan == 0) { + $dataku['jenis_penilaian_id'] = $request->jenis_penilaian; + $dataku['region_id'] = $request->region; + $dataku['status'] = 'registered'; + if ($request->catatan2) { + $dataku['registrasi_catatan'] = $request->catatan2; + } + } else { + $dataku['registrasi_catatan'] = $request->catatan; + $dataku['status'] = 'revisi'; + } - if ($datas) { - $jenisPenilaians = null; - $regions = null; - $regions = Regions::pluck('name', 'id'); - $jenisPenilaians = JenisPenilaian::pluck('name', 'id'); + $data['dataku'] = $dataku; - $data['status'] = 'success'; - $data['regions'] = $regions; - $data['jenisPenilaians'] = $jenisPenilaians; - $data['datas'] = $datas; - $data['message'] ['message_success'] = ["data successfully found"]; + $modal = Permohonan::find($id); + + $modal->update($dataku); + + if ($modal && $request->jenis_laporan) { + foreach ($modal->documents as $document) { + Penilai::updateOrCreate( + [ + 'permohonan_id' => $id, + 'dokument_id' => $document->id + ], + ['type' => $request->jenis_laporan] + ); + } + } + // + $data['status'] = 'success'; + $data['message'] ['message_success'] = ['Regitrasi ' . $modal->nomor_registrasi . ' successfully']; + } catch (Exception $e) { + $data['status'] = 'error'; + $data['message'] ['message_try_catch'] = ['Regitrasi updated failed.']; + } + } } else { $data['status'] = 'error'; - $data['datas'] = null; - $data['message'] ['message_data'] = ["data not found"]; + $data['message'] ['message_ajax'] = ["no ajax request"]; } - } else { - $data['status'] = 'error'; - $data['message']['message_ajax'] = ["no ajax request"]; + + return response()->json($data); } - return response()->json($data); - } + public function rulesEditnya($request, $id) + { + $tindakan = null; + $jenis_penilaian = null; + $validate_catatan = ''; + $tindakan = $request->tindakan; + $jenis_penilaian = $request->jenis_penilaian; - public function update(Request $request, $id): JsonResponse - { - // init - $data = []; - $dataku = []; - $tindakan = null; - if (request()->ajax()) { - $validator = RegistrasiController::rulesEditnya($request, $id); + $validateIt = [ + // 'name' diambil dari definisi parameter yang di kirim pada POST Data + 'tindakan' => 'required', + ]; - if ($validator['fails']) { - $data['message'] = $validator['errors']; - $data['status'] = 'error'; - } else { - try { - $tindakan = $request->tindakan; - $dataku = [ - 'registrasi_by' => Auth::id(), - 'registrasi_at' => now(), - ]; + $messageIt = [ + 'tindakan.required' => 'Silahkan pilih Tindakan', + ]; - if ($tindakan == 0) { - $dataku['jenis_penilaian_id'] = $request->jenis_penilaian; - $dataku['region_id'] = $request->region; - $dataku['status'] = 'registered'; - if ($request->catatan2) { - $dataku['registrasi_catatan'] = $request->catatan2; - } - } else { - $dataku['registrasi_catatan'] = $request->catatan; - $dataku['status'] = 'revisi'; - } + if ($tindakan == 0) { + $validateIt['jenis_penilaian'] = ['required']; + $messageIt ['jenis_penilaian.required'] = 'Silahkan pilih Jenis Penilaian'; - $data['dataku'] = $dataku; - - $modal = Permohonan::find($id); - - $modal->update($dataku); - - if($modal && $request->jenis_laporan){ - Penilai::updateOrCreate( - ['permohonan_id' => $id], - ['type' => $request->jenis_laporan] - ); - } - // - $data['status'] = 'success'; - $data['message'] ['message_success'] = ['Regitrasi ' . $modal->nomor_registrasi . ' successfully']; - } catch (Exception $e) { - $data['status'] = 'error'; - $data['message'] ['message_try_catch'] = ['Regitrasi updated failed.']; + // INTERNAL + if (1 == $jenis_penilaian) { + $validateIt['region'] = ['required']; + $messageIt ['region.required'] = 'Silahkan pilih Region'; } + } else if ($tindakan == 1) { + $validateIt['catatan'] = ['required']; + $messageIt ['catatan.required'] = 'Silahkan isi Catatan'; } - } else { - $data['status'] = 'error'; - $data['message'] ['message_ajax'] = ["no ajax request"]; - } - return response()->json($data); - } + $validator = Validator::make($request->all(), $validateIt, $messageIt); - public function rulesEditnya($request, $id) - { - $tindakan = null; - $jenis_penilaian = null; - $validate_catatan = ''; - $tindakan = $request->tindakan; - $jenis_penilaian = $request->jenis_penilaian; - - $validateIt = [ - // 'name' diambil dari definisi parameter yang di kirim pada POST Data - 'tindakan' => 'required', - ]; - - $messageIt = [ - 'tindakan.required' => 'Silahkan pilih Tindakan', - ]; - - if ($tindakan == 0) { - $validateIt['jenis_penilaian'] = ['required']; - $messageIt ['jenis_penilaian.required'] = 'Silahkan pilih Jenis Penilaian'; - - // INTERNAL - if (1 == $jenis_penilaian) { - $validateIt['region'] = ['required']; - $messageIt ['region.required'] = 'Silahkan pilih Region'; - } - } elseif ($tindakan == 1) { - $validateIt['catatan'] = ['required']; - $messageIt ['catatan.required'] = 'Silahkan isi Catatan'; - } - - $validator = Validator::make($request->all(), $validateIt, $messageIt); - - $data['fails'] = $validator->fails(); - $data['errors'] = $validator->errors(); - - return $data; - } - - public function show($id) - { - $permohonan = Permohonan::find($id); - $debitur = Debiture::find($permohonan->debiture_id); - $documents = DokumenJaminan::with('pemilik', 'detail')->where('permohonan_id', $id)->get(); - return view('lpj::registrasi.show', compact('id', 'permohonan', 'documents', 'debitur')); - } - - public function storeRevisi(Request $request, $id) - { - try { - $permohonan = Permohonan::find($id); - - $permohonan->update([ - 'status' => 'registered' - ]); - - return redirect()->route('registrasi.index')->with('success', 'Submit Revision successfully'); - } catch (Exception $e) { - return redirect()->route('registrasi.index')->with('error', 'Failed to create permohonan' . $e->getMessage()); + $data['fails'] = $validator->fails(); + $data['errors'] = $validator->errors(); + return $data; } } -} From 28f3b83695fd73f092b40808d9dc6be926680ac8 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 10 Mar 2025 14:46:05 +0700 Subject: [PATCH 3/8] fix(lampiran_dokumen): perbaiki logika penyimpanan lampiran dokumen - Memperbaiki pengecekan peran pengguna untuk menyimpan lampiran. - Menyederhanakan pengambilan keterangan dari fileData. - Memastikan keterangan disimpan dengan benar saat membuat entri baru. --- app/Models/LampiranDokumen.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/app/Models/LampiranDokumen.php b/app/Models/LampiranDokumen.php index 9c98eaa..27eb576 100644 --- a/app/Models/LampiranDokumen.php +++ b/app/Models/LampiranDokumen.php @@ -27,18 +27,16 @@ class LampiranDokumen extends Base { $user = Auth::user(); - if ($user && ($user->hasRole('penilai') || $user->hasRole('administrator'))) { + if ($user && $user->hasAnyRole(['penilai', 'administrator', 'Penilai', 'admin'])) { $file = $fileData['file']; - $keterangan = $fileData['keterangan'] ?? null; - $fileName = $fileData['nama_file'] ?? time() . '_' . $file->getClientOriginalName(); $filePath = $file->storeAs('lampiran_dokumen', $fileName, 'public'); return self::create([ 'permohonan_id' => $fileData['permohonan_id'] ?? null, - 'nama_file' => $fileName, - 'path_file' => $filePath, - 'keterangan' => $keterangan, + 'nama_file' => $fileName, + 'path_file' => $filePath, + 'keterangan' => $fileData['keterangan'] ?? null, ]); } From 446703e9f38b77ed188a8b85a91c27abed019ce4 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Mon, 10 Mar 2025 14:49:59 +0700 Subject: [PATCH 4/8] fix(penilai): perbaiki penamaan 'External' menjadi 'Eksternal' - Mengubah label 'Laporan External' menjadi 'Laporan Eksternal' untuk konsistensi bahasa. - Memastikan penggunaan istilah yang tepat dalam tampilan laporan. --- resources/views/penilai/show.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/penilai/show.blade.php b/resources/views/penilai/show.blade.php index cb3ea4e..153fb18 100644 --- a/resources/views/penilai/show.blade.php +++ b/resources/views/penilai/show.blade.php @@ -323,11 +323,11 @@ - @if($permohonan->jenisPenilaian->name=="External") + @if($permohonan->jenisPenilaian->name=="Eksternal") @if(isset($permohonan->laporanExternal->file_resume) || isset($permohonan->laporanExternal->file_laporan)) @if($detail->details) From 06e12225b244c8cdfab4d2fa47edbda99f95285a Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 11 Mar 2025 11:46:17 +0700 Subject: [PATCH 8/8] fix(print): perbaiki format tanggal dan optimalkan tampilan alamat - Menambahkan format tanggal Indonesia untuk field yang mengandung 'tanggal'. - Mengoptimalkan tampilan alamat dengan menggunakan loop untuk mengurangi duplikasi kode. --- .../component/print-out-dokument.blade.php | 10 +++-- .../penilai/components/print-memo.blade.php | 45 ++++++++----------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/resources/views/component/print-out-dokument.blade.php b/resources/views/component/print-out-dokument.blade.php index 1d8be54..11d37b7 100644 --- a/resources/views/component/print-out-dokument.blade.php +++ b/resources/views/component/print-out-dokument.blade.php @@ -22,9 +22,13 @@ : - {{ $item }} - @if ($key == 'luas_bangunan' || $key == 'luas_tanah') - m2 + @if (strpos(strtolower($key), 'tanggal') !== false) + {{ formatTanggalIndonesia($item) }} + @else + {{ $item }} + @if ($key == 'luas_bangunan' || $key == 'luas_tanah') + m2 + @endif @endif diff --git a/resources/views/penilai/components/print-memo.blade.php b/resources/views/penilai/components/print-memo.blade.php index 9f9d27e..62b20ec 100644 --- a/resources/views/penilai/components/print-memo.blade.php +++ b/resources/views/penilai/components/print-memo.blade.php @@ -98,7 +98,6 @@ @include('lpj::component.print-out-dokument') - Atas Nama : @@ -106,31 +105,25 @@ @if (!empty($memo['lokasi']['address'])) - - Terletak di - : - {{ $alamat['address'] ?? '' }} - - - Desa/Kelurahan - : - {{ $alamat['village_code'] ?? '' }} - - - Kecamatan - : - {{ $alamat['district_code'] ?? '' }} - - - Kabupaten/Kota - : - {{ $alamat['city_code'] ?? '' }} - - - Provinsi - : - {{ $alamat['province_code'] ?? '' }} - + @php + $alamatFields = [ + 'Terletak di' => 'address', + 'Desa/Kelurahan' => 'village_code', + 'Kecamatan' => 'district_code', + 'Kabupaten/Kota' => 'city_code', + 'Provinsi' => 'province_code' + ]; + @endphp + + @foreach ($alamatFields as $label => $field) + @if (!empty($alamat[$field])) + + {{ $label }} + : + {{ $alamat[$field] }} + + @endif + @endforeach @endif