typefilter)); } catch (\TypeError | \BadMethodCallException | EnumNotRoutableException $e) { $currentType = SliderType::home(); } if ($request->search) { $this->searchQuery( $sliders, $request->search, null, 'title', 'link' ); } $this->sortQuery($sliders); $searchFields = trans('Titre, Lien'); $sliders->orderBy('order', 'DESC'); $sliders = $sliders->paginate(); return view('back.sliders.index', compact('sliders', 'searchFields', 'currentType')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('back.sliders.create'); } /** * Store a newly created resource in storage. * * @param \App\Http\Requests\Bo\Sliders\StoreSliderRequest $request * @return \Illuminate\Http\Response */ public function store(StoreSliderRequest $request) { return DB::transaction(function () use ($request) { $slider = new Slider(); $slider->fill($request->validated()); if ($slider->saveOrFail()) { return redirect() ->route('bo.sliders.edit', $slider) ->with('success', trans( ':model a été créé', ['model' => Str::singular(trans('models.classes.sliders'))] )); } return back(); }); } /** * Show the form for editing the specified resource. * * @param \App\Models\Slider $slider * @return \Illuminate\Http\Response */ public function edit(Slider $slider) { return view('back.sliders.edit', [ 'slider' => $slider ]); } /** * Update the specified resource in storage. * * @param \App\Http\Requests\Bo\Sliders\UpdateSliderRequest $request * @param \App\Models\Slider $slider * @return \Illuminate\Http\Response */ public function update(UpdateSliderRequest $request, Slider $slider) { return DB::transaction(function () use ($request, $slider) { $slider->fill($request->validated()); if ($slider->saveOrFail()) { return redirect() ->route('bo.sliders.edit', $slider) ->with('success', trans( ':model a été mis à jour', ['model' => Str::singular(trans('models.classes.sliders'))] )); } return back(); }); } /** * Remove the specified resource from storage. * * @param \App\Models\Slider $slider * @return \Illuminate\Http\Response */ public function destroy(Slider $slider) { if ($slider->deleteOrFail()) { return redirect() ->route('bo.sliders.index') ->with('warning', trans( ':model a bien été supprimé', ['model' => Str::singular(trans('models.classes.sliders'))] )); } return back(); } /** * Change Item Order * * @param \App\Http\Requests\Bo\ChangeOrderRequest $request * @param \App\Models\Slider $slider * @return \Illuminate\Http\RedirectResponse */ public function changeOrder(ChangeOrderRequest $request, Slider $slider) { try { DB::transaction(function () use ($request, $slider) { $tmp = Slider::query(); if ($request->action === 'up') { // * Push Item upward $tmp->where('order', '<', $slider->order) ->orderBy('order', 'DESC'); } else { // * Push Item downward $tmp->where('order', '>', $slider->order) ->orderBy('order', 'ASC'); } $tmp->whereType('type', $slider->type); $tmp = $tmp->firstOrFail(); $newOrder = $tmp->order; $tmp->order = $slider->order; $slider->order = $newOrder; if (!$slider->saveOrFail() or !$tmp->saveOrFail()) { throw new \ErrorException("Error Processing Request", 1); } }); } catch (\ErrorException | ModelNotFoundException $e) { Session::flash('error', trans('Erreur lors de la modification de l\'ordre :message', [ 'message' => $e->getMessage() ])); } //end try return redirect()->back(); } }