get('q'); $products = Product::where(function ($query) use ($q) { if ($q) { $query->where('name', 'like', '%'.$q.'%'); } }) ->orderBy('name') ->with('unit') ->paginate(25); if (in_array($request->get('action'), ['edit', 'delete']) && $request->has('id')) { $editableProduct = Product::find($request->get('id')); } return view('products.index', compact('products', 'editableProduct')); } public function store(Request $request) { $this->validate($request, [ 'name' => 'required|max:20', 'cash_price' => 'required|numeric', 'credit_price' => 'nullable|numeric', 'unit_id' => 'required|numeric', ]); Product::create($request->only('name', 'cash_price', 'credit_price', 'unit_id')); flash(trans('product.created'), 'success'); return redirect()->route('products.index'); } public function update(Request $request, $productId) { $this->validate($request, [ 'name' => 'required|max:20', 'cash_price' => 'required|numeric', 'credit_price' => 'nullable|numeric', ]); $routeParam = $request->only('page', 'q'); $product = Product::findOrFail($productId)->update($request->only('name', 'cash_price', 'credit_price', 'unit_id')); flash(trans('product.updated'), 'success'); return redirect()->route('products.index', $routeParam); } public function destroy(Request $request, $productId) { $this->validate($request, [ 'product_id' => 'required|exists:products,id', ]); $routeParam = $request->only('page', 'q'); if ($request->get('product_id') == $productId && Product::findOrFail($productId)->delete()) { flash(trans('product.deleted'), 'success'); return redirect()->route('products.index', $routeParam); } flash(trans('product.undeleted'), 'error'); return back(); } }