From 417f3769211a90aade2d87a4e19acfea9b029d73 Mon Sep 17 00:00:00 2001 From: Zakiaass <117088186+zakiaass@users.noreply.github.com> Date: Sat, 16 Mar 2024 15:51:30 +0700 Subject: [PATCH] Nilai Utility --- .../Controllers/PerhitunganController.php | 69 ++++++++------- .../TransformasiNilaiController.php | 72 --------------- resources/views/layout/sidebar.blade.php | 6 +- .../views/penilaian/input-nilai.blade.php | 2 +- .../views/perhitungan/nilai-utility.blade.php | 87 +++++++++++++++++++ .../perhitungan/transformasi-nilai.blade.php | 2 +- routes/web.php | 1 + 7 files changed, 127 insertions(+), 112 deletions(-) delete mode 100644 app/Http/Controllers/TransformasiNilaiController.php create mode 100644 resources/views/perhitungan/nilai-utility.blade.php diff --git a/app/Http/Controllers/PerhitunganController.php b/app/Http/Controllers/PerhitunganController.php index 6f745ca..69e1962 100644 --- a/app/Http/Controllers/PerhitunganController.php +++ b/app/Http/Controllers/PerhitunganController.php @@ -87,17 +87,6 @@ public function penilaian() public function transformasiNilai(Request $request) { - $validator = Validator::make($request->all(), [ - 'subcriteria.*.*' => 'required', - ], [ - 'subcriteria.*.*.required' => 'Semua dropdown pada kriteria harus diisi.', - 'subcriteria.*.*.exists' => 'Pilihan dropdown tidak valid.', - ]); - - if ($validator->fails()) { - return redirect()->back()->withErrors($validator)->withInput(); - } - // Ambil data nilai dari subkriteria yang dipilih dari form $subcriteriaData = $request->input('subcriteria'); @@ -117,6 +106,10 @@ public function transformasiNilai(Request $request) $transformedValues[$extracurricularId][$criteriaId] = $bobot; } } + + // Simpan data transformasi nilai ke dalam session + session(['transformedValues' => $transformedValues]); + // Ambil semua kriteria dan ekstrakurikuler untuk ditampilkan di view $criterias = Criteria::all(); $extracuricullars = Extracuricullar::all(); @@ -124,36 +117,42 @@ public function transformasiNilai(Request $request) return view('perhitungan.transformasi-nilai', compact('criterias', 'extracuricullars', 'transformedValues')); } - // public function transformasiNilai(Request $request) - // { - // // Ambil data nilai dari subkriteria yang dipilih dari form - // $subcriteriaData = $request->input('subcriteria'); + public function nilaiUtility(Request $request) + { + // Ambil data transformasi nilai dari session + $transformedValues = session('transformedValues', []); - // // Inisialisasi variabel untuk menyimpan nilai hasil transformasi - // $transformedValues = []; + // Inisialisasi variabel untuk menyimpan nilai utility + $nilaiUtility = []; - // // Lakukan transformasi nilai berdasarkan bobot subkriteria - // foreach ($subcriteriaData as $extracurricularId => $criteriaData) { - // foreach ($criteriaData as $criteriaId => $subcriteriaId) { - // // Ambil data sub-kriteria berdasarkan ID yang dipilih dari form - // $subcriteria = SubCriteria::findOrFail($subcriteriaId); + foreach ($transformedValues as $extracurricularId => $criteriaData) { + foreach ($criteriaData as $criteriaId => $bobot) { + // Temukan bobot terbesar dan terkecil dari subkriteria + $maxBobot = SubCriteria::where('criteria_id', $criteriaId)->max('bobot'); + $minBobot = SubCriteria::where('criteria_id', $criteriaId)->min('bobot'); - // // Ambil bobot dari subkriteria yang dipilih - // $bobot = $subcriteria->bobot; + // Periksa apakah penyebut bernilai nol + $denominator = $maxBobot - $minBobot; + if ($denominator == 0) { + // Tangani jika penyebut bernilai nol + $nilaiUtility[$extracurricularId][$criteriaId] = 0; // Atau nilai lainnya sesuai kebutuhan + } else { + // Lakukan perhitungan nilai utility + $utility = (($bobot - $minBobot) / $denominator); + $nilaiUtility[$extracurricularId][$criteriaId] = $utility; + } + } + } - // // Simpan hasil transformasi nilai ke dalam array - // $transformedValues[$extracurricularId][$criteriaId] = $bobot; - // } - // } + // Ambil semua kriteria dan ekstrakurikuler untuk ditampilkan di view + $criterias = Criteria::all(); + $extracuricullars = Extracuricullar::all(); - // // Ambil semua kriteria dan ekstrakurikuler untuk ditampilkan di view - // $criterias = Criteria::all(); - // $extracuricullars = Extracuricullar::all(); + // Tampilkan hasil perhitungan nilai utility ke dalam view + return view('perhitungan.nilai-utility', compact('criterias', 'extracuricullars', 'nilaiUtility')); + } - // return view('perhitungan.transformasi-nilai', compact('criterias', 'extracuricullars', 'transformedValues')); - // } - - public function index() + public function index() { // } diff --git a/app/Http/Controllers/TransformasiNilaiController.php b/app/Http/Controllers/TransformasiNilaiController.php deleted file mode 100644 index e3ba6ab..0000000 --- a/app/Http/Controllers/TransformasiNilaiController.php +++ /dev/null @@ -1,72 +0,0 @@ - - Penilaian + Perhitungan
-