ldc-legaulois/app/Http/Controllers/Bo/FaqThemesController.php
Jérémy Munsch d81e4df777 - Introduce Flash Message to refactorize code
- npm i sweetalert2 --save-dev
- create confirm module
- replace all natives confirm with sweet alert
2021-09-18 12:21:21 +02:00

111 lines
3 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')
->with('warning', 'Le contenu à bien été supprimé');
}
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;
}
}