input('search_range'); /** @var string|null */ $search_cooking_time = $request->input('search_cooking_time'); /** @var string|null */ $search_preparation_time = $request->input('search_preparation_time'); /** @var array<\App\Enums\Advices\AdviceTimeEnum> */ $adviceEnumList = AdviceTimeEnum::all(); $ranges = Range::all(); $cooking_time = null; if (is_numeric($search_cooking_time)) { $cooking_time = Arr::get($adviceEnumList, $search_cooking_time - 1); } $preparation_time = null; if (is_numeric($search_preparation_time)) { $preparation_time = Arr::get($adviceEnumList, $search_preparation_time - 1); } /** @var \App\Enums\Advices\AdviceTimeEnum|null $cooking_time */ /** @var \App\Enums\Advices\AdviceTimeEnum|null $preparation_time */ $query = Advice::query()->with('tags')->where('type', 1)->where('published', true)->when( is_numeric($search_range), fn(Builder $q) => $q->whereHas( 'products', fn(Builder $q) => $q->whereHas( 'subrange', fn(Builder $q) => $q->whereHas( 'range', fn(Builder $q) => $q->where('id', 'LIKE', $search_range) ) ) ) )->when( $cooking_time, fn(Builder $q) => $q->whereBetween('cooking_time', [ Arr::get($cooking_time->times(), 0), Arr::get($cooking_time->times(), 1) ]) )->when( $preparation_time, fn(Builder $q) => $q->whereBetween('preparation_time', [ Arr::get($preparation_time->times(), 0), Arr::get($preparation_time->times(), 1) ]) ); $recipes = $query->orderBy('priority_order', 'ASC')->paginate(9); return view('fo.pages.ideas.recipes', compact( 'ranges', 'recipes', 'search_range', 'search_cooking_time', 'search_preparation_time' )); } /** * Return a view with a specifi model. * * @param \App\Models\Advice $publishedAdvice * @return \Illuminate\Contracts\View\View */ public function show(Advice $publishedAdvice): \Illuminate\Contracts\View\View { $recipe = $publishedAdvice; $relatedRecipes = $publishedAdvice->advices()->where('type', '=', AdviceTypeEnum::recipes->value())->get(); $relatedTips = $publishedAdvice->advices()->where('type', '=', AdviceTypeEnum::tips->value())->get(); return view('fo.pages.ideas.recipe', compact('recipe', 'relatedRecipes', 'relatedTips')); } }