groupBy('kdKriteria')->map(function ($grouped) { return $grouped->max('nilai'); }); // Loop to collect values for each balita foreach ($balita as $b) { $kdbalita = $b->kdbalita; $namaBalita = $b->balita; // dd($balita); // Get values for the specific balita and convert to an array $nilaiBalita = $nilai->where('kdbalita', $kdbalita)->toArray(); // Normalize the values based on the maximum value for each kdKriteria $normalizedNilai = array_map(function ($nilaiItem) use ($kriteria, $maxNilaiByKriteria) { $matchingKriteria = $kriteria->where('kdKriteria', $nilaiItem['kdKriteria'])->first(); if ($matchingKriteria) { $kdKriteria = $matchingKriteria->kdKriteria; // Normalize the value using the corresponding max value for this kdKriteria $maxValueForKriteria = $maxNilaiByKriteria->get($kdKriteria); if ($maxValueForKriteria) { $normalizedValue = $nilaiItem['nilai'] / $maxValueForKriteria; } $nilaiItem['bobot'] = $matchingKriteria->bobot; $nilaiItem['kriteria'] = $matchingKriteria->kriteria; $nilaiItem['normalized'] = $normalizedValue; $nilaiItem['nilaimaximum'] = $maxValueForKriteria; $nilaiItem['nilai_preferensi'] = $normalizedValue * $nilaiItem['bobot']; } return $nilaiItem; }, $nilaiBalita); // Calculate the total preferensi for this balita $totalPreferensi = array_sum(array_column($normalizedNilai, 'nilai_preferensi')); if ($totalPreferensi > 90) { $kategoriGizi = 'Gizi Baik'; } elseif ($totalPreferensi >= 81 && $totalPreferensi <= 90) { $kategoriGizi = 'Gizi Sedang'; } elseif ($totalPreferensi >= 71 && $totalPreferensi <= 80) { $kategoriGizi = 'Gizi Kurang'; } else { $kategoriGizi = 'Gizi Buruk'; } $tanggal_timbang = dataBalita::where('nama_balita', $namaBalita)->value('tanggal_timbang'); $berat_badan = dataBalita::where('nama_balita', $namaBalita)->value('berat_badan'); $tinggi_badan = dataBalita::where('nama_balita', $namaBalita)->value('tinggi_badan'); $nama_orangtua = dataBalita::where('nama_balita', $namaBalita)->value('nama_orangtua'); $nik = dataBalita::where('nama_balita', $namaBalita)->value('nik'); $alamat_rt_rw = dataBalita::where('nama_balita', $namaBalita)->value('alamat_rt_rw'); $jenis_kelamin = dataBalita::where('nama_balita', $namaBalita)->value('jenis_kelamin'); $tanggal_timbang = dataBalita::where('nama_balita', $namaBalita)->value('tanggal_timbang'); $tanggal_lahir = dataBalita::where('nama_balita', $namaBalita)->value('tanggal_lahir'); $umur_bulan = dataBalita::where('nama_balita', $namaBalita)->value('umur_bulan'); $output[] = [ 'kdbalita' => $kdbalita, 'nama_balita' => $namaBalita, 'nilai' => $nilaiBalita, 'berat_badan' => $berat_badan, 'tinggi_badan' => $tinggi_badan, 'tanggal_timbang' => $tanggal_timbang, 'normalized_nilai' => $normalizedNilai, 'total_preferensi' => $totalPreferensi, 'kategori_gizi' => $kategoriGizi, 'nik' => $nik, 'alamat' => $alamat_rt_rw, 'jenis_kelamin' => $jenis_kelamin, 'tanggal_lahir' => $tanggal_lahir, 'umur_bulan' => $umur_bulan, 'nama_orangtua'=> $nama_orangtua ]; } // dd($output); return view('pages.data_penilaian.index', [ 'output' => $output, ]); } }