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(); } }
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(); } }