ldc-legaulois/app/Http/Controllers/ProductsController.php

137 lines
4.3 KiB
PHP
Raw Normal View History

2020-11-25 16:22:26 +01:00
<?php
namespace App\Http\Controllers;
2021-02-19 15:24:28 +01:00
use App\Models\BalancedMenus;
use App\Models\ConsumptionTimes;
2020-11-25 16:22:26 +01:00
use App\Models\ProductSliderPictures;
use App\Models\MeatTypes;
use App\Models\Moments;
use App\Models\Products;
use App\Models\Ranges;
use App\Models\Recipes;
2021-02-19 15:24:28 +01:00
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
2020-11-25 16:22:26 +01:00
class ProductsController extends Controller
{
public function index()
{
$productsSlides = ProductSliderPictures::where('status', 1)->orderBy('order', 'ASC')->get();
$meatTypes = MeatTypes::select('name', 'slug')->where('status', 1)->get();
$ct = ConsumptionTimes::select('name', 'slug')->where('status', 1)->get();
$ranges = Ranges::where('status', 1)->with(['products' => function ($q) {
$q->limit(1);
}])->get();
return view('front.products.index', compact('productsSlides', 'ranges', 'meatTypes', 'ct'));
}
2021-03-20 14:38:15 +01:00
public function filter($slug)
{
// On récupère les mêmes données qu'au dessus pour l'affichage
$productsSlides = ProductSliderPictures::where('status', 1)->orderBy('order', 'ASC')->get();
2021-03-25 09:08:10 +01:00
$ranges = Ranges::where('status', 1)->get();
$meatTypes = MeatTypes::select('name', 'slug')->where('status', 1)->get();
$ct = ConsumptionTimes::select('name', 'slug')->where('status', 1)->get();
$type = explode('/', Route::getCurrentRoute()->uri)[1];
$productsList = null;
$title = null;
$gamme = false;
$typeViande = false;
$momentConso = false;
switch ($type) {
case 'gamme':
$range = Ranges::where([['slug', $slug], ['status', 1]])->first();
2021-03-20 14:38:15 +01:00
if (!$range) {
abort(404);
2021-03-20 14:38:15 +01:00
}
$productsList = $range->products;
$title = $range->name;
$gamme = true;
break;
case 'type-viande':
$meatType = MeatTypes::where([['slug', $slug], ['status', 1]])->first();
2021-03-20 14:38:15 +01:00
if (!$meatType) {
abort(404);
2021-03-20 14:38:15 +01:00
}
$productsList = $meatType->products;
$title = $meatType->name;
$typeViande = true;
break;
case 'moment-conso':
$consumptionTime = ConsumptionTimes::where([['slug', $slug], ['status', 1]])->first();
2021-03-20 14:38:15 +01:00
if (!$ct) {
abort(404);
2021-03-20 14:38:15 +01:00
}
$productsList = $consumptionTime->products;
$title = $consumptionTime->name;
$momentConso = true;
break;
default:
abort(404);
break;
}
2021-03-21 22:51:19 +01:00
return view('front.products.index', compact(
'productsList',
'productsSlides',
2021-03-25 09:08:10 +01:00
'ranges',
2021-03-21 22:51:19 +01:00
'meatTypes',
'ct',
'title',
'gamme',
'typeViande',
'momentConso'
));
}
2021-03-20 14:38:15 +01:00
public function departaimants()
{
$productsSlides = ProductSliderPictures::where('status', 1)->orderBy('order', 'ASC')->get();
$rangesNames = Ranges::select('name', 'slug')->where('status', 1)->get();
$meatTypes = MeatTypes::select('name', 'slug')->where('status', 1)->get();
$ct = ConsumptionTimes::select('name', 'slug')->where('status', 1)->get();
$productsList = Products::where([['status', 1], ['departaimants', 1]])->get();
$departaimants = true;
$title = "Départ'Aimants";
2021-03-21 22:51:19 +01:00
return view('front.products.index', compact(
'productsList',
'departaimants',
'productsSlides',
'rangesNames',
'meatTypes',
'ct',
'title'
));
2020-11-25 16:22:26 +01:00
}
2021-03-21 22:51:19 +01:00
public function show(Products $product)
2021-03-20 14:38:15 +01:00
{
2021-02-24 09:12:02 +01:00
$recipes = $product->recipes()->get();
$ids = [];
2021-03-20 14:38:15 +01:00
foreach ($recipes as $r) {
$ids[] = $r->id;
2021-03-20 14:38:15 +01:00
}
$ids = array_unique($ids);
$recipes = Recipes::whereIn('id', $ids)->get();
return view('front.products.product', compact('product', 'recipes'));
}
2021-02-19 15:24:28 +01:00
public function indexMenusAjax(Request $request)
{
if (!$request->ajax()) {
abort(400);
}
return response()->json(BalancedMenus::productsAjax());
}
2020-11-25 16:22:26 +01:00
}