From e9d20b60ff2d54709040f7049ccae65f6a83c6ef Mon Sep 17 00:00:00 2001 From: arieeefajar Date: Sat, 14 Jun 2025 15:24:06 +0700 Subject: [PATCH 1/3] fix(master-rule): crud func rule user --- .../Controllers/MasterData/RuleController.php | 3 +- .../aturan/{index1.js => petugas.js} | 20 +- .../master-data/aturan/rule_user.blade.php | 325 ++++++++++++++++++ resources/views/partials/sidebar.blade.php | 25 +- routes/web.php | 13 +- 5 files changed, 375 insertions(+), 11 deletions(-) rename public/assets/js/pages/customJs/master-data/aturan/{index1.js => petugas.js} (95%) create mode 100644 resources/views/master-data/aturan/rule_user.blade.php diff --git a/app/Http/Controllers/MasterData/RuleController.php b/app/Http/Controllers/MasterData/RuleController.php index 64cb31c..17d2ed6 100644 --- a/app/Http/Controllers/MasterData/RuleController.php +++ b/app/Http/Controllers/MasterData/RuleController.php @@ -13,7 +13,7 @@ class RuleController extends Controller public function index() { $indicators = Indicator::with('rules')->orderBy('created_at', 'desc')->get(); - return view('master-data.aturan.index', compact('indicators')); + return view('master-data.aturan.rule_user', compact('indicators')); } public function store(Request $request) @@ -61,7 +61,6 @@ public function store(Request $request) public function update(Request $request, $id) { - // dd($request->all()); $customMessage = [ 'parameter_type.required' => 'Jenis parameter wajib diisi', 'parameter_type.string' => 'Jenis parameter harus berupa teks', diff --git a/public/assets/js/pages/customJs/master-data/aturan/index1.js b/public/assets/js/pages/customJs/master-data/aturan/petugas.js similarity index 95% rename from public/assets/js/pages/customJs/master-data/aturan/index1.js rename to public/assets/js/pages/customJs/master-data/aturan/petugas.js index 568df15..1c80ccd 100644 --- a/public/assets/js/pages/customJs/master-data/aturan/index1.js +++ b/public/assets/js/pages/customJs/master-data/aturan/petugas.js @@ -15,9 +15,23 @@ checkAll && : e[t].closest("tr").classList.remove("table-active"); }); +function updateData(data) { + var form = document.getElementById("edit-form"); + var indicator = form.querySelector("#indicator-edit-field"); + var category = form.querySelector("#category-edit-field"); + var description = form.querySelector("#description-edit-field"); + var cf = form.querySelector("#cf-edit-field"); + + form.action = "/data-aturan-pengguna/" + data.id; + indicator.value = data.indicator_id; + category.value = data.parameter_type; + description.value = data.description; + cf.value = data.cf; +} + function deleteData(id) { var form = document.getElementById("delete-form"); - form.action = "/data-aturan/" + id; + form.action = "/data-aturan-pengguna/" + id; } var perPage = 10, @@ -122,7 +136,7 @@ refreshCallbacks(), .addEventListener("show.bs.modal", function (e) { e.relatedTarget.classList.contains("edit-item-btn") ? ((document.getElementById("exampleModalLabel").innerHTML = - "Edit Customer"), + "Edit Data Aturan"), (document .getElementById("showModal") .querySelector(".modal-footer").style.display = "block"), @@ -130,7 +144,7 @@ refreshCallbacks(), (document.getElementById("edit-btn").style.display = "block")) : e.relatedTarget.classList.contains("add-btn") ? ((document.getElementById("exampleModalLabel").innerHTML = - "Add Customer"), + "Tambah Data Aturan"), (document .getElementById("showModal") .querySelector(".modal-footer").style.display = "block"), diff --git a/resources/views/master-data/aturan/rule_user.blade.php b/resources/views/master-data/aturan/rule_user.blade.php new file mode 100644 index 0000000..1f9960a --- /dev/null +++ b/resources/views/master-data/aturan/rule_user.blade.php @@ -0,0 +1,325 @@ +@extends('layouts.app') +@push('title', 'Data Aturan') +@section('content') +
+
+ +
+
+
+

Data Aturan Petugas

+
+
+
+ + +
+
+
+
+

Data Aturan Petugas

+
+ +
+
+
+
+
+ +
+
+
+
+ +
+
+
+ +
+ + + + + + + + + + + + @php + $no = 1; + @endphp + + @foreach ($indicators as $indicator) + @foreach ($indicator->rules as $index => $rule) + + + + + + + + + + @endforeach + @endforeach + +
+ No + IndikatorKategoriDeskripsiCF(e)Action
+ {{ $no++ }} + {{ $indicator->name }}{{ $rule->description }}{{ $rule->cf }} + +
+
+ +
+
+ +
+
+
+ +
+ + +
+
+
+ +
+ +
+ + + + + + + + +
+ +
+ + + @push('other-js') + + + + + + + + + + @endpush +@endsection diff --git a/resources/views/partials/sidebar.blade.php b/resources/views/partials/sidebar.blade.php index a9a06ed..c1f978d 100644 --- a/resources/views/partials/sidebar.blade.php +++ b/resources/views/partials/sidebar.blade.php @@ -70,10 +70,33 @@ class="nav-link {{ request()->routeIs('master_data.indikator.*') ? 'active' : '' diff --git a/routes/web.php b/routes/web.php index 4b4ad5e..691d1e9 100644 --- a/routes/web.php +++ b/routes/web.php @@ -101,11 +101,14 @@ Route::delete('/{id}', 'destroy')->name('destroy'); }); - Route::prefix('data-aturan')->controller(RuleController::class)->name('aturan.')->group(function () { - Route::get('/', 'index')->name('index'); - Route::post('/', 'store')->name('store'); - Route::put('/{id}', 'update')->name('update'); - Route::delete('/{id}', 'destroy')->name('destroy'); + Route::name('aturan.')->group(function () { + + Route::prefix('data-aturan-pengguna')->controller(RuleController::class)->group(function () { + Route::get('/', 'index')->name('user'); + Route::post('/', 'store')->name('user_store'); + Route::put('/{id}', 'update')->name('user_update'); + Route::delete('/{id}', 'destroy')->name('user_destroy'); + }); }); }); From 023ce6fa192d856ba238d81ac232ec455114bf6a Mon Sep 17 00:00:00 2001 From: arieeefajar Date: Sat, 14 Jun 2025 17:17:26 +0700 Subject: [PATCH 2/3] fix(master-rule): add func read and create rule expert --- .../MasterData/RuleExpertController.php | 65 +++++++++++++++++++ app/Models/Indicator.php | 5 ++ app/Models/RuleExpert.php | 14 ++++ .../master-data/aturan/{index.js => pakar.js} | 32 ++++----- ...{index.blade.php => rule_expert.blade.php} | 22 +++---- .../master-data/aturan/rule_user.blade.php | 2 +- resources/views/partials/sidebar.blade.php | 4 +- routes/web.php | 7 ++ 8 files changed, 119 insertions(+), 32 deletions(-) create mode 100644 app/Http/Controllers/MasterData/RuleExpertController.php create mode 100644 app/Models/RuleExpert.php rename public/assets/js/pages/customJs/master-data/aturan/{index.js => pakar.js} (93%) rename resources/views/master-data/aturan/{index.blade.php => rule_expert.blade.php} (97%) diff --git a/app/Http/Controllers/MasterData/RuleExpertController.php b/app/Http/Controllers/MasterData/RuleExpertController.php new file mode 100644 index 0000000..232e73c --- /dev/null +++ b/app/Http/Controllers/MasterData/RuleExpertController.php @@ -0,0 +1,65 @@ +orderBy('created_at', 'desc')->get(); + return view('master-data.aturan.rule_expert', compact('indicators')); + } + + public function store(Request $request) + { + $customMessage = [ + 'indicator.required' => 'Harap pilih indikator', + 'indicator.exists' => 'Indikator tidak ditemukan', + + 'parameter_type.required' => 'Jenis parameter wajib diisi', + 'parameter_type.string' => 'Jenis parameter harus berupa teks', + 'parameter_type.max' => 'Jenis parameter maksimal 25 karakter', + + 'description.required' => 'Deskripsi wajib diisi', + 'description.string' => 'Deskripsi harus berupa teks', + 'description.max' => 'Deskripsi maksimal 40 karakter', + + 'cf.required' => 'Nilai CF wajib diisi', + 'cf.numeric' => 'Nilai CF harus berupa angka', + 'cf.max' => 'Nilai CF maksimal 1', + ]; + + $validator = Validator::make($request->all(), [ + 'indicator' => 'required|exists:indicators,id', + 'parameter_type' => 'required|string|max:25', + 'description' => 'required|string|max:40', + 'cf' => 'required|numeric|min:-1|max:1', + ], $customMessage); + + if ($validator->fails()) { + toast($validator->messages()->all()[0], 'error')->position('top-right')->autoclose(3000); + return redirect()->back()->withInput(); + } + + try { + $expertRule = new RuleExpert(); + $expertRule->indicator_id = $request->indicator; + $expertRule->parameter_type = $request->parameter_type; + $expertRule->description = $request->description; + $expertRule->cf = $request->cf; + $expertRule->save(); + toast('Data berhasil disimpan', 'success')->position('top-right')->autoclose(3000); + return redirect()->back(); + } catch (\Throwable $th) { + //throw $th; + toast('Terjadi kesalahan', 'error')->position('top')->autoclose(3000); + return redirect()->back(); + } + } +} diff --git a/app/Models/Indicator.php b/app/Models/Indicator.php index 94ed3f6..072ed5d 100644 --- a/app/Models/Indicator.php +++ b/app/Models/Indicator.php @@ -18,6 +18,11 @@ public function rules() return $this->hasMany(Rule::class, 'indicator_id', 'id'); } + public function expertRules() + { + return $this->hasMany(RuleExpert::class, 'indicator_id', 'id'); + } + public function evaluationDetails() { return $this->hasMany(EvaluationDetail::class, 'indicator_id', 'id'); diff --git a/app/Models/RuleExpert.php b/app/Models/RuleExpert.php new file mode 100644 index 0000000..1aff245 --- /dev/null +++ b/app/Models/RuleExpert.php @@ -0,0 +1,14 @@ +
@@ -7,7 +7,7 @@
-

Data Aturan

+

Data Aturan Pakar

@@ -17,7 +17,7 @@
-

Data Aturan

+

Data Aturan Pakar

@@ -50,7 +50,7 @@ class="ri-add-line align-bottom me-1"> Tambah Indikator Kategori Deskripsi - CF(e) + CF(h) Action @@ -59,7 +59,7 @@ class="ri-add-line align-bottom me-1"> Tambah @endphp @foreach ($indicators as $indicator) - @foreach ($indicator->rules as $index => $rule) + @foreach ($indicator->expertRules as $index => $rule) {{ $no++ }} @@ -132,8 +132,8 @@ class="fw-medium link-primary">#VZ2101
-
+ @csrf