validate([ 'kodekriteria' => 'required', 'kodesubkriteria' => 'required', 'namasubkriteria' => 'required', 'nilaibobot' => 'required', ]); $datasubkriterias = new datasubkriteria; $datasubkriterias->id_kriteria = $validatedData['kodekriteria']; $datasubkriterias->kode_subkriteria = $validatedData['kodesubkriteria']; $datasubkriterias->nama_subkriteria = $validatedData['namasubkriteria']; $datasubkriterias->nilai_bobot = $validatedData['nilaibobot']; $datasubkriterias->save(); return redirect('/parameter')->with('success', 'Data Sub Kriteria berhasil disimpan.'); } public function hapus($id) { $datasubkriterias = datasubkriteria::find($id); if ($datasubkriterias) { $datasubkriterias->delete(); return redirect()->back()->with('success', 'Data berhasil dihapus.'); } else { return redirect()->back()->with('error', ' Data gagal dihapus'); } } public function edit($id) { $datasubkriterias = datasubkriteria::find($id); return view('pages.eparameter', compact('datasubkriterias')); } // Metode untuk memperbarui data yang diubah public function update(Request $request, $id) { $datasubKriterias = datasubkriteria::find($id); $datasubKriterias->id_kriteria = $request->input('kodekriteria'); $datasubKriterias->kode_subkriteria = $request->input('kodesubkriteria'); $datasubKriterias->nama_subkriteria = $request->input('namasubkriteria'); $datasubKriterias->nilai_bobot = $request->input('nilaibobot'); $datasubKriterias->save(); // Redirect ke halaman yang sesuai atau lakukan tindakan lainnya return redirect()->back()->with('success', 'Data Sub Kriteria berhasil diperbarui.'); } public function subkriteria($id_kriteria) { $datakriteria = Datakriteria::findOrFail($id_kriteria); $subkriterias = datasubkriteria::where('id_kriteria', $id_kriteria)->get(); return view('pages.dataSubKriteria', compact('datakriteria', 'subkriterias')); } public function storen(Request $request) { $request->validate([ 'subkriteria1' => 'required', 'nilai_bobot' => 'required', 'subkriteria2' => 'required', ]); $datasubkriterias = [ 'subkriteria1' => $request->subkriteria1, 'subkriteria2' => $request->subkriteria2, ]; $perbandingans = perbandingans::where($datasubkriterias)->first(); if ($perbandingans) { $perbandingans->update([ 'nilai_bobot' => $request->nilai_bobot, ]); } else { perbandingans::create($datasubkriterias + ['nilai_bobot' => $request->nilai_bobot]); } return redirect()->back()->with('success', 'Data berhasil disimpan')->with('tabel-kriteria', true); } public function calculateNormalization() { $datakriterias = datasubkriteria::all(); $columnTotals = []; $nilaiBobotMatrix = []; $priorities = []; // Hitung nilai bobot dan total per kolom foreach ($datakriterias as $row) { $rowTotal = 0; foreach ($datakriterias as $column) { if ($row->kode_kriteria === $column->kode_kriteria) { $nilai_bobot = 1; // Isi otomatis dengan nilai 1 jika xkriteria dan ykriteria sama } else { $nilai_bobot = perbandingans::where('kriteria1', $row->kode_kriteria) ->where('kriteria2', $column->kode_kriteria) ->value('nilai_bobot'); if (!$nilai_bobot) { $nilai_bobot = perbandingans::where('kriteria1', $column->kode_kriteria) ->where('kriteria2', $row->kode_kriteria) ->value('nilai_bobot'); if (!$nilai_bobot) { $nilai_bobot = 0; // Set nilai_bobot menjadi 0 jika tidak ada data yang ditemukan } else { $nilai_bobot = 1 / floatval($nilai_bobot); // Menghitung nilai kebalikan setelah mengubah ke tipe float } } } $rowTotal += floatval($nilai_bobot); $columnTotals[$column->id] = isset($columnTotals[$column->id]) ? $columnTotals[$column->id] + floatval($nilai_bobot) : floatval($nilai_bobot); $nilaiBobotMatrix[$row->id][$column->id] = floatval($nilai_bobot); } } // Hitung nilai normalisasi dan prioritas foreach ($datakriterias as $rowIndex => $row) { $rowSum = 0; foreach ($datakriterias as $columnIndex => $column) { $normalizedValue = 0; if (isset($columnTotals[$column->id]) && $columnTotals[$column->id] != 0) { $normalizedValue = $nilaiBobotMatrix[$row->id][$column->id] / $columnTotals[$column->id]; } $rowSum += $normalizedValue; } $priority = $rowSum / count($datakriterias); $priorities[$row->id] = $priority; // Simpan nilai prioritas ke database $kriteria = datakriteria::find($row->id); $kriteria->priority = $priority; $kriteria->save(); } foreach ($datakriterias as $rowIndex => $row) { // Hitung prioritas $priority = $rowSum / count($datakriterias); // Simpan hasil prioritas ke database prioritassubkriteria::create([ 'kriteria_id' => $row->id, // Sesuaikan dengan kolom yang sesuai di database 'nilai_prioritas' => $priority, // Jika ada kolom lain yang perlu disimpan, tambahkan di sini ]); } // Hitung Lambda Max $lambdaMax = array_sum(array_map(function ($priority, $columnId) use ($columnTotals) { return $priority * $columnTotals[$columnId]; }, $priorities, array_keys($priorities))); // Hitung CI dan CR $CI = ($lambdaMax - count($datakriterias)) / (count($datakriterias) - 1); $RI = 1.12; // Nilai Random Index untuk jumlah kriteria tertentu, sesuaikan dengan tabel RI $CR = $CI / $RI; // Kirim data ke view return view('pages.dataKriteria', compact('datakriterias', 'columnTotals', 'nilaiBobotMatrix', 'priorities', 'lambdaMax', 'CI', 'CR')); } }