// POST: api/Pedido //[ResponseType(typeof(Pedido))] public IHttpActionResult PostPedido(PedidoLight pedidolight) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var pedido = ConstruirPedido(pedidolight); db.Pedidoes.Add(pedido); db.SaveChanges(); var p = db.Pedidoes .Where(b => b.Numero == pedido.Numero) .FirstOrDefault(); var rpta = new { code = p.Numero, name = p.Total, email = p.Cliente.Correo, reference = p.DireccionEntregaReferencia }; return(Ok(rpta)); //return CreatedAtRoute("DefaultApi", new { id = pedido.ID }, pedido); }
private Cliente RegistrarCliente(PedidoLight pedidoLight) { Cliente cliente = new Cliente(); cliente.DocIdentidad = pedidoLight.clientCode; cliente.Correo = pedidoLight.email; cliente.Celular = pedidoLight.phoneNumber; cliente.RazonSocial = "Varios"; db.Clientes.Add(cliente); return(cliente); }
private Pedido ConstruirPedido(PedidoLight pedidoLight) { Pedido pedido = new Pedido(true); int numeroPedido = db.Pedidoes.Count(); if (numeroPedido == 0) { numeroPedido = 1000000; ///1 millón. Si hacen más de 1 millón, habrá problemas } else { numeroPedido = 1000000 + numeroPedido + 1; } pedido.Numero = string.Format("P{0}A", numeroPedido); pedido.DireccionEntrega = pedidoLight.address; pedido.DireccionEntregaReferencia = pedidoLight.reference; pedido.Cliente = RegistrarCliente(pedidoLight); foreach (DetallePedidoLight itemLight in pedidoLight.products) { DetallePedido item = new DetallePedido(); item.Cantidad = itemLight.quantity; var producto = db.Productoes .Where(b => b.Codigo == itemLight.code) .FirstOrDefault(); item.Producto = producto; item.PrecioUnitario = producto.PrecioUnitario; item.Total = Math.Round(item.Cantidad * item.Producto.PrecioUnitario, 2); pedido.Items.Add(item); } pedido.CantidadItems = pedido.Items.Count(); pedido.Total = pedidoLight.totalAmount; pedido.SubTotal = Math.Round(pedido.Total / 1.18M); pedido.Impuesto = pedido.Total - pedido.SubTotal; return(pedido); }