From 024e3155721c08f27e281c6dae76ae533c42160c Mon Sep 17 00:00:00 2001 From: Andy Chaerudin Date: Wed, 2 Oct 2024 11:43:41 +0700 Subject: [PATCH] upload feature registrasi lengkap --- app/Http/Controllers/RegistrasiController.php | 270 ++++++++++++++++++ app/Models/Permohonan.php | 6 + ...4_10_01_095350_update_permohonan_table.php | 32 +++ module.json | 13 + routes/breadcrumbs.php | 15 + routes/registrasi.php | 25 ++ routes/web.php | 4 + 7 files changed, 365 insertions(+) create mode 100644 app/Http/Controllers/RegistrasiController.php create mode 100644 database/migrations/2024_10_01_095350_update_permohonan_table.php create mode 100644 routes/registrasi.php diff --git a/app/Http/Controllers/RegistrasiController.php b/app/Http/Controllers/RegistrasiController.php new file mode 100644 index 0000000..5f04aa6 --- /dev/null +++ b/app/Http/Controllers/RegistrasiController.php @@ -0,0 +1,270 @@ +user) || !$this->user->can('debitur.view')) { + //abort(403, 'Sorry! You are not allowed to view users.'); + } + + // Retrieve data from the database + $query = Permohonan::query()->where('status','=','preregister'); + + // 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, + ]); + } + + public function edit($id) + { + return view('lpj::registrasi.edit', compact('id')); + } + + public function setData(Request $request): JsonResponse + { + $data = array(); + $datas = array(); + + if (request()->ajax()) { + $id = $request->id; + $datas = Permohonan::findOrFail($id); + $data['status'] = 'success'; + if ($datas) { + $jenisPenilaians=null; + $regions=null; + $regions=Regions::pluck('name', 'id'); + $jenisPenilaians=JenisPenilaian::pluck('name', 'id'); + + $data['regions'] = $regions; + $data['jenisPenilaians'] = $jenisPenilaians; + $data['datas'] = $datas; + $data['message'] = 'data successfully found'; + } else { + $data['datas'] = null; + $data['message'] = 'data not found'; + } + } else { + $data['status'] = 'error'; + $data['message'] = 'no ajax request'; + } + + return response()->json($data); + } + + public function update(Request $request, $id): JsonResponse + { + // init + $data = array(); + $dataku = array(); + $tindakan = null; + if (request()->ajax()) { + $validator = RegistrasiController::rulesEditnya($request, $id); + + if ($validator['fails']) { + $data['message'] = $validator['errors']; + $data['status'] = 'error'; + } + else + { + try { + + $tindakan=$request->tindakan; + $dataku = ['registrasi_by' => Auth::id(), + 'registrasi_at' => now() + ]; + + if($tindakan==0) + { + $dataku['jenis_penilaian_id'] =$request->jenis_penilaian; + $dataku['region_id'] =$request->region; + $dataku['status'] = 'registered'; + } + else + { + $dataku['registrasi_catatan'] =$request->catatan; + $dataku['status'] = 'revisi'; + } + + $data['dataku'] =$dataku; + + $modal = Permohonan::find($id); + + $modal->update($dataku); + // + $data['status'] = 'success'; + $data['message'] = 'Regitrasi '.$modal->nomor_registrasi.' successfully'; + } catch (Exception $e) { + + $data['status'] = 'error'; + $data['message'] = 'Jenis Fasilitas Kredit updated failed.'; + } + } + + } else { + $data['status'] = 'error'; + $data['message'] = 'no ajax request'; + } + + return response()->json($data); + + } + + 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) + { + return view('lpj::registrasi.show', compact('id')); + } + + public function showData(Request $request): JsonResponse + { + $data = array(); + $datas = array(); + + if (request()->ajax()) { + $id = $request->id; + $datas = Permohonan::findOrFail($id); + $data['status'] = 'success'; + if ($datas) { + $data['datas'] = $datas; + $data['message'] = 'data successfully found'; + } else { + $data['datas'] = null; + $data['message'] = 'data not found'; + } + } else { + $data['status'] = 'error'; + $data['message'] = 'no ajax request'; + } + + return response()->json($data); + } + } diff --git a/app/Models/Permohonan.php b/app/Models/Permohonan.php index 28b6de5..7b3329f 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -21,6 +21,12 @@ class Permohonan extends Base 'authorized_at', 'authorized_status', 'authorized_by', + // andy add + 'registrasi_catatan', + 'registrasi_by', + 'registrasi_at', + 'jenis_penilaian_id', + 'region_id' ]; public function user(){ diff --git a/database/migrations/2024_10_01_095350_update_permohonan_table.php b/database/migrations/2024_10_01_095350_update_permohonan_table.php new file mode 100644 index 0000000..98794df --- /dev/null +++ b/database/migrations/2024_10_01_095350_update_permohonan_table.php @@ -0,0 +1,32 @@ +text('registrasi_catatan')->nullable()->comment('kebutuhan untuk feature Registrasi'); + $table->unsignedBigInteger('registrasi_by')->nullable()->after('registrasi_catatan')->comment('kebutuhan untuk feature Registrasi'); + $table->timestamp('registrasi_at')->nullable()->after('registrasi_by')->comment('kebutuhan untuk feature Registrasi'); + $table->unsignedBigInteger('jenis_penilaian_id')->nullable()->after('registrasi_at')->comment('kebutuhan untuk feature Registrasi'); + $table->unsignedBigInteger('region_id')->nullable()->after('jenis_penilaian_id')->comment('kebutuhan untuk feature Registrasi'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('permohonan', function (Blueprint $table) { + + }); + } +}; diff --git a/module.json b/module.json index a3feab5..a5d9986 100644 --- a/module.json +++ b/module.json @@ -33,6 +33,19 @@ "Administrator" ] }, + { + "_comment1": "andy add", + "title": "Registrasi", + "path": "registrasi", + "icon": "ki-filled ki-some-files text-lg", + "classes": "", + "attributes": [], + "permission": "", + "roles": [ + "Administrator" + ], + "_comment2": "andy add" + }, { "title": "Data Debitur", "path": "debitur", diff --git a/routes/breadcrumbs.php b/routes/breadcrumbs.php index 162cfff..54cf9ac 100644 --- a/routes/breadcrumbs.php +++ b/routes/breadcrumbs.php @@ -268,3 +268,18 @@ $trail->push('Data Permohonan'); }); + // andy add + Breadcrumbs::for('registrasi', function (BreadcrumbTrail $trail) { + $trail->push('Registrasi', route('registrasi.index')); + }); + + Breadcrumbs::for('registrasi.edit', function (BreadcrumbTrail $trail) { + $trail->parent('registrasi'); + $trail->push('Tambah Registrasi'); + }); + + Breadcrumbs::for('registrasi.show', function (BreadcrumbTrail $trail) { + $trail->parent('registrasi'); + $trail->push('Detail Permohona'); + }); + // andy add diff --git a/routes/registrasi.php b/routes/registrasi.php new file mode 100644 index 0000000..8beb9ae --- /dev/null +++ b/routes/registrasi.php @@ -0,0 +1,25 @@ +group(function () { + + // andy add + // Route::name('registrasi.')->prefix('registrasi')->group(function () { + Route::controller(RegistrasiController::class)->group(function(){ + // Route::get('/', [RegistrasiController::class, 'index'])->name('registrasi.index'); + Route::get('/registrasi', 'index')->name('registrasi.index'); + Route::get('/registrasi/datatables', 'dataForDatatables')->name('registrasi.datatables'); + + // show data + Route::get('/registrasi/{registrasi}', 'show')->name('registrasi.show'); + Route::post('registrasi/showData', 'setData')->name('registrasi.showData'); + + Route::post('registrasi/setData', 'setData')->name('registrasi.setData'); + Route::get('/registrasi/{registrasi}/edit', 'edit')->name('registrasi.edit'); + Route::put('/registrasi/{registrasi}', 'update')->name('registrasi.update'); + + }); + // andy add +}); + diff --git a/routes/web.php b/routes/web.php index 86c6f6e..fc35e6c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -210,3 +210,7 @@ // Route::resource('authorization', AuthorizationController::class); // andy }); + +// andy add +require __DIR__ . '/registrasi.php'; +// andy add