src/Controller/ModComercio/Carta/CartaController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller\ModComercio\Carta;
  3. use App\Controller\InformacionGeneralController;
  4. use App\Entity\Catalogos\CategoriaProducto;
  5. use App\Entity\Comercio\DatosComercio;
  6. use App\Entity\Documentos\ImagenesProducto;
  7. use App\Entity\Producto\{MenuPromocionalSlide};
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class CartaController extends AbstractController {
  13.   private $em;
  14.   public function __construct(EntityManagerInterface $em) {
  15.     date_default_timezone_set('America/Guayaquil');
  16.     $this->em $em;
  17.   }
  18.   /**
  19.    * @Route("/carta", name="carta")
  20.    */
  21.   public function carta() {
  22.     $informacionGeneral = new InformacionGeneralController($this->em);
  23.     $datosComercio $this->em->getRepository(DatosComercio::class)->find(1);
  24.     $iva $datosComercio->getIdPorcentajeIva()->getPorcentaje();
  25.     $promocionalSlide $this->em->getRepository(PromocionalSlide::class)->findBy(['activo' => true'encabezado' => false'idCategoriaProducto' => 12], ['titulo' => 'ASC']);
  26.     $categoriaProducto $this->em->getRepository(CategoriaProducto::class)->findBy(['activo' => true'publicar' => true], ['ordenPresentacion' => 'ASC']);
  27.     $list = [];
  28.     foreach ($categoriaProducto as $categoria) {
  29.       $slideLateral $this->em->getRepository(PromocionalSlide::class)->findOneBy(['activo' => true'encabezado' => false'idCategoriaProducto' => $categoria->getId()]);
  30.       $heroSlide $this->em->getRepository(PromocionalSlide::class)->findOneBy(['activo' => true'encabezado' => true'idCategoriaProducto' => $categoria->getId()]);
  31.       $listMenus = [];
  32.       $menus $this->em->getRepository(Menu::class)->findBy(['idCategoriaProducto' => $categoria->getId(), 'activo' => true'publicar' => true]);
  33.       if ($menus) {
  34.         foreach ($menus as $menu) {
  35.           $listMenus $this->setArrayMenu($listMenus$menu$iva);
  36.         }
  37.       }
  38.       array_push($list, [
  39.         'id' => $categoria->getId(),
  40.         'nombre' => $categoria->getNombre(),
  41.         'imagen' => $slideLateral $slideLateral->getImagen() : "",
  42.         'hero' => $heroSlide $heroSlide->getImagen() : "",
  43.         'column1' => rand(02),
  44.         'column2' => rand(02),
  45.         'menus' => $listMenus
  46.       ]);
  47.     }
  48.     return $this->render('ModComercio/Carta/index.html.twig', [
  49.       'informacionGeneral' => $informacionGeneral->getData(),
  50.       'banner' => $promocionalSlide,
  51.       'productos' => $list
  52.     ]);
  53.   }
  54.   /**
  55.    * @Route("/categoria_carta", name="categoria_carta")
  56.    */
  57.   public function categoria_carta() {
  58.     $lista = [];
  59.     $categorias $this->em->getRepository(CategoriaProducto::class)->findBy(['activo' => true'publicar' => true], ['ordenPresentacion' => 'ASC']);
  60.     foreach ($categorias as $categoria) {
  61.       array_push($lista, [
  62.         'id' => $categoria->getId(),
  63.         'nombre' => $categoria->getNombre()
  64.       ]);
  65.     }
  66.     return $this->json($lista200);
  67.   }
  68.   /**
  69.    * @Route("/menu_carta", name="menu_carta")
  70.    */
  71.   public function menu_carta(Request $request) {
  72.     $list = [];
  73.     $filter $request->request->get('filter');
  74.     $datosComercio $this->em->getRepository(DatosComercio::class)->find(1);
  75.     $iva $datosComercio->getIdPorcentajeIva()->getPorcentaje();
  76.     if ($filter != "") :
  77.       $json json_decode($filtertrue);
  78.       foreach ($json as $categoria) {
  79.         $menus $this->em->getRepository(Menu::class)->findBy(['idCategoriaProducto' => $categoria['id'], 'activo' => true'publicar' => true]);
  80.         foreach ($menus as $menu) {
  81.           $list $this->setArrayMenu($list$menu$iva);
  82.         }
  83.       }
  84.     else :
  85.       $menus $this->em->getRepository(Menu::class)->findBy(['activo' => true'publicar' => true], ['nombre' => 'ASC']);
  86.       foreach ($menus as $menu) {
  87.         $list $this->setArrayMenu($list$menu$iva);
  88.       }
  89.     endif;
  90.     return $this->json($list200);
  91.   }
  92.   private function setArrayMenu($list$item$iva) {
  93.     $precio floatval(($iva $item->getPrecio()) / 100) + floatval($item->getPrecio());
  94.     array_push($list, [
  95.       'id' => $item->getId(),
  96.       'nombre' => $item->getNombre(),
  97.       'descripcion' => $item->getDescripcion(),
  98.       'precio' => $precio
  99.     ]);
  100.     return $list;
  101.   }
  102.   /**
  103.    * @Route("/get_detail_menu", name="get_detail_menu")
  104.    */
  105.   public function get_detail_menu(Request $request) {
  106.     $list = [];
  107.     $id $request->request->get('id');
  108.     $datosComercio $this->em->getRepository(DatosComercio::class)->find(1);
  109.     $iva $datosComercio->getIdPorcentajeIva()->getPorcentaje();
  110.     $menu $this->em->getRepository(Menu::class)->find($id);
  111.     $imagenPrincipal $this->em->getRepository(ImagenesProducto::class)->findOneBy(['idMenu' => $menu->getId(), 'principal' => true]);
  112.     $galeriaImagenes $this->em->getRepository(ImagenesProducto::class)->findBy(['idMenu' => $menu->getId(), 'principal' => false'portadaMenu' => false]);
  113.     array_push($list, [
  114.       'id' => $menu->getId(),
  115.       'nombre' => $menu->getNombre(),
  116.       'descripcion' => $menu->getDescripcion(),
  117.       'nombre_categoria' => $menu->getIdCategoriaProducto()->getNombre(),
  118.       'pu' => floatval($menu->getPrecio()),
  119.       'iva' => $iva,
  120.       'galeriaImagenes' => $galeriaImagenes,
  121.       'imagenPrincipal' => $imagenPrincipal->getIdCargaDocumento()->getUrl()
  122.     ]);
  123.     return $this->json($list[0], 200);
  124.   }
  125. }