Example #1
0
 /**
  * @Route("/realizar_pedido", name="realizar_pedido")
  */
 public function realizarPedidoAction()
 {
     $total = 0;
     if (isset($_SESSION['pedido'])) {
         if ($_SESSION['pedido'] != '') {
             $em = $this->getDoctrine()->getManager();
             $pedido = $_SESSION['pedido'];
             $mesa = $em->getRepository('AppBundle:Mesa')->findOneById($this->getUser()->getMesaOcupada());
             //creamos un nuevo pedido
             $pedidoRealizado = new Pedido();
             $pedidoRealizado->setEstado('pendiente');
             $pedidoRealizado->setIncidencias('Sin incidencias');
             $pedidoRealizado->setMesaOcupada($mesa);
             $em->persist($pedidoRealizado);
             // Guardar los cambios
             $em->flush();
             //creamos una factura
             $factura = new FacturaNoPagada();
             $factura->setHora(new \DateTime());
             $factura->setIdPedido($pedidoRealizado->getId());
             $factura->setUsuario($this->getUser());
             $factura->setIdUsuario($this->getUser()->getId());
             $em->persist($factura);
             // Guardar los cambios
             $em->flush();
             //creamos los detalles del pedido
             for ($i = 0; $i < count($pedido); $i++) {
                 $producto = $em->getRepository('AppBundle:Producto')->findOneBy(array('id' => $pedido[$i][0]));
                 //guardamos los detalles del pedido
                 $newPedido = new DetallePedido();
                 $newPedido->setPrecio($producto->getPrecio());
                 $newPedido->setNombreProducto($pedido[$i][0]->getNombreProducto());
                 $newPedido->setCantidad($pedido[$i][1]);
                 $newPedido->setDpedido($pedidoRealizado);
                 $newPedido->setListo(false);
                 $em->persist($newPedido);
                 // Guardar los cambios
                 $em->flush();
                 //actualizamos la cuenta
                 $precio = $producto->getPrecio();
                 $cantidad = $pedido[$i][1];
                 $cuenta = $mesa->getCuenta();
                 $mesa->setCuenta($cuenta + $precio * $cantidad);
                 $em->persist($mesa);
                 // Guardar los cambios
                 $em->flush();
                 //descontamos los productos en el almacen
                 //dentro del carrito buscamos los pedidos que tengan cantidad distinta de 0 para descontar los productos
                 if ($pedido[$i][1] != 0) {
                     $Ingredientes = $em->getRepository('AppBundle:Ingredientes')->findBy(array('nombreProducto' => $producto->getNombreProducto()));
                     if ($Ingredientes) {
                         for ($z = 0; $z < count($Ingredientes); $z++) {
                             $almacen = $em->getRepository('AppBundle:Almacen')->findBy(array('nombreIngrediente' => $Ingredientes[$z]->getNombreIngrediente()));
                             $stockActual = $almacen[0]->getStock();
                             $almacen[0]->setStock($stockActual - $Ingredientes[$z]->getCantidad() * $pedido[$i][1]);
                             $em->persist($almacen[0]);
                             // Guardar los cambios
                             $em->flush();
                         }
                     }
                 }
                 //guardamos la factura
                 $usuario1 = $em->getRepository('AppBundle:Usuario')->findOneById($this->getUser()->getId());
                 $usuario1->setFactura($mesa->getCuenta());
                 $em->persist($usuario1);
                 // Guardar los cambios
                 $em->flush();
             }
             $this->addFlash('notice', 'Pedido realizado!');
         }
         $em = $this->getDoctrine()->getManager();
         $mesa = $em->getRepository('AppBundle:Mesa')->findOneById($this->getUser()->getMesaOcupada());
         $producto = new Producto();
         $_SESSION['pedido'] = '';
         $pedido = null;
         return $this->render('default/cuenta.html.twig', ['producto' => $producto, 'mesa' => $mesa, 'total' => $total, 'pedido' => $pedido]);
     } else {
         //Se muestra la cuenta sin pedidos.
         $em = $this->getDoctrine()->getManager();
         $mesa = $em->getRepository('AppBundle:Mesa')->findOneById($this->getUser()->getMesaOcupada());
         $producto = new Producto();
         $pedido = null;
         return $this->render('default/cuenta.html.twig', ['producto' => $producto, 'mesa' => $mesa, 'total' => $total, 'pedido' => $pedido]);
     }
 }
Example #2
0
 /**
  * @Route("/listo/{deP}", name="listo")
  */
 public function listoAction(DetallePedido $deP)
 {
     $em = $this->getDoctrine()->getManager();
     $pedido = $em->getRepository('AppBundle:Pedido')->findOneBy(array('id' => $deP->getDpedido()));
     $todoPreparado = false;
     $deP->setListo(true);
     // Asegurarse de que se tiene en cuenta el nuevo pedido
     $em->persist($deP);
     // Guardar los cambios
     $em->flush();
     // Recorremos todos los registros de detalle pedido, y si encontramos todos los registros listos cambiamos el estado del pedido
     for ($i = 0; $i <= count($deP) - 1; $i++) {
         if ($deP->getListo() == true) {
             $todoPreparado = true;
         } else {
             $todoPreparado = false;
         }
     }
     if ($todoPreparado) {
         dump("aqui");
         $pedido->setEstado('preparado');
         $em->persist($pedido);
         $em->flush();
     }
     $Dpedido = $em->getRepository('AppBundle:DetallePedido')->findBy(array('Dpedido' => $pedido->getId()));
     return $this->render(':mesa:detalle_pedido.html.twig', ['detalle' => $Dpedido, 'pedido' => $pedido]);
 }
Example #3
0
 /**
  * Remove Detallepedido
  *
  * @param \AppBundle\Entity\DetallePedido $detallepedido
  */
 public function removeDetallepedido(\AppBundle\Entity\DetallePedido $detallepedido)
 {
     $this->Detallepedido->removeElement($detallepedido);
 }