search) { $this->searchQuery( $product, $request->search, null, 'label', ); } $this->sortQuery($product); $searchFields = trans('Label'); $noOrder = false; if ($request->range_id) { $product->whereHas('range', fn (Builder $q) => $q->where('id', $request->range_id)); $noOrder = true; } $productModels = $product->paginate(10); $ranges = Range::query()->get(); return view('bo.pages.products.index', compact('ranges', 'productModels', 'searchFields', 'noOrder')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Contracts\View\View */ public function create(): \Illuminate\Contracts\View\View { $rangeModels = Range::orderBy('label', 'ASC')->get(); return view('bo.pages.products.create', compact('rangeModels')); } /** * Store a newly created resource in storage. * * @param \App\Http\Requests\Bo\Products\StoreProductRequest $request * @return \Illuminate\Http\RedirectResponse */ public function store(StoreProductRequest $request): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($request) { $product = new Product(); $tmpNutrionnalValues = $request->validated()['nutritionnal_values']; $tmpList = $request->validated()['list']; $product->fill($request->validated()); $product->nutritionnal_values = $tmpNutrionnalValues; $product->list = $tmpList; if ($product->saveOrFail()) { return redirect() ->route('bo.products.edit', $product) ->with('success', trans( 'crud.messages.has_been_created', ['model' => trans('models.classes.product')] )); } return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_created', ['model' => trans('models.classes.product')] )); }); } /** * Display a listing of the resource. * * @param \App\Models\Product $product * @return \Illuminate\Contracts\View\View */ public function edit(Product $product): \Illuminate\Contracts\View\View { $rangeModels = Range::orderBy('label', 'ASC')->get(); return view('bo.pages.products.edit', [ 'productModel' => $product, 'rangeModels' => $rangeModels ]); } /** * Update the specified resource in storage. * * @param \App\Http\Requests\Bo\Products\UpdateProductRequest $request * @param \App\Models\Product $product * @return \Illuminate\Http\RedirectResponse */ public function update(UpdateProductRequest $request, Product $product): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($request, $product) { $tmpNutrionnalValues = $request->validated()['nutritionnal_values']; $tmpList = $request->validated()['list']; $product->fill($request->validated()); $product->nutritionnal_values = $tmpNutrionnalValues; $product->list = $tmpList; if ($product->saveOrFail()) { return redirect() ->route('bo.products.edit', $product) ->with('success', trans( 'crud.messages.has_been_updated', ['model' => trans('models.classes.product')] )); } //end if return redirect() ->back() ->with('error', trans( 'crud.messages.cannot_be_updated', ['model' => trans('models.classes.product')] )); }); } /** * Remove the specified resource from storage. * * @param \App\Models\Product $product * @return \Illuminate\Http\RedirectResponse */ public function destroy(Product $product): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($product) { $product->recipes()->detach(); if ($product->deleteOrFail()) { return redirect() ->route('bo.products.index') ->with('success', trans( 'crud.messages.has_been_deleted', ['model' => trans('models.classes.product')] )); } return redirect() ->back() ->with('error', trans( ':crud.messages.cannot_be_deleted', ['model' => trans('models.classes.product')] )); }); } }