<?php
namespace App\Controller\ModComercio\Ventas;
use App\Entity\Catalogos\CategoriaProducto;
use App\Entity\Comercio\DatosComercio;
use App\Entity\Documentos\ImagenesProducto;
use App\Entity\Producto\{Acompanamiento, Menu};
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;
use Exception;
use Symfony\Component\HttpFoundation\Request;
class CartaController extends AbstractController {
private $em;
public function __construct(EntityManagerInterface $em) {
date_default_timezone_set('America/Guayaquil');
$this->em = $em;
}
// * READ FUNCTIONS *
/**
* @Route("/getCategoria", name="getCategoria")
*/
public function getCategoria() {
$lista = [];
$categorias = $this->em->getRepository(CategoriaProducto::class)->findBy([], ['nombre' => 'ASC']);
foreach ($categorias as $categoria) {
if ($categoria->getId() != 12) :
array_push($lista, [
'id' => $categoria->getId(),
'nombre' => $categoria->getNombre()
]);
endif;
}
return $this->json($lista, 200);
}
/**
* @Route("/getInitialCarta", name="getInitialCarta")
*/
public function getInitialCarta(Request $request) {
$list = [];
$filter = $request->request->get('filter');
$datosComercio = $this->em->getRepository(DatosComercio::class)->find(1);
$iva = $datosComercio->getIdPorcentajeIva()->getPorcentaje();
if ($filter != "") :
$json = json_decode($filter, true);
foreach ($json as $categoria) {
$menus = $this->em->getRepository(Menu::class)->findBy(['idCategoriaProducto' => $categoria['id'], 'activo' => true], ['nombre' => 'ASC']);
foreach ($menus as $menu) {
$list = $this->setArrayMenu($list, $menu, $iva);
}
}
else:
$menus = $this->em->getRepository(Menu::class)->findBy(['activo' => true], ['nombre' => 'ASC']);
foreach ($menus as $menu) {
$list = $this->setArrayMenu($list, $menu, $iva);
}
endif;
return $this->json($list, 200);
}
private function setArrayMenu($list, $item, $iva) {
$precio = floatval(($iva * $item->getPrecio()) / 100) + floatval($item->getPrecio());
$portada = $this->em->getRepository(ImagenesProducto::class)->findOneBy(['idMenu' => $item->getId(), 'principal' => false, 'portadaMenu' => true]);
array_push($list, [
'id' => $item->getId(),
'nombre' => $item->getNombre(),
'descripcion' => $item->getDescripcion(),
'precio' => $precio,
'imagenPrincipal' => $portada ? $portada->getIdCargaDocumento()->getImagen() : "",
'acompanamiento' => $item->getAcompanamiento()
]);
return $list;
}
/**
* @Route("/getAcompanamientosMenu", name="getAcompanamientosMenu")
*/
public function getAcompanamientosMenu(Request $request) {
$list = [];
$idMenu = $request->request->get('idMenu');
$acompanamiento = $this->em->getRepository(Acompanamiento::class)->findBy(['idMenu' => $idMenu]);
if ($acompanamiento) :
foreach ($acompanamiento as $item) {
$list[] = [
'id' => $item->getId(),
'nombre' => $item->getIdMenuComponentes()->getIdComponentes()->getNombre()
];
}
endif;
return $this->json($list, 200);
}
// * CREATE OR UPDATE FUNCTIONS *
private function setGenericData($user = null, $entity) {
$entity
->setIdUsuarioModificacion($user != null ? $user->getId() : '1')
->setFechaModificacion(new \DateTime())
->setIpModificacion($_SERVER['REMOTE_ADDR'])
;
return $entity;
}
// * DELETE FUNCTIONS *
}