orderBy('order', 'ASC')->get(); $meatTypes = MeatTypes::select('name', 'slug')->where('status', 1)->get(); $ct = ConsumptionTimes::select('name', 'slug')->where('status', 1)->get(); $labels = Label::select('name', 'slug')->where('status', 1)->get(); $ranges = Range::where('status', 1)->with('products', function ($q) { $q->select(['id', 'range_id', 'picture']) ->whereStatus(true)->whereStar(true); })->orderBy('order')->get(); return view('front.products.index', compact('productsSlides', 'ranges', 'meatTypes', 'ct', 'labels')); } public function filter(Model $model, SubRange $slugSubRange = null) { // On récupère les mêmes données qu'au dessus pour l'affichage $productsSlides = ProductSliderPictures::where('status', 1)->orderBy('order', 'ASC')->get(); $ranges = Range::where('status', 1)->get(); $meatTypes = MeatTypes::select('name', 'slug')->where('status', 1)->get(); $ct = ConsumptionTimes::select('name', 'slug')->where('status', 1)->get(); $labels = Label::select('name', 'slug')->where('status', 1)->get(); $type = explode('/', Route::getCurrentRoute()->uri)[1]; $productsList = null; $title = null; $gamme = false; $typeViande = false; $momentConso = false; $subranges = false; switch ($type) { case 'gamme': /** @var \App\Models\Range */ $gamme = $model; $subranges = $gamme->subranges()->orderBy('order')->get(); if ($slugSubRange) { $title = $gamme->name; $productsList = $gamme->products() ->where('status', true) ->where('sub_range_id', $slugSubRange->id) ->orderBy('order') ->get(); } else { $productsList = $gamme->products->where('status', 1)->sortBy('order'); $title = $gamme->name; } break; case 'type-viande': /** @var \App\Models\MeatTypes */ $meatType = $model; $productsList = $meatType->products->where('status', 1)->sortBy('order'); $title = $meatType->name; $typeViande = true; break; case 'moment-consommations': /** @var \App\Models\ConsumptionTimes */ $consumptionTime = $model; $productsList = $consumptionTime->products->where('status', 1)->sortBy('order'); $title = $consumptionTime->name; $momentConso = true; break; case 'label': /** @var \App\Models\Label */ $label = $model; $productsList = $label->products->where('status', 1)->sortBy('order'); $title = $label->name; $momentConso = true; break; default: abort(404); break; } //end switch $subrange = $slugSubRange; return view('front.products.index', compact( 'productsList', 'productsSlides', 'ranges', 'subranges', 'subrange', 'meatTypes', 'ct', 'labels', 'title', 'gamme', 'typeViande', 'momentConso' )); } /** * Display product * * @param \App\Models\Products $frontProduct * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory */ public function show(Products $frontProduct) { $recipeVideo = $frontProduct->recipe()->first(); $recipes = $frontProduct->recipes()->get(); $ids = []; foreach ($recipes as $r) { $ids[] = $r->id; } $ids = array_unique($ids); $generalConfig = app()->view->getShared()['GeneralConfigGlobal'] ?? null; $generalConfig = $generalConfig ? $generalConfig->where('type', GeneralConfigType::rsm())->first() : null; $recipes = Recipes::whereIn('id', $ids)->where('status', true)->get(); $product = $frontProduct; return view('front.products.product', compact('product', 'recipes', 'recipeVideo', 'generalConfig')); } }