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

109 lines
2.7 KiB
PHP
Raw Permalink Normal View History

<?php
2026-10-02 12:09:46 +02:00
declare(strict_types=1);
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;
2026-10-02 12:09:46 +02:00
use Illuminate\Contracts\View\View;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Gate;
class HomeController extends Controller
{
2022-08-11 10:26:29 +02:00
/**
* Display home page
2022-08-11 10:26:29 +02:00
*/
2026-10-02 12:09:46 +02:00
public function home(): View
2020-10-29 15:40:23 +01:00
{
2026-10-02 12:09:46 +02:00
if (! Gate::check('fo.gameEnabled')) {
\session()->flash('warning', trans('front.messages.game_missing_required_elements'));
}
2026-10-02 12:09:46 +02:00
/** @var view-string $view */
$view = 'theme::pages.home';
return view($view);
}
/**
* Display products with game stickers
*
* @phpcs:ignore Squiz.Commenting.FunctionComment.EmptyThrows
2026-10-02 12:09:46 +02:00
*
* @throws HttpResponseException
*/
2026-10-02 12:09:46 +02:00
public function showProducts(): View
{
2023-11-30 11:10:02 +01:00
// ? Show product list authorized ?
2026-10-02 12:09:46 +02:00
if (! Gate::allows('fo.showProducts')) {
\response()->redirectToRoute('fo.homepage')->throwResponse();
}
$rangeModelList = Range::query()->with('products')->orderBy('id')->get();
2026-10-02 12:09:46 +02:00
/** @var view-string $view */
$view = 'theme::pages.products';
return view($view, ['rangeModelList' => $rangeModelList]);
}
2023-11-30 11:10:02 +01:00
/**
* Display Faq page
*/
2026-10-02 12:09:46 +02:00
public function showFaq(): View
2023-11-30 11:10:02 +01:00
{
// ? Show QA authorized ?
2026-10-02 12:09:46 +02:00
if (! Gate::allows('fo.showFaq')) {
2023-11-30 11:10:02 +01:00
\response()->redirectToRoute('fo.homepage')->throwResponse();
}
$questionModelList = FaqQuestion::getCached();
$themeModelList = FaqTheme::getCached();
2026-10-02 12:09:46 +02:00
/** @var view-string $view */
$view = 'theme::pages.faq';
return view($view, ['questionModelList' => $questionModelList, 'themeModelList' => $themeModelList]);
2023-11-30 11:10:02 +01:00
}
2023-12-07 15:27:48 +01:00
/**
* Show the teaser page if it is activated
*/
2026-10-02 12:09:46 +02:00
public function teaser(): View | RedirectResponse
2023-12-07 15:27:48 +01:00
{
2026-10-02 12:09:46 +02:00
/** @var Settings */
$settings = resolve(Settings::class);
if (! $settings->should_display_teaser_page) {
return to_route('fo.homepage');
2023-12-07 15:27:48 +01:00
}
2026-10-02 12:09:46 +02:00
/** @var view-string $view */
$view = 'theme::pages.teaser';
return view($view);
2023-12-07 15:27:48 +01:00
}
/**
* Show the end game page if it is activated
*/
2026-10-02 12:09:46 +02:00
public function endGame(): View | RedirectResponse
2023-12-07 15:27:48 +01:00
{
2026-10-02 12:09:46 +02:00
/** @var Settings */
$settings = resolve(Settings::class);
if (! $settings->should_display_end_page) {
return to_route('fo.homepage');
2023-12-07 15:27:48 +01:00
}
2026-10-02 12:09:46 +02:00
/** @var view-string $view */
$view = 'theme::pages.end-game';
return view($view);
2023-12-07 15:27:48 +01:00
}
}