107 lines
3.6 KiB
PHP
107 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Enums\BreedingPageType;
|
|
use App\Enums\GeneralConfigType;
|
|
use App\Enums\InputType;
|
|
use App\Models\BreedingPage;
|
|
use App\Models\GeneralConfig;
|
|
use Illuminate\Support\Facades\View;
|
|
|
|
class BreedingPageController extends Controller
|
|
{
|
|
/**
|
|
* BreedingPageController
|
|
*/
|
|
public function __construct()
|
|
{
|
|
$this->middleware(function ($request, $next) {
|
|
View::share('generalConfig', GeneralConfig::getCachedConfig(
|
|
GeneralConfigType::breedingPage()
|
|
));
|
|
return $next($request);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Show Breeding Page index
|
|
*
|
|
* @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory
|
|
*/
|
|
public function index()
|
|
{
|
|
return view('front.breeding-page.index');
|
|
}
|
|
|
|
/**
|
|
* Show Breeding Pages within a type
|
|
*
|
|
* @param BreedingPageType $pageType
|
|
* @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory
|
|
*/
|
|
public function list(BreedingPageType $pageType)
|
|
{
|
|
$pages = BreedingPage::where('type', $pageType)->whereStatus(true)->get();
|
|
$bannerUrl = $this->getBannerUrlFromGeneralConfig($pageType);
|
|
$headerText = $this->getTextHeaderFromGeneralConfig($pageType);
|
|
|
|
return view('front.breeding-page.list', compact('pages', 'pageType', 'bannerUrl', 'headerText'));
|
|
}
|
|
|
|
/**
|
|
* Show specific breeder page
|
|
*
|
|
* @param BreedingPageType $pageType
|
|
* @param BreedingPage $page
|
|
* @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory
|
|
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassAfterLastUsed
|
|
*/
|
|
public function show(BreedingPageType $pageType, BreedingPage $page)
|
|
{
|
|
$bannerUrl = $this->getBannerUrlFromGeneralConfig($pageType);
|
|
$headerText = $this->getTextHeaderFromGeneralConfig($pageType);
|
|
|
|
return view('front.breeding-page.show', compact('page', 'pageType', 'bannerUrl', 'headerText'));
|
|
}
|
|
|
|
/**
|
|
* Get banner url from general config
|
|
*
|
|
* @param BreedingPageType $pageType
|
|
* @return string
|
|
*/
|
|
private function getBannerUrlFromGeneralConfig(BreedingPageType $pageType): string
|
|
{
|
|
$generalConfig = GeneralConfig::getCachedConfig(GeneralConfigType::breedingPage());
|
|
/** @var string */
|
|
$key = \strval(collect($generalConfig->data)->filter(function (array $input) use ($pageType) {
|
|
return $input['inputType']['value'] === InputType::string()->value and
|
|
isset($input['type']) and
|
|
$input['type']['value'] === $pageType->value;
|
|
})->keys()->first());
|
|
|
|
/** @var string banner url or empty */
|
|
return collect($generalConfig->data)->get(str_replace('_text', '_img2', $key))['value'] ?? '';
|
|
}
|
|
|
|
/**
|
|
* Get text header from general config
|
|
*
|
|
* @param BreedingPageType $pageType
|
|
* @return string
|
|
*/
|
|
private function getTextHeaderFromGeneralConfig(BreedingPageType $pageType): string
|
|
{
|
|
$generalConfig = GeneralConfig::getCachedConfig(GeneralConfigType::breedingPage());
|
|
/** @var string */
|
|
$key = \strval(collect($generalConfig->data)->filter(function (array $input) use ($pageType) {
|
|
return $input['inputType']['value'] === InputType::string()->value and
|
|
isset($input['type']) and
|
|
$input['type']['value'] === $pageType->value;
|
|
})->keys()->first());
|
|
|
|
/** @var string banner url or empty */
|
|
return collect($generalConfig->data)->get(str_replace('_text', '_img2', $key))['text'] ?? '';
|
|
}
|
|
}
|