ldc-legaulois/app/Http/Controllers/Bo/FaqQuestionsController.php
2021-06-15 15:33:17 +02:00

105 lines
3.1 KiB
PHP

<?php
namespace App\Http\Controllers\Bo;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\FaqThemes;
use App\Models\FaqQuestions;
use App\Traits\UpdateModelStatus;
class FaqQuestionsController extends Controller
{
use UpdateModelStatus;
public function index(Request $request)
{
$q = FaqQuestions::with('theme');
$this->sortQuery($q, ['utility']);
if ($request->sort_col === 'utility' and $request->sort_way) {
$q = $q->select('faq_questions.*');
$q = $q->selectRaw(
'(1 - faq_questions.negative_vote / faq_questions.positive_vote) AS `faq_questions_utility`'
);
$q = $q->orderBy('faq_questions_utility', $request->sort_way);
}
$q = $q->paginate();
return view('bo.faq-questions.index', compact('q'));
}
public function create()
{
$f = FaqThemes::orderBy('order', 'asc')->get();
return view('bo.faq-questions.create', compact('f'));
}
public function store(Request $request)
{
$question = $request->question;
$answer = $request->answer;
$positiveVote = $request->positive_vote;
$negativeVote = $request->negative_vote;
$themeId = $request->theme;
$status = 0;
$request->validate([
'question' => 'required|max:255',
'answer' => 'required|max:255',
'positive_vote' => 'required|min:0',
'negative_vote' => 'required|min:0',
]);
$q = new FaqQuestions();
$q->question = $question;
$q->answer = $answer;
$q->positive_vote = intval($positiveVote);
$q->negative_vote = intval($negativeVote);
$q->faq_themes_id = $themeId;
$q->status = $status;
$q->save();
return redirect()->route('bo.faq-questions.index');
}
public function edit(FaqQuestions $q)
{
$f = FaqThemes::orderBy('order', 'asc')->get();
return view('bo.faq-questions.edit')
->with('q', $q)
->with('f', $f);
}
public function update(Request $request, FaqQuestions $q)
{
$question = $request->question;
$answer = $request->answer;
$positiveVote = intval($request->positive_vote);
$negativeVote = intval($request->negative_vote);
$themeId = $request->theme;
$status = $request->status === null ? 0 : 1;
$request->validate([
'question' => 'required|max:255',
'answer' => 'required|max:255',
'positive_vote' => 'required|min:0',
'negative_vote' => 'required|min:0',
]);
$q->question = $question;
$q->answer = $answer;
$q->positive_vote = $positiveVote;
$q->negative_vote = $negativeVote;
$q->faq_themes_id = $themeId;
$q->status = $status;
$q->save();
return redirect()->route('bo.faq-questions.edit', $q->id)->with('success', 'Enregistré !');
}
public function destroy(FaqQuestions $q)
{
$q->delete();
return redirect()->route('bo.faq-questions.index');
}
}