Esempio n. 1
0
        public void Guardar(Clases.Pedido pedido)
        {
            if (ValidarCuentaParaGuardado(pedido) && ValidarCantidadDeCantidadAlimentos(pedido.CantidadAlimentos))
            {
                pedido.FechaDeCreacion = DateTime.Now;
                IvaDAO ivaDAO = new IvaDAO();
                pedido.Iva         = ivaDAO.CargarIvaActual().Valor;
                pedido.PrecioTotal = CalcularPrecioTotal(pedido);
            }
            else
            {
                throw new ArgumentException("Pedido no tiene contenido");
            }

            AccesoADatos.Pedido pedidoAGuardar = ConvertirPedidoLogicaADatos(pedido);
            pedido.DescontarIngredientes();
            using (ModeloDeDatosContainer context = new ModeloDeDatosContainer())
            {
                foreach (CantidadAlimento cantidadAlimento in pedido.CantidadAlimentos)
                {
                    if (cantidadAlimento is CantidadProducto cantidadProducto)
                    {
                        ProductoPedido productoPedido = new ProductoPedido();
                        productoPedido.Cantidad  = cantidadProducto.Cantidad;
                        productoPedido.Productos = context.Productos.Find(cantidadProducto.Alimento.Id);
                        pedidoAGuardar.ProductoPedido.Add(productoPedido);
                    }
                    else if (cantidadAlimento is CantidadPlatillo cantidadPlatillo)
                    {
                        PlatilloPedido platilloPedido = new PlatilloPedido();
                        platilloPedido.Cantidad = cantidadPlatillo.Cantidad;
                        platilloPedido.Platillo = context.Platillos.Find(cantidadPlatillo.Alimento.Id);
                        pedidoAGuardar.PlatilloPedidos.Add(platilloPedido);
                    }
                }

                pedidoAGuardar.Cuenta = context.Cuentas.Find(pedido.Cuenta.Id);
                context.Pedidos.Add(pedidoAGuardar);
                context.SaveChanges();
            }
        }