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'] ?? ''; } }