ldc-legaulois/app/Http/Controllers/Bo/FaqThemesController.php

101 lines
2.5 KiB
PHP

<?php
namespace App\Http\Controllers\bo;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\Models\FaqThemes;
class FaqThemesController extends Controller
{
public function index()
{
$f = FaqThemes::orderBy('order', 'asc')->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)
{
$f = FaqThemes::findOrFail($id);
$f->delete();
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 - 1)->first();
$tmp->order = $tmp->order + 1;
$current->order = $current->order - 1;
}else{
$tmp = FaqThemes::where('order', $current->order + 1)->first();
$tmp->order = $tmp->order - 1;
$current->order = $current->order + 1;
}
$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;
}
}