get('label'); // Build query $query = Dataset::query(); // Apply label filter if ($label) { $query->where('label', $label); } // Get paginated datasets (15 per page) and keep current filters in pagination links $datasets = $query->orderByDesc('id')->paginate(15)->withQueryString(); // Get statistics $stats = Dataset::selectRaw('label, count(*) as total')->groupBy('label')->get(); return view('admin.datasets.index', compact('datasets', 'stats')); } public function store(Request $request) { $request->validate([ 'label' => 'required', 'image' => 'required|image|mimes:jpeg,png,jpg|max:2048' ]); $path = $this->compressAndStoreImage($request->file('image'), 'datasets') ?? $request->file('image')->store('datasets', 'public'); Dataset::create([ 'label' => $request->label, 'image_path' => $path ]); return back()->with('success', 'Gambar dataset berhasil diupload!'); } public function destroy($id) { $data = Dataset::findOrFail($id); Storage::disk('public')->delete($data->image_path); $data->delete(); return back()->with('success', 'Data dihapus!'); } }