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