From b15d1b61a7b18991db369738cb2a67709cf84b8e 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 | 32 ++- ...4_10_01_095350_update_permohonan_table.php | 32 +++ routes/registrasi.php | 25 ++ routes/web.php | 30 +- 5 files changed, 359 insertions(+), 30 deletions(-) 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 5b63bdc..566a899 100644 --- a/app/Models/Permohonan.php +++ b/app/Models/Permohonan.php @@ -28,38 +28,52 @@ class Permohonan extends Base 'authorized_status', 'authorized_by', 'status_bayar', - 'nilai_njop' + 'nilai_njop', + // andy add + 'registrasi_catatan', + 'registrasi_by', + 'registrasi_at', + 'jenis_penilaian_id', + 'region_id' ]; - public function user(){ + public function user() + { return $this->belongsTo(User::class); } - public function branch(){ + public function branch() + { return $this->belongsTo(Branch::class); } - public function tujuanPenilaian(){ + public function tujuanPenilaian() + { return $this->belongsTo(TujuanPenilaian::class); } - public function debiture(){ + public function debiture() + { return $this->belongsTo(Debiture::class); } - public function documents(){ + public function documents() + { return $this->hasMany(DokumenJaminan::class); } - public function nilaiPlafond(){ + public function nilaiPlafond() + { return $this->belongsTo(NilaiPlafond::class); } - public function jenisFasilitasKredit(){ + public function jenisFasilitasKredit() + { return $this->belongsTo(JenisFasilitasKredit::class); } - public function penilaian(){ + public function penilaian() + { return $this->belongsTo(Penilaian::class, 'nomor_registrasi', 'nomor_registrasi'); } } 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/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 80ada10..bd9b9d0 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,7 +1,7 @@ group(function () { Route::resource('debitur', DebitureController::class); - Route::name('tender.')->prefix('tender')->group(function () { - // Penawaran - Route::get('penawaran', [TenderController::class, 'penawaran_index'])->name('penawaran.index'); - Route::get('penawaran/{id}/show', [TenderController::class, 'penawaran_show'])->name('penawaran.show'); - Route::get('penawaran/{id}/create', [TenderController::class, 'penawaran_create'])->name('penawaran.createPenawaran'); - Route::post('penawaran/{id}/store', [TenderController::class, 'penawaran_store'])->name('penawaran.storePenawaran'); - Route::post('penawaran/{id}/update', [TenderController::class, 'penawaran_store'])->name('penawaran.updatePenawaran'); - Route::get('penawaran/exportPenawaran', [TenderController::class, 'exportPenawaran'])->name('penawaran.exportPenawaran'); - Route::get('penawaran/datatables', [TenderController::class, 'datatablesPenawaran']) - ->name('penawaran.datatables'); + // andy + // Route::name('authorization.')->prefix('authorization')->group(function () { + // Route::get('/', [AuthorizationController::class, 'index'])->name('index'); + // Route::get('datatables', [AuthorizationController::class, 'dataForDatatables']) + // ->name('datatables'); + // }); - // Proses Penawaran - Route::get('proses_penawaran', [TenderController::class, 'proses_penawaran_index'])->name( - 'proses_penawaran.index', - ); - - // Penawaran Ulang - Route::get('penawaran_ulang', [TenderController::class, 'penawaran_ulang_index'])->name( - 'penawaran_ulang.index', - ); - }); + // Route::resource('authorization', AuthorizationController::class); + // andy });