count(); $totalKriteria = DB::table('kriterias')->count(); $totalUser = DB::table('users') ->join('roles', 'users.role_id', '=', 'roles.id') ->where('roles.name', '=', 'user') ->count(); return view('user.userdash', compact('totalData', 'totalKriteria', 'totalUser')); } public function userabout(){ return view('user.userabout'); } public function userfeature(){ return view('user.userfeature'); } public function userdata(Request $request) { // Ambil data dropdown $jenisMakananList = JenisMakanan::all(); $kategoriList = Kategori::all(); // Query awal $makananQuery = Makanan::query(); // Filter berdasarkan jenis makanan if ($request->has('jenis_id') && $request->jenis_id != '') { $makananQuery->where('jenis_id', $request->jenis_id); } // Filter berdasarkan kategori if ($request->has('kategori_id') && $request->kategori_id != '') { $makananQuery->where('kategori_id', $request->kategori_id); } // Filter berdasarkan pencarian nama makanan if ($request->has('search') && $request->search != '') { $makananQuery->where('nama', 'like', '%' . $request->search . '%'); } // Filter berdasarkan nilai tertinggi / terendah pada kolom yang dipilih if ($request->has('filter_nilai') && $request->filter_nilai != '' && $request->has('filter_kriteria') && $request->filter_kriteria != '') { $kolom = $request->filter_kriteria; // Validasi kolom yang diperbolehkan supaya aman $allowedColumns = ['lemak', 'natrium', 'energi', 'karbohidrat']; if (in_array($kolom, $allowedColumns)) { if ($request->filter_nilai == 'tertinggi') { $makananQuery->orderBy($kolom, 'desc'); } elseif ($request->filter_nilai == 'terendah') { $makananQuery->orderBy($kolom, 'asc'); } } } // Menentukan jumlah data per halaman $perPage = $request->per_page === 'all' ? $makananQuery->count() // tampilkan semua jika 'all' : ($request->per_page ?? 10); // default 10 // Ambil data dengan paginasi dan simpan parameter pencarian/filter $makanans = $makananQuery->paginate($perPage)->appends($request->except('page')); // Kirim ke view return view('user.userdata', compact('makanans', 'jenisMakananList', 'kategoriList')); } public function userresult() { // Ambil rekomendasi ahli dan group by hari $rekomendasiAhli = \App\Models\RekomendasiAhli::with(['makanan', 'komponen', 'waktuMakan']) ->get() ->groupBy([ 'hari', 'waktuMakan.nama', 'komponen.nama' ]); // Ambil data alternatif AHP untuk setiap kombinasi hari, waktu makan, dan komponen $alternatifAHPData = []; foreach ($rekomendasiAhli as $hari => $waktuMakans) { $alternatifAHPData[$hari] = []; foreach ($waktuMakans as $waktuMakan => $komponens) { $alternatifAHPData[$hari][$waktuMakan] = []; foreach ($komponens as $komponen => $makananCollection) { // Karena groupBy, $makananCollection adalah collection, ambil item pertama $makananItem = $makananCollection->first(); if ($makananItem) { // Ambil waktu makan ID dan komponen ID dari item pertama $waktuMakanId = $makananItem->waktu_makan_id; $komponenId = $makananItem->komponen_id; // Ambil alternatif AHP untuk kombinasi ini $alternatifAHP = \App\Models\Rekomendasi::with('makanan') ->where('waktu_makan_id', $waktuMakanId) ->where('komponen_id', $komponenId) ->where('nilai_akhir', '>', 0) ->orderBy('nilai_akhir', 'desc') ->take(5) ->get(); $alternatifAHPData[$hari][$waktuMakan][$komponen] = $alternatifAHP; } } } } return view('user.userresult', compact('rekomendasiAhli', 'alternatifAHPData')); } public function show($id) { // ambil data berdasarkan $id atau bisa juga switch/case return view('user.userfeature', compact('id')); } public function register() { // ambil data berdasarkan $id atau bisa juga switch/case return view('user.userregister', compact('id')); } }