2021-02-15 17:44:45 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
|
|
use App\Http\Requests\UpdateStatisfationStatRequest;
|
|
|
|
|
use App\Models\FaqQuestions;
|
|
|
|
|
use App\Models\FaqThemes;
|
|
|
|
|
|
|
|
|
|
class FaqController extends Controller
|
|
|
|
|
{
|
2021-06-15 15:33:17 +02:00
|
|
|
/**
|
|
|
|
|
* OrderBy utility
|
|
|
|
|
* Working SQL query
|
|
|
|
|
*
|
|
|
|
|
* select * from `faq_themes`
|
|
|
|
|
* inner join `faq_questions` on `faq_themes`.`id` = `faq_questions`.`faq_themes_id`
|
|
|
|
|
* inner JOIN (
|
|
|
|
|
* SELECT (1 - faq_questions.negative_vote / faq_questions.positive_vote) AS `faq_questions_utility`
|
|
|
|
|
* FROM `faq_questions`
|
|
|
|
|
* ) b on `faq_themes`.`id` = `faq_questions`.`faq_themes_id`
|
|
|
|
|
* order by `faq_questions_utility` desc;
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
2021-02-15 17:44:45 +01:00
|
|
|
public function index()
|
|
|
|
|
{
|
2022-02-10 16:14:58 +01:00
|
|
|
return view('front.faq.index', [
|
2021-06-15 15:33:17 +02:00
|
|
|
'themes' => FaqThemes::with(['questions' => function ($q) {
|
|
|
|
|
return $q->select('faq_questions.*')
|
|
|
|
|
->selectRaw(
|
|
|
|
|
'(1 - faq_questions.negative_vote / faq_questions.positive_vote) AS `faq_questions_utility`'
|
|
|
|
|
)->orderBy('faq_questions_utility', 'desc');
|
|
|
|
|
}])->orderBy('order')->get()
|
2021-02-15 17:44:45 +01:00
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function updateSatisfactionStat(UpdateStatisfationStatRequest $request, FaqQuestions $question)
|
|
|
|
|
{
|
2022-02-10 16:14:58 +01:00
|
|
|
$opinion = (bool)$request->opinion;
|
2021-02-15 17:44:45 +01:00
|
|
|
$sessionKey = sprintf('faq.questions.%d', $question->id);
|
|
|
|
|
if (!session()->has($sessionKey)) {
|
|
|
|
|
session()->put($sessionKey, true);
|
|
|
|
|
session()->save();
|
|
|
|
|
if ($opinion) {
|
2021-04-28 13:57:12 +02:00
|
|
|
$question->positive_vote = intval(($question->positive_vote ?? 0) + 1);
|
2021-02-15 17:44:45 +01:00
|
|
|
} else {
|
2021-04-28 13:57:12 +02:00
|
|
|
$question->negative_vote = intval(($question->negative_vote ?? 0) + 1);
|
2021-02-15 17:44:45 +01:00
|
|
|
}
|
2021-04-28 13:57:12 +02:00
|
|
|
$question->saveOrFail();
|
2021-02-15 17:44:45 +01:00
|
|
|
}
|
|
|
|
|
return response()->json();
|
|
|
|
|
}
|
|
|
|
|
}
|