map(function($datakriteria) use ($prioritaskriterias) { // Find corresponding prioritaskriteria based on kode_kriteria $prioritasK = $prioritaskriterias->firstWhere('kode_kriteria', $datakriteria->kode_kriteria); return [ 'kode_kriteria' => $datakriteria->kode_kriteria, 'nama_kriteria' => $datakriteria->nama_kriteria, 'nilai_prioritas' => $prioritasK->nilai_prioritas ?? null, ]; }); $groupedSubkriterias = $datasubkriterias->map(function($datasubkriteria) use ($prioritassubkriterias) { $prioritas = $prioritassubkriterias->firstWhere('kode_subkriteria', $datasubkriteria->kode_subkriteria); return [ 'kode_kriteria' => $datasubkriteria->kode_kriteria, 'kode_subkriteria' => $datasubkriteria->kode_subkriteria, 'nama_subkriteria' => $datasubkriteria->nama_subkriteria, 'nilai_prioritas' => $prioritas->nilai_prioritas ?? null, ]; }); return view('pages.dataAlternatif', compact('alternatifs','prioritaskriterias','prioritassubkriterias', 'datakriterias','datasubkriterias', 'penduduks','groupedData', 'groupedSubkriterias')); } public function showTable() { // Fetch criteria data $datakriterias = DB::table('datakriterias')->get()->toArray(); // Fetch alternatif data $alternatifs = DB::table('alternatifs')->get()->toArray(); $dataSubkriterias = DataSubkriteria::pluck('kode_subkriteria', 'nama_subkriteria')->toArray(); // Assuming each alternatif is an associative array with keys corresponding to kode_subkriteria return view('pages.dataAlternatif', compact('datakriterias', 'alternatifs','datasubkriterias')); } public function showalternatif() { $alternatifs = alternatif::all(); $datakriterias = datakriteria::all(); $datasubkriterias = datasubkriteria::all(); $penduduks = penduduk::all(); return view('pages.talternatif', compact('alternatifs', 'datakriterias','datasubkriterias', 'penduduks')); } public function create() { return view('pages.talternatif'); } public function showkriteria() { $alternatifs = datakriteria::all(); $prioritaskriterias = prioritaskriteria::all(); $prioritassubkriterias = prioritassubkriteria::all(); return view('pages.dataAlternatif', compact('alternatifs','prioritassubkriterias','prioritaskriterias')); } public function showpenduduk() { $alternatifs = penduduk::all(); return view('pages.dataAlternatif', compact('alternatifs')); } public function store(Request $request) { $validatedData = $request->validate([ 'kode' => 'required', 'nama' => 'required', 'p1' => 'nullable|string|max:255', 'p2' => 'nullable|string|max:255', 'p3' => 'nullable|string|max:255', 'p4' => 'nullable|string|max:255', 'p5' => 'nullable|string|max:255', 'p6' => 'nullable|string|max:255', 'p7' => 'nullable|string|max:255', 'p8' => 'nullable|string|max:255', 'p9' => 'nullable|string|max:255', 'p10' => 'nullable|string|max:255', ]); $alternatifs = new alternatif(); $alternatifs->kode = $validatedData['kode']; $alternatifs->nama = $validatedData['nama']; $alternatifs->p1 = $validatedData['p1'] ?? null; $alternatifs->p2 = $validatedData['p2'] ?? null; $alternatifs->p3 = $validatedData['p3'] ?? null; $alternatifs->p4 = $validatedData['p4'] ?? null; $alternatifs->p5 = $validatedData['p5'] ?? null; $alternatifs->p6 = $validatedData['p6'] ?? null; $alternatifs->p7 = $validatedData['p7'] ?? null; $alternatifs->p8 = $validatedData['p8'] ?? null; $alternatifs->p9 = $validatedData['p9'] ?? null; $alternatifs->p10 = $validatedData['p10'] ?? null; // Menyimpan data ke database if ($alternatifs->save()) { return redirect('/dataalternatif')->with('success', 'Data Alternatif berhasil disimpan.'); } else { return redirect('/dataalternatif')->with('error', 'Terjadi kesalahan saat menyimpan data Alternatif.'); } } public function edit($id) { $alternatifs = alternatif::find($id); $penduduks = penduduk::all(); $datakriterias = datakriteria::all(); $datasubkriterias = datasubkriteria::all(); return view('pages.ealternatif', compact('alternatifs','penduduks','datakriterias','datasubkriterias')); } public function hapus($id) { $alternatifs = alternatif::find($id); if ($alternatifs) { $alternatifs->delete(); return redirect()->back()->with('success', 'Data berhasil dihapus.'); } else { return redirect()->back()->with('error', ' Data gagal dihapus'); } } public function update(Request $request, $id) { $validatedData = $request->validate([ 'kode' => 'required|string|max:255', 'nama' => 'required|string|max:255', 'p1' => 'nullable|string|max:255', 'p2' => 'nullable|string|max:255', 'p3' => 'nullable|string|max:255', 'p4' => 'nullable|string|max:255', 'p5' => 'nullable|string|max:255', 'p6' => 'nullable|string|max:255', 'p7' => 'nullable|string|max:255', 'p8' => 'nullable|string|max:255', 'p9' => 'nullable|string|max:255', 'p10' => 'nullable|string|max:255', ]); // Cari Alternatif berdasarkan ID $alternatif = Alternatif::findOrFail($id); $alternatif->kode = $validatedData['kode']; $alternatif->nama = $validatedData['nama']; $alternatif->p1 = $validatedData['p1'] ?? null; $alternatif->p2 = $validatedData['p2'] ?? null; $alternatif->p3 = $validatedData['p3'] ?? null; $alternatif->p4 = $validatedData['p4'] ?? null; $alternatif->p5 = $validatedData['p5'] ?? null; $alternatif->p6 = $validatedData['p6'] ?? null; $alternatif->p7 = $validatedData['p7'] ?? null; $alternatif->p8 = $validatedData['p8'] ?? null; $alternatif->p9 = $validatedData['p9'] ?? null; $alternatif->p10 = $validatedData['p10'] ?? null; // Simpan perubahan if ($alternatif->save()) { return redirect('/dataalternatif')->with('success', 'Data Alternatif berhasil diperbarui.'); } else { return redirect('/dataalternatif')->with('error', 'Terjadi kesalahan saat memperbarui data Alternatif.'); } } public function cetak() { $judul = 'Laporan Data Alternatif Penduduk'; $alternatifs = alternatif::all(); $datakriterias = datakriteria::all(); $datasubkriterias = datasubkriteria::all(); $penduduks = penduduk::all(); $prioritaskriterias = prioritaskriteria::all(); $prioritassubkriterias = prioritassubkriteria::all(); // Group data by kode_kriteria $groupedData = $datakriterias->map(function($datakriteria) use ($prioritaskriterias) { // Find corresponding prioritaskriteria based on kode_kriteria $prioritasK = $prioritaskriterias->firstWhere('kode_kriteria', $datakriteria->kode_kriteria); return [ 'kode_kriteria' => $datakriteria->kode_kriteria, 'nama_kriteria' => $datakriteria->nama_kriteria, 'nilai_prioritas' => $prioritasK->nilai_prioritas ?? null, ]; }); $groupedSubkriterias = $datasubkriterias->map(function($datasubkriteria) use ($prioritassubkriterias) { $prioritas = $prioritassubkriterias->firstWhere('kode_subkriteria', $datasubkriteria->kode_subkriteria); return [ 'kode_kriteria' => $datasubkriteria->kode_kriteria, 'kode_subkriteria' => $datasubkriteria->kode_subkriteria, 'nama_subkriteria' => $datasubkriteria->nama_subkriteria, 'nilai_prioritas' => $prioritas->nilai_prioritas ?? null, ]; }); return view('pages.print3', compact('judul', 'alternatifs', 'datakriterias', 'datasubkriterias', 'penduduks','prioritassubkriterias','prioritaskriterias','groupedSubkriterias')); } public function simpanalternatif(Request $request) { // Validate the request data $request->validate([ 'alternatif' => 'required|array', ]); // Iterate through each alternative and save the data foreach ($request->alternatif as $kode => $alternatifData) { // Save or update the record in the `rangking` table Rangking::updateOrCreate( ['kode' => $alternatifData['kode']], [ 'total' => $alternatifData['total'], 'keterangan' => $alternatifData['status'] ] ); } return redirect()->back()->with('success', 'Data berhasil disimpan.'); } protected function validateAlternatifData($data) { return [ 'kode' => $data['kode'], 'total' => is_numeric($data['total']) ? floatval($data['total']) : 0.0 ]; } public function hitungbobot() { // Mengambil semua data yang diperlukan $alternatifs = alternatif::all(); $datakriterias = datakriteria::all(); $datasubkriterias = datasubkriteria::all(); $penduduks = penduduk::all(); // Mengambil prioritaskriteria dan prioritassubkriteria dengan pengurutan yang sesuai $prioritask = prioritaskriteria::orderBy('kode_kriteria') ->orderBy('nilai_prioritas') ->get(); $prioritass = prioritassubkriteria::orderBy('kode_subkriteria') ->orderBy('nilai_prioritas', 'asc') ->get(); // Mengatur struktur data untuk menyimpan bobot prioritas kriteria dan subkriteria $bobotPrioritasKriteria = []; foreach ($prioritask as $item) { $bobotPrioritasKriteria[$item->kode_kriteria] = $item->nilai_prioritas; } $bobotPrioritasSubkriteria = []; foreach ($prioritass as $item) { // Memisahkan kode_kriteria dari kode_subkriteria $kodeKriteria = substr($item->kode_subkriteria, 0, 2); // Mengasumsikan panjang kode_kriteria adalah 2 karakter $kodeSubkriteria = substr($item->kode_subkriteria, 2); // Mengambil bagian kode subkriteria setelah kode kriteria // Memastikan hanya memproses data subkriteria yang sesuai dengan kriteria yang ada if (isset($bobotPrioritasKriteria[$kodeKriteria])) { // Menghitung bobot subkriteria berdasarkan nilai_prioritas subkriteria dan kriteria terkait $bobotSubkriteria = $item->nilai_prioritas * $bobotPrioritasKriteria[$kodeKriteria]; // Menyimpan bobot subkriteria sesuai dengan kode subkriteria $bobotPrioritasSubkriteria[$kodeSubkriteria] = $bobotSubkriteria; } } return view('pages.talternatif', compact('alternatifs','prioritassubkriterias','prioritaskriterias', 'datakriterias', 'datasubkriterias', 'penduduks', 'prioritask', 'prioritass')); } public function tampilkanForm() { // Memanggil fungsi hitungbobot() untuk mendapatkan nilai bobot $bobot = $this->hitungbobot(); // Mengirimkan variabel $bobot ke view bersamaan dengan view 'nama_view' return view('pages.talternatif', ['bobot' => $bobot]); } public function deleteAlternatif($id) { $alternatif = Alternatif::find($id); if ($alternatif) { // Delete associated rankings $alternatif->rangkings()->delete(); // Delete the alternatif $alternatif->delete(); } return redirect()->back()->with('success', 'Alternatif and its related rankings have been deleted.'); } }