/** * @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]); } }
/** * @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]); }
/** * Remove Detallepedido * * @param \AppBundle\Entity\DetallePedido $detallepedido */ public function removeDetallepedido(\AppBundle\Entity\DetallePedido $detallepedido) { $this->Detallepedido->removeElement($detallepedido); }