search) { $this->searchQuery( $slides, $request->search, null, 'label' ); } $this->sortQuery($slides); $searchFields = trans('Label'); $slides->orderBy('updated_at', 'DESC'); $slides = $slides->paginate(); return view('back::pages.slides.index', compact('slides', 'searchFields')); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('back::pages.slides.create', compact('sliders')); } /** * Store a newly created resource in storage. * * @param \App\Http\Requests\Bo\Slides\StoreSlideRequest $request * @return \Illuminate\Http\Response */ public function store(StoreSlideRequest $request) { return DB::transaction(function () use ($request) { $slide = new Slide(); $slide->fill($request->validated()); $slide->order = $this->getLastOrder(); if ($slide->saveOrFail()) { return redirect() ->route('bo.slides.edit', $slide) ->with('success', trans( ':model a été créé', ['model' => Str::singular(trans('models.classes.slides'))] )); } return back(); }); } /** * Show the form for editing the specified resource. * * @param \App\Models\Slide $slide * @return \Illuminate\Http\Response */ public function edit(Slide $slide) { return view('back::pages.slides.edit', [ 'slideModel' => $slide ]); } /** * Update the specified resource in storage. * * @param \App\Http\Requests\Bo\Slides\UpdateSlideRequest $request * @param \App\Models\Slide $slide * @return \Illuminate\Http\Response */ public function update(UpdateSlideRequest $request, Slide $slide) { return DB::transaction(function () use ($request, $slide) { $slide->fill($request->validated()); if ($slide->saveOrFail()) { return redirect() ->route('bo.slides.edit', $slide) ->with('success', trans( ':model a été mis à jour', ['model' => Str::singular(trans('models.classes.slides'))] )); } //end if return back(); }); } /** * Remove the specified resource from storage. * * @param \App\Models\Slide $slide * @return \Illuminate\Http\Response */ public function destroy(Slide $slide) { if ($slide->deleteOrFail()) { return redirect() ->route('bo.slides.index') ->with('warning', trans( ':model a bien été supprimé', ['model' => Str::singular(trans('models.classes.slides'))] )); } return back(); } /** * Change slide order * * @param \App\Models\Slide $slide * @param string $action * @return \Illuminate\Http\RedirectResponse */ public function changeOrder(Slide $slide, string $action) { if ($action === 'up') { $tmp = Slide::where([ ['order', '<', $slide->order], ])->orderBy('order', 'DESC')->first(); } else { $tmp = Slide::where([ ['order', '>', $slide->order], ])->orderBy('order', 'ASC')->first(); } $newOrder = $tmp->order; $tmp->order = $slide->order; $slide->order = $newOrder; DB::transaction(function () use ($tmp, $slide) { $tmp->saveOrFail(); $slide->saveOrFail(); }); return redirect()->back(); } /** * Get Last order * * @return integer */ private function getLastOrder(): int { $order = Slide::select('order') ->orderBy('order', 'DESC')->first(); if ($order === null) { return 1; } return $order->order + 1; } }