count(); // atau model: DataMakanan::count() $totalKriteria = DB::table('kriterias')->count(); $totalUser = DB::table('users')->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() { $rekomendasi = \App\Models\RekomendasiAhli::with('komponen', 'waktuMakan') ->get() ->groupBy([ fn($item) => $item->waktu_makan_id, fn($item) => strtolower($item->komponen->nama), ]); $waktuMakans = \App\Models\WaktuMakan::all()->keyBy('id'); // Ambil alternatif dari tabel rekomendasis $alternatifGrouped = \App\Models\Rekomendasi::with('makanan') ->where('nilai_akhir', '>', 0) ->get() ->groupBy(fn($item) => $item->waktu_makan_id . '-' . $item->komponen_id); return view('user.userresult', compact('rekomendasi', 'waktuMakans', 'alternatifGrouped')); } 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')); } }