orderBy('order', 'asc')->paginate(); return view('bo.ocb.index') ->with('contenu', $contenu) ->with('type', $type); } /** * Create ocb * * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory */ public function create() { return view('bo.ocb.create'); } /** * Store ocb * * @param \App\Http\Requests\Bo\StoreOcbContentRequest $request * @return \Illuminate\Http\RedirectResponse */ public function store(StoreOcbContentRequest $request) { $ocb = new OCBContent($request->validated()); $ocb->order = $this->getLastOrder($ocb->type); $this->storeUploadedImage($request, $ocb, 'picture'); $ocb->saveOrFail(); return redirect()->route('bo.ocb.content', $ocb->type); } /** * Edit page * * @param \App\Models\OCBContent $ocb * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory */ public function edit(OCBContent $ocb) { return view('bo.ocb.edit') ->with('ocb', $ocb); } /** * Update ocb * * @param \App\Http\Requests\Bo\UpdateOcbContentRequest $request * @param OCBContent $ocb * @return \Illuminate\Http\RedirectResponse */ public function update(UpdateOcbContentRequest $request, OCBContent $ocb) { $ocb->fill($request->validated()); if ($request->picture !== null) { $this->removeUploadedImage($ocb, 'picture'); $this->storeUploadedImage($request, $ocb, 'picture'); } $ocb->saveOrFail(); return redirect()->route('bo.ocb.edit', $ocb->id)->with('success', trans('Enregistré !')); } /** * Destroy ocb content * * @param \App\Models\OCBContent $ocb * @return \Illuminate\Http\RedirectResponse */ public function destroy(OCBContent $ocb) { $this->removeUploadedImage($ocb, 'picture'); $ocb->delete(); return redirect()->route('bo.ocb.content', $ocb->type) ->with('warning', trans('Le contenu à bien été supprimé')); } /** * Change ocb order * * @param \App\Models\OCBContent $current * @param mixed $action * @return \Illuminate\Http\RedirectResponse */ public function changeOrder(OCBContent $current, $action) { if ($action === 'up') { $tmp = OCBContent::where([ ['order', '<', $current->order], ['type', $current->type], ])->orderBy('order', 'DESC')->first(); $newOrder = $tmp->order; $tmp->order = $current->order; $current->order = $newOrder; } else { $tmp = OCBContent::where([ ['order', '>', $current->order], ['type', $current->type], ])->orderBy('order', 'ASC')->first(); $newOrder = $tmp->order; $tmp->order = $current->order; $current->order = $newOrder; } $tmp->save(); $current->save(); return redirect()->back(); } /** * Get Last order * * @param \App\Enums\OCBType $type * @return integer */ private function getLastOrder(OCBType $type): int { $order = OCBContent::select('order')->where('type', $type)->orderBy('order', 'DESC')->first(); if ($order === null) { return 1; } return $order->order + 1; } }