110 lines
2.9 KiB
PHP
110 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Bo;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\FaqQuestions;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\FaqThemes;
|
|
|
|
class FaqThemesController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$f = FaqThemes::orderBy('order', 'asc')->paginate();
|
|
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;
|
|
}
|
|
}
|