<?php
namespace App\Controller;
use App\Entity\MenuCat;
use App\Entity\Producto;
use App\Entity\ProductType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class MenuController extends AbstractController
{
protected $em;
public function __construct(EntityManagerInterface $manager)
{
$this->em = $manager;
}
/**
* @Route("/menu", name="menu")
*/
public function index(): Response
{
return $this->render('menu/index.html.twig', [
'controller_name' => 'MenĂº',
]);
}
/**
* @Route("/menu/{slug}", name="menu_cat")
*/
public function categoria($slug): Response
{
$subcats = []; $types = []; $cname = 'Menu';
$productos = []; $children = [];
$hasSubcats = 0; $hasProds = 0;
if($slug == 'all'){
$children = $this->em->getRepository(MenuCat::class)->findBy(['isActivo'=>1, 'parent'=>null]);
//dd($children);
$cat = new MenuCat();
$cat->setSlug('all')->setContent('Menu');
}else{
$cat = $this->em->getRepository(MenuCat::class)->findOneBy(['slug'=>$slug, 'isActivo'=>1]);
if($cat){
$children = $cat->getChildren();
$productos = $this->em->getRepository(Producto::class)->findByCat($cat);
}
}
if($slug == 'artesanales'){
$types = $this->em->getRepository(ProductType::class)->findBy(['isActivo' => 1]);
}
if($children){
foreach ($children as $child){
if($child->getIsActivo()) $subcats[] = $child;
}
}
if($subcats) $hasSubcats = 1;
if($productos) $hasProds = 1;
//dd($productos);
if(in_array($slug, ['artesanales', 'domesticas'])){
$cname = 'Cervezas '. $slug;
return $this->render('menu/cervezasa.html.twig', [
'types' => $types,
'prods' => $productos,
'cat' => $cat,
'controller_name' => $cname,
]);
}
return $this->render('menu/index.html.twig', [
'controller_name' => $cname,
'cat' => $cat,
'children' => $children,
'subcats' => $subcats,
'prods' => $productos,
'hasSubcats' => $hasSubcats,
'hasProds' => $hasProds,
]);
}
/**
* @Route("/menu/item/{slug}", name="menu_item")
*/
public function item($slug): Response
{
$prod = $this->em->getRepository(Producto::class)->findOneBy(['slug'=>$slug]);
return $this->render('menu/item.html.twig', [
'controller_name' => $prod->getContent(),
'prod' => $prod,
]);
}
}