get(); return view('back.faq.index', compact('faqs')); } /** * Show the form for creating a new resource. * * @param Faq $faq * @return \Illuminate\Contracts\View\View * @ignore phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass */ public function create(Faq $faq): \Illuminate\Contracts\View\View { return view('back.faq.create', compact('faq')); } /** * Store a newly created resource in storage. * * @param StoreFaqRequest $request * @return \Illuminate\Http\RedirectResponse */ public function store(StoreFaqRequest $request): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($request) { $faq = new Faq($request->validated()); $faq->order = $this->getLastOrder(); if ($faq->saveOrFail()) { return to_route('bo.faqs.edit', $faq->id)->with('success', trans(__('Creation_saved'))); } return back()->with('error', trans(__('Creation_failed'))); }); } /** * Show the form for editing the specified resource. * * @param Faq $faq * @return \Illuminate\Contracts\View\View * @ignore phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass */ public function edit(Faq $faq): \Illuminate\Contracts\View\View { return view('back.faq.edit', compact('faq')); } /** * Update the specified resource in storage. * * @param StoreFaqRequest $request * @param Faq $faq * @return \Illuminate\Http\RedirectResponse */ public function update(StoreFaqRequest $request, Faq $faq): \Illuminate\Http\RedirectResponse { return DB::transaction(function () use ($request, $faq) { $faq->fill($request->validated()); if ($faq->saveOrFail()) { return to_route('bo.faqs.edit', $faq->id)->with('success', trans(__('Changes_saved'))); } return to_route('bo.faqs.edit', $faq->id)->with('error', trans(__('Changes_failed'))); }); } /** * Remove the specified resource from storage. * * @param Faq $faq * @return \Illuminate\Http\RedirectResponse */ public function destroy(Faq $faq): \Illuminate\Http\RedirectResponse { if ($faq->deleteOrFail()) { return to_route('bo.faqs.index')->with('success', trans(__('Delete_saved'))); } return to_route('bo.faqs.index')->with('error', trans(__('Delete_failed'))); } /** * Remove the specified resource from storage. * * @param UpdateChangeOrderRequest $request * @param Faq $faq * @return \Illuminate\Http\RedirectResponse */ public function changeOrder(UpdateChangeOrderRequest $request, Faq $faq): \Illuminate\Http\RedirectResponse { if ($request->validated()['action'] === 'up') { $tmp = Faq::where('order', '<', $faq->order)->orderBy('order', 'DESC')->first(); $newOrder = $tmp->order; $tmp->order = $faq->order; $faq->order = $newOrder; } elseif ($request->validated()['action'] === 'down') { $tmp = Faq::where('order', '>', $faq->order)->orderBy('order', 'ASC')->first(); $newOrder = $tmp->order; $tmp->order = $faq->order; $faq->order = $newOrder; } else { return to_route('bo.faq.index'); } $tmp->save(); $faq->save(); return back(); } /** * Get by order the last element of the list. * * @return integer */ private function getLastOrder(): int { $order = Faq::select('order')->orderBy('order', 'DESC')->first(); if ($order === null) { return 1; } return $order->order + 1; } }