예제 #1
0
        private async Task importarPedidos()
        {
            //Se eliminan todos los detalles
            using (var cDetalle = new ControladorDetalle())
            {
                cDetalle.DeleteAll();
            }

            //Se eliminan todos los pedidos
            using (var cPedido = new ControladorPedido())
            {
                cPedido.DeleteAll();
            }

            //Se importan todos los pedidos
            HttpClient clienteHttp = new HttpClient();

            clienteHttp.BaseAddress = new Uri(txtDireccionWeb.Text);
            string url       = string.Format("/Exportar.aspx?exportar=pedidos");
            var    respuesta = await clienteHttp.GetAsync(url);

            var           resultado = respuesta.Content.ReadAsStringAsync().Result;
            List <Pedido> pedidos   = JsonConvert.DeserializeObject <List <Pedido> >(resultado);

            //Se importan todos los detalles
            url       = string.Format("/Exportar.aspx?exportar=detalles");
            respuesta = await clienteHttp.GetAsync(url);

            resultado = respuesta.Content.ReadAsStringAsync().Result;
            List <Detalle> detalles = JsonConvert.DeserializeObject <List <Detalle> >(resultado);

            //Por cada pedido
            foreach (Pedido pedido in pedidos)
            {
                int idPedidoSeleccionado = pedido.IdPedido;

                using (var cCliente = new ControladorCliente())
                {
                    var clienteCorrespondiente = cCliente.FindById(pedido.IdCliente);
                    pedido.Cliente = clienteCorrespondiente.RazonSocial;
                }

                //Se persiste el pedido
                using (var cPedidos = new ControladorPedido())
                {
                    cPedidos.Insert(pedido);
                }

                //Se buscan los detalles que correspondan a ese pedido
                foreach (Detalle detalle in detalles)
                {
                    if (detalle.IdPedido == idPedidoSeleccionado)
                    {
                        //Se actualiza el IdPedidoVenta en cada detalle
                        detalle.IdPedido  = pedido.IdPedido;
                        detalle.Descuento = detalle.Descuento * 100;

                        using (var cArticulo = new ControladorArticulo())
                        {
                            var articuloCorrespondiente = cArticulo.FindById(detalle.IdArticulo);
                            detalle.Articulo       = articuloCorrespondiente.Denominacion;
                            detalle.PrecioUnitario = articuloCorrespondiente.PrecioVenta;
                        }

                        //Se persiste el detalle
                        using (var cDetalle = new ControladorDetalle())
                        {
                            cDetalle.Insert(detalle);
                        }
                    }
                }
            }

            importarIndicator.IsVisible = false;
            imgImportar.IsVisible       = true;
            await DisplayAlert("Descarga exitosa", "Los datos se descargaron exitosamente", "Aceptar");
        }