예제 #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();
            }
        }
예제 #2
0
        public void CrearCuentaConPedidos(Clases.Cuenta cuenta)
        {
            var cuentaDb = new AccesoADatos.Cuenta()
            {
                Estado = (short)EstadoCuenta.Abierta
            };

            using (ModeloDeDatosContainer context = new ModeloDeDatosContainer())
            {
                cuentaDb.Empleado = context.Empleados.Find(cuenta.Empleado.Id);
                foreach (Clases.Cliente cliente in cuenta.Clientes)
                {
                    if (cliente.Id > 0)
                    {
                        cuentaDb.Clientes.Add(context.Clientes.Find(cliente.Id));
                    }
                    else
                    {
                        cuentaDb.Clientes.Add(new Cliente
                        {
                            Telefono          = cliente.Telefono,
                            Nombre            = cliente.Nombre,
                            FechaDeCreacion   = DateTime.Now,
                            FechaDeModicacion = DateTime.Now,
                            NombreCreador     = cliente.NombreDelCreador,
                            Comentarios       = cliente.Comentario,
                            Activo            = true
                        });
                    }
                }
                foreach (Clases.Pedido pedido in cuenta.Pedidos)
                {
                    PedidoDAO pedidoDAO = new PedidoDAO();
                    if (pedidoDAO.ValidarCuentaParaGuardado(pedido) && pedidoDAO.ValidarCantidadDeCantidadAlimentos(pedido.CantidadAlimentos))
                    {
                        pedido.FechaDeCreacion = DateTime.Now;
                        IvaDAO ivaDAO = new IvaDAO();
                        pedido.Iva = ivaDAO.CargarIvaActual().Valor;
                        pedido.CalcularPrecioTotal();
                        pedido.Estado = EstadoPedido.EnEspera;
                    }
                    else
                    {
                        throw new ArgumentException("Pedido no tiene contenido o no ");
                    }

                    AccesoADatos.Pedido pedidoAGuardar = pedidoDAO.ConvertirPedidoLogicaADatos(pedido);
                    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);
                    cuentaDb.Pedidos.Add(pedidoAGuardar);
                }
                if (cuenta.Mesa != null)
                {
                    cuentaDb.Mesa        = context.Mesas.Find(cuenta.Mesa.NumeroDeMesa);
                    cuentaDb.Mesa.Estado = (short)EstadoMesa.Ocupada;
                }
                cuentaDb.Empleado = context.Empleados.Find(cuenta.Empleado.Id);
                context.Cuentas.Add(cuentaDb);
                context.SaveChanges();
            }
        }