From 1b2c2557aa8309feb42e4feb8e6e9f8339b0d7d4 Mon Sep 17 00:00:00 2001 From: KhatamNugraha Date: Thu, 10 Aug 2023 11:25:03 +0700 Subject: [PATCH] tambah fungsi add fasilitas --- DataTables/FasilitasDataTable.php | 103 +++++ .../2023_08_04_062326_fasilitas.php | 47 +++ Entities/Fasilitas.php | 33 ++ Entities/LimitReference.php | 36 ++ Http/Controllers/KonfirmasiBankController.php | 194 ++++++++- .../Fasilitas/StoreFasilitasRequest.php | 71 ++++ .../Fasilitas/UpdateFasilitasRequest.php | 71 ++++ Http/Requests/MasterRequest.php | 19 + Resources/views/pages/dynamic_table.blade.php | 15 + Resources/views/pages/index.blade.php | 107 ++++- .../views/pages/index_fasilitas.blade.php | 374 ++++++++++++++++++ Resources/views/pages/table.blade.php | 3 +- .../views/pages/table_fasilitas.blade.php | 53 +++ Routes/web.php | 16 +- 14 files changed, 1095 insertions(+), 47 deletions(-) create mode 100644 DataTables/FasilitasDataTable.php create mode 100644 Database/Migrations/2023_08_04_062326_fasilitas.php create mode 100644 Entities/Fasilitas.php create mode 100644 Entities/LimitReference.php create mode 100644 Http/Requests/Fasilitas/StoreFasilitasRequest.php create mode 100644 Http/Requests/Fasilitas/UpdateFasilitasRequest.php create mode 100644 Http/Requests/MasterRequest.php create mode 100644 Resources/views/pages/dynamic_table.blade.php create mode 100644 Resources/views/pages/index_fasilitas.blade.php create mode 100644 Resources/views/pages/table_fasilitas.blade.php diff --git a/DataTables/FasilitasDataTable.php b/DataTables/FasilitasDataTable.php new file mode 100644 index 0000000..9ff4fc8 --- /dev/null +++ b/DataTables/FasilitasDataTable.php @@ -0,0 +1,103 @@ +eloquent($query) + ->filter(function ($query) { + $search = request()->get('search'); + if ($search['value'] !== "") { + $query->where('name', 'like', "%" . $search['value'] . "%"); + } + }) + ->addIndexColumn() + ->addColumn('status', function ($model) { + return view('master::gender._status', compact('model')); + }) + ->addColumn('action', function ($model) { + return view('master::gender._action', compact('model')); + }) + ->rawColumns(['status','action']); + } + + /** + * Get query source of dataTable. + * + * @param \Modules\Gender\Entities\Gender $model + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function query(Gender $model) + { + return $model->newQuery(); + } + + /** + * Optional method if you want to use html builder. + * + * @return \Yajra\DataTables\Html\Builder + */ + public function html() + { + return $this->builder() + ->setTableId('master-gender-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->orderBy(1, 'asc') + ->stateSave(false) + ->responsive() + ->autoWidth(false) + ->parameters([ + 'scrollX' => false, + 'drawCallback' => 'function() { KTMenu.createInstances(); }', + ]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get columns. + * + * @return array + */ + protected function getColumns() + { + return [ + Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), + Column::make('name')->title(__('Name')), + Column::computed('status')->title(__('Status'))->width(50)->addClass('text-center')->exportable(false), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->width(100) + ->addClass('text-center') + ->responsivePriority(-1), + ]; + } + + /** + * Get filename for export. + * + * @return string + */ + protected function filename() + : string + { + return 'Gender_' . date('YmdHis'); + } + } \ No newline at end of file diff --git a/Database/Migrations/2023_08_04_062326_fasilitas.php b/Database/Migrations/2023_08_04_062326_fasilitas.php new file mode 100644 index 0000000..ab7164e --- /dev/null +++ b/Database/Migrations/2023_08_04_062326_fasilitas.php @@ -0,0 +1,47 @@ +id(); + $table->string('nomor_rekening'); + $table->string('jenis_fasilitas'); + $table->string('saldo'); + $table->string('start_date'); + $table->string('due_date'); + $table->string('jangka_waktu'); + $table->string('fixed_rate'); + $table->string('keterangan'); + $table->string('status', 1)->default('1'); + $table->timestamps(); + $table->softDeletes(); + $table->unsignedBigInteger("created_by")->nullable(); + $table->unsignedBigInteger("updated_by")->nullable(); + $table->unsignedBigInteger("deleted_by")->nullable(); + }); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('fasilitas'); + } +}; \ No newline at end of file diff --git a/Entities/Fasilitas.php b/Entities/Fasilitas.php new file mode 100644 index 0000000..7c9eca0 --- /dev/null +++ b/Entities/Fasilitas.php @@ -0,0 +1,33 @@ +user) || !$this->user->can('konfirmasibank.read')) { - // abort(403, 'Sorry !! You are Unauthorized to view any master data !'); - // } - - // return $dataTable->render('konfirmasibank::index'); - // } - public function index(Request $request) { $data = []; @@ -50,10 +40,10 @@ $currentYear = $today->format("Y"); // Menambahkan 5 tahun ke tanggal saat ini - $futureYear = $today->subYear(3)->format('Y'); + $pastYear = $today->subYear(3)->format('Y'); $data['currentYear'] = $currentYear; - $data['pastYear'] = $futureYear; + $data['pastYear'] = $pastYear; // dd($data); return view('konfirmasibank::pages.index',compact('data')); @@ -72,7 +62,7 @@ $data[$key]['WORKING_BALANCE'] = $account->WORKING_BALANCE; $data[$key]['PRODUCT'] = $account->PRODUCT; $data[$key]['CURRENCY'] = $account->CURRENCY; - $data[$key]['MATURITY_DATE'] = $account->MATURITY_DATE; + $data[$key]['MATURITY_DATE'] = $account->MATURITY_DATE ?? '-'; } return json_encode($data); } @@ -174,10 +164,176 @@ // Keluarkan file PDF ke browser $pdf->stream('"Konfirmasi_bank_"'.$ListPinjaman[0]->SHORT_NAME.'"'. $formattedDate.'".pdf"'); - // $pdf->render(); - // return $pdf->stream('Konfirmasi_bank_"'.$ListPinjaman[0]->SHORT_NAME.'"'. $formattedDate.'""'); + } + + public function addFasilitas(Request $request){ + + if (is_null($this->user) || !$this->user->can('konfirmasibank.report')) { + abort(403, 'Sorry !! You are Unauthorized to view any master data !'); + } + + $data = []; + $fasilitas = Fasilitas::where('status', 1)->where('created_by',$this->user->id)->paginate(10); + + $limitReference = LimitReference::all(); + $data['fasilitas'] = $fasilitas; + $data['limitReference'] = $limitReference; + + return view('konfirmasibank::pages.index_fasilitas',compact('data')); } + + public function postFasilitas(Request $request){ + + if (is_null($this->user) || !$this->user->can('konfirmasibank.create')) { + abort(403, 'Sorry !! You are Unauthorized to create any konfirmasibank.create !'); + } + + $validated = $request->validate([ + 'nomor_rekening' => 'required|string|max:10|unique:fasilitas,nomor_rekening', + 'jenis_fasilitas' => 'required|string', + 'saldo' => 'required|string', + 'start_date' => 'required|string', + 'due_date' => 'required|string', + 'jangka_waktu' => 'required|string', + 'fixed_rate' => 'required|string' + ]); + + if ($validated) { + try { + // Create New User + $fasilitas = new Fasilitas(); + $fasilitas->nomor_rekening = $request->nomor_rekening; + $fasilitas->jenis_fasilitas = $request->jenis_fasilitas; + $fasilitas->saldo = $request->saldo; + $fasilitas->start_date = $request->start_date; + $fasilitas->due_date = $request->due_date; + $fasilitas->jangka_waktu = $request->jangka_waktu; + $fasilitas->fixed_rate = $request->fixed_rate; + $fasilitas->keterangan = $request->keterangan; + + $fasilitas->save(); + return redirect()->route('konfirmasibank.addFasilitas')->with('success', 'Data berhasil ditambahkan'); + + } catch (Exception $e) { + return json_encode([ + 'status' => 'error', + 'message' => $e->getMessage() + ]); + } + } + + return false; + + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * + * @return Response + */ + public function editFasilitas(Request $request) + { + + if (is_null($this->user) || !$this->user->can('konfirmasibank.update')) { + abort(403, 'Sorry !! You are Unauthorized to edit any role !'); + } + + $fasilitas = Fasilitas::find($request->id); + + return json_encode( $fasilitas); + } + + /** + * Update the specified resource in storage. + * + * @param Request $request + * @param int $id + * + * @return Response + */ + public function updateFasilitas(Request $request) + { + + if (is_null($this->user) || !$this->user->can('konfirmasibank.update')) { + abort(403, 'Sorry !! You are Unauthorized to edit any role !'); + } + + $today = Carbon::now(); + // Menambahkan 1 tahun ke tanggal saat ini + // $currentYear = $today->format("YYYY-MM-DD"); + + // Validation Data\ + $validator = Validator::make($request->all(), [ + 'nomor_rekening' => 'required|string|max:10|unique:fasilitas,nomor_rekening', + 'jenis_fasilitas' => 'required|string', + 'saldo' => 'required|string', + 'start_date' => 'required|string', + 'due_date' => 'required|string', + 'jangka_waktu' => 'required|string', + 'fixed_rate' => 'required|string' + // Other validation rules + ]); + + if ($validator->fails()) { + return response()->json(['errors' => $validator->errors()], 422); // Return validation errors as JSON + } + + + if ($validator) { + try { + $fasilitas = Fasilitas::findOrFail($request->id); + $fasilitas->nomor_rekening = $request->nomor_rekening; + $fasilitas->jenis_fasilitas = $request->jenis_fasilitas; + $fasilitas->saldo = $request->saldo; + $fasilitas->start_date = $request->start_date; + $fasilitas->due_date = $request->due_date; + $fasilitas->jangka_waktu = $request->jangka_waktu; + $fasilitas->fixed_rate = $request->fixed_rate; + $fasilitas->keterangan = $request->keterangan; + $fasilitas->updated_at = $today; + $fasilitas->save(); + + echo json_encode(['status' => 'success', 'message' => ' fasilitas updated successfully.']); + + } catch (Exception $e) { + echo json_encode(['status' => 'error', 'message' => ' fasilitas updated failed.']); + } + + return; + + } + echo json_encode(['status' => 'error', 'message' => ' fasilitas updated failed.']); + } + + + /** + * Remove the specified resource from storage. + * + * @param int $id + * + * @return Renderable + */ + public function destroyFasilitas(Request $request) + { + if (is_null($this->user) || !$this->user->can('konfirmasibank.delete')) { + abort(403, 'Sorry !! You are Unauthorized to delete any konfirmasibank module !'); + } + + $fasilitas = Fasilitas::findOrFail($request->id); + + try { + $fasilitas->status = 0; + $fasilitas->save(); + echo json_encode(['status' => 'success', 'message' => ' fasilitas deleted successfully.']); + } catch (Exception $e) { + echo json_encode(['status' => 'error', 'message' => ' fasilitas deleted failed.']); + } + } + + } \ No newline at end of file diff --git a/Http/Requests/Fasilitas/StoreFasilitasRequest.php b/Http/Requests/Fasilitas/StoreFasilitasRequest.php new file mode 100644 index 0000000..894709c --- /dev/null +++ b/Http/Requests/Fasilitas/StoreFasilitasRequest.php @@ -0,0 +1,71 @@ + + */ + public function rules() + : array + { + return [ + 'nomor_rekening' => 'required|string|max:10|unique:fasilitas,nomor_rekening', + 'jenis_fasilitas' => 'required|string', + 'saldo' => 'required|string', + 'start_date' => 'required|string', + 'due_date' => 'required|string', + 'jangka_waktu' => 'required|string', + 'fixed_rate' => 'required|string' + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator) + : void + { + $validator->after(function (Validator $validator) { + if ($validator->errors()->any()) { + $errors = json_decode($validator->errors()->toJson(), true); + + foreach ($errors as $key => $value) { + flash($value[0]); + } + return redirect()->route('konfirmasibank.addFasilitas')->with('error', 'Fasilitas created failed.'); + } + + }); + } + + protected function failedValidation(Validator|\Illuminate\Contracts\Validation\Validator $validator) + : JsonResponse + { + $errors = (new ValidationException($validator))->errors(); + + throw new HttpResponseException(response()->json([ + 'success' => false, + 'errors' => $errors, + 'messages' => 'Fasilitas created failed.' + ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY)); + } + } \ No newline at end of file diff --git a/Http/Requests/Fasilitas/UpdateFasilitasRequest.php b/Http/Requests/Fasilitas/UpdateFasilitasRequest.php new file mode 100644 index 0000000..eacfc9a --- /dev/null +++ b/Http/Requests/Fasilitas/UpdateFasilitasRequest.php @@ -0,0 +1,71 @@ + + */ + public function rules() + : array + { + return [ + 'nomor_rekening' => 'required|string|max:10|unique:fasilitas,nomor_rekening', + 'jenis_fasilitas' => 'required|string', + 'saldo' => 'required|string', + 'start_date' => 'required|string', + 'due_date' => 'required|string', + 'jangka_waktu' => 'required|string', + 'fixed_rate' => 'required|string' + ]; + } + + /** + * Configure the validator instance. + */ + public function withValidator(Validator $validator) + : void + { + $validator->after(function (Validator $validator) { + if ($validator->errors()->any()) { + $errors = json_decode($validator->errors()->toJson(), true); + + foreach ($errors as $key => $value) { + flash($value[0]); + } + return redirect()->route('konfirmasibank.addFasilitas')->with('error', 'Fasilitas created failed.'); + } + + }); + } + + protected function failedValidation(Validator|\Illuminate\Contracts\Validation\Validator $validator) + : JsonResponse + { + $errors = (new ValidationException($validator))->errors(); + + throw new HttpResponseException(response()->json([ + 'success' => false, + 'errors' => $errors, + 'messages' => 'Fasilitas created failed.' + ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY)); + } + } \ No newline at end of file diff --git a/Http/Requests/MasterRequest.php b/Http/Requests/MasterRequest.php new file mode 100644 index 0000000..a565c29 --- /dev/null +++ b/Http/Requests/MasterRequest.php @@ -0,0 +1,19 @@ +status == "on") { + $status = 1; + } + $this->merge([ + 'status' => $status + ]); + } + } \ No newline at end of file diff --git a/Resources/views/pages/dynamic_table.blade.php b/Resources/views/pages/dynamic_table.blade.php new file mode 100644 index 0000000..6236f38 --- /dev/null +++ b/Resources/views/pages/dynamic_table.blade.php @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +
diff --git a/Resources/views/pages/index.blade.php b/Resources/views/pages/index.blade.php index 4642693..9b1cf50 100644 --- a/Resources/views/pages/index.blade.php +++ b/Resources/views/pages/index.blade.php @@ -31,7 +31,7 @@
- +
@@ -41,8 +41,6 @@
- -
@csrf @@ -53,21 +51,25 @@
- + + + + Fasilitas +
- - +
@@ -77,17 +79,75 @@ All
+ +
@include('konfirmasibank::pages.table')
+
- + + @push('customscript') + @endpush + + + + diff --git a/Resources/views/pages/table.blade.php b/Resources/views/pages/table.blade.php index 1b503de..b4dd589 100644 --- a/Resources/views/pages/table.blade.php +++ b/Resources/views/pages/table.blade.php @@ -23,7 +23,6 @@ - - + diff --git a/Resources/views/pages/table_fasilitas.blade.php b/Resources/views/pages/table_fasilitas.blade.php new file mode 100644 index 0000000..f7ce38d --- /dev/null +++ b/Resources/views/pages/table_fasilitas.blade.php @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + @php + $no = 1; + @endphp + @if (count($data['fasilitas']) > 0) + @foreach ($data['fasilitas'] as $item) + + + + + + + + + + + + @endforeach + @else + + + + @endif + + + + + +
NoNo RekeningJenis RekeningSaldoStart DateDue DateFixed RateKeteranganAksi
{{($no++ )}}{{$item['nomor_rekening']}}{{$item['jenis_fasilitas']}}{{$item['saldo']}}{{$item['start_date']}}{{$item['due_date']}}{{$item['fixed_rate']}}{{$item['keterangan']}} + {!!getIcon("pencil", "fs-1 text-warning","duotune") !!} + {!! getIcon("trash", "fs-1 text-danger","duotune") !!} +
Tidak Ada Data Yang Ditampilkan
+
+ {!! $data['fasilitas']->links() !!} +
diff --git a/Routes/web.php b/Routes/web.php index d1cab1e..f58f164 100644 --- a/Routes/web.php +++ b/Routes/web.php @@ -17,14 +17,12 @@ $module = file_get_contents(dirname(__FILE__, 2) . '/module.json'); $module = json_decode($module); Route::group(['middleware' => ['auth', 'verified']], function () { - //Route::resource('konfirmasibank', KonfirmasiBankController::class); - // Route::post('konfirmasibank/getPdf', [KonfirmasiBankController::class, 'getPdf'])->name('getPdf'); Route::get('/konfirmasibank', 'KonfirmasiBankController@index')->name('konfirmasibank.index'); - //Route::get('/list', [CustomerController::class, 'list'])->name('customer.list'); - Route::get('getData',array('as'=>'getData','uses'=>'KonfirmasiBankController@getData')); - //Route::post('getPdf/',array('as'=>'getPdf','uses'=>'CustomerController@getPdf')); - Route::post('export', [KonfirmasiBankController::class, 'export'])->name('konfirmasibank.export'); - //Route::get('/store', 'CustomerController@store'); - // Route::get('/create', [CustomerController::class, 'create'])->name('customer.create'); - //Route::Post('/export',[KonfirmasiBankController::class,'export'])->name('konfirmasibank.export'); + Route::get('konfirmasibank/getData',array('as'=>'getData','uses'=>'KonfirmasiBankController@getData')); + Route::post('konfirmasibank/export', [KonfirmasiBankController::class, 'export'])->name('konfirmasibank.export'); + Route::get('konfirmasibank/addFasilitas',[KonfirmasiBankController::class,'addFasilitas'])->name('konfirmasibank.addFasilitas'); + Route::post('konfirmasibank/postFasilitas','KonfirmasiBankController@postFasilitas')->name('konfirmasibank.postFasilitas'); + Route::post('konfirmasibank/editFasilitas','KonfirmasiBankController@editFasilitas')->name('konfirmasibank.editFasilitas'); + Route::post('konfirmasibank/update','KonfirmasiBankController@updateFasilitas')->name('konfirmasibank.updateFasilitas'); + Route::post('konfirmasibank/destroy','KonfirmasiBankController@destroyFasilitas')->name('konfirmasibank.destroyFasilitas'); }); \ No newline at end of file