get(); return view('bo.faq-themes.index', compact('f')); } public function create() { return view('bo.faq-themes.create'); } public function store(Request $request) { $name = $request->name; $pictogram = $request->pictogram; $request->validate([ 'name' => 'required|max:100', 'pictogram' => 'required|max:255', ]); $f = new FaqThemes(); $f->name = $name; $f->pictogram = $pictogram; $f->order = $this->getLastOrder(); $f->save(); return redirect()->route('bo.faq-themes.index'); } public function edit($id) { $f = FaqThemes::findOrFail($id); return view('bo.faq-themes.edit', compact('f')); } public function update(Request $request, $id) { $name = $request->name; $pictogram = $request->pictogram; $request->validate([ 'name' => 'required|max:100', 'pictogram' => 'required|max:255', ]); $f = FaqThemes::findOrFail($id); $f->name = $name; $f->pictogram = $pictogram; $f->save(); return redirect()->route('bo.faq-themes.edit', $f->id)->with('success', 'Enregistré !'); } public function destroy($id) { $qExist = FaqQuestions::where('theme_id', $id)->exists(); if (!$qExist) { $f = FaqThemes::findOrFail($id); $f->delete(); } else { return redirect()->back()->withErrors('Le thème que vous souhaitez supprimer est encore lié à une ou plusieurs question(s).'); } return redirect()->route('bo.faq-themes.index'); } public function changeOrder($id, $action) { $current = FaqThemes::findOrFail($id); if ($action === 'up') { $tmp = FaqThemes::where('order', '<', $current->order)->orderBy('order', 'DESC')->first(); $newOrder = $tmp->order; $tmp->order = $current->order; $current->order = $newOrder; } else { $tmp = FaqThemes::where('order', '>', $current->order)->orderBy('order', 'ASC')->first(); $newOrder = $tmp->order; $tmp->order = $current->order; $current->order = $newOrder; } $tmp->save(); $current->save(); return redirect()->route('bo.faq-themes.index'); } private function getLastOrder() { $order = FaqThemes::select('order')->orderBy('order', 'DESC')->first(); if ($order === null) { return 1; } return $order->order + 1; } }