ldc-gen-game-web/app/Http/Controllers/Fo/HomeController.php

96 lines
2.8 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers\Fo;
use App\Http\Controllers\Controller;
2023-11-30 11:10:02 +01:00
use App\Models\FaqQuestion;
use App\Models\FaqTheme;
use App\Models\Range;
use App\Models\Settings;
use Illuminate\Support\Facades\Gate;
class HomeController extends Controller
{
2022-08-11 10:26:29 +02:00
/**
* Display home page
2023-08-24 12:59:51 +00:00
*
* @return \Illuminate\Contracts\View\View
2022-08-11 10:26:29 +02:00
*/
2024-01-31 09:03:18 +00:00
public function home(): \Illuminate\Contracts\View\View
2020-10-29 15:40:23 +01:00
{
if (!Gate::check('fo.gameEnabled')) {
\session()->flash('warning', trans('Il manque des éléments pour que le jeu soit jouable'));
}
return view('theme::pages.home');
}
/**
* Display products with game stickers
*
* @return \Illuminate\Contracts\View\View
* @phpcs:ignore Squiz.Commenting.FunctionComment.EmptyThrows
* @throws \Illuminate\Http\Exceptions\HttpResponseException
*/
2024-01-31 09:03:18 +00:00
public function showProducts(): \Illuminate\Contracts\View\View
{
2023-11-30 11:10:02 +01:00
// ? Show product list authorized ?
if (!Gate::allows('fo.showProducts')) {
\response()->redirectToRoute('fo.homepage')->throwResponse();
}
$rangeModelList = Range::query()->with('products')->orderBy('id')->get();
return view('theme::pages.products', compact('rangeModelList'));
}
2023-11-30 11:10:02 +01:00
/**
* Display Faq page
*
* @return \Illuminate\Contracts\View\View
*/
2024-01-31 09:03:18 +00:00
public function showFaq(): \Illuminate\Contracts\View\View
2023-11-30 11:10:02 +01:00
{
// ? Show QA authorized ?
if (!Gate::allows('fo.showFaq')) {
\response()->redirectToRoute('fo.homepage')->throwResponse();
}
$questionModelList = FaqQuestion::getCached();
$themeModelList = FaqTheme::getCached();
return view('theme::pages.faq', compact(
'questionModelList',
'themeModelList'
));
}
2023-12-07 15:27:48 +01:00
/**
* Show the teaser page if it is activated
*
2024-01-31 09:03:18 +00:00
* @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse
2023-12-07 15:27:48 +01:00
*/
2024-01-31 09:03:18 +00:00
public function teaser(): \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse
2023-12-07 15:27:48 +01:00
{
/** @var \App\Models\Settings */
$settings = app(Settings::class);
if (!$settings->should_display_teaser_page) {
return redirect()->route('fo.homepage');
2023-12-07 15:27:48 +01:00
}
return view('theme::pages.teaser');
2023-12-07 15:27:48 +01:00
}
/**
* Show the end game page if it is activated
*
2024-01-31 09:03:18 +00:00
* @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse
2023-12-07 15:27:48 +01:00
*/
2024-01-31 09:03:18 +00:00
public function endGame(): \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse
2023-12-07 15:27:48 +01:00
{
/** @var \App\Models\Settings */
$settings = app(Settings::class);
if (!$settings->should_display_end_page) {
return redirect()->route('fo.homepage');
2023-12-07 15:27:48 +01:00
}
return view('theme::pages.end-game');
2023-12-07 15:27:48 +01:00
}
}