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"); }
//Cuando se presiona el boton guardar pedido private void btnGuardar_Clicked(object sender, EventArgs e) { bool puedoGuardar = validarCamposObligatorios(); if (puedoGuardar) { if (lblTitulo.Text == "Agregar Pedido") { //Se crea un pedido nuevo y se guardan los datos ingresados tempPedido.IdPedido = Convert.ToInt32(lblNumero.Text); tempPedido.Editable = true; tempPedido.IdCliente = clientes[pickerCliente.SelectedIndex].IdCliente; using (var cliControlador = new ControladorCliente()) { var clienteSeleccionado = cliControlador.FindById(tempPedido.IdCliente); tempPedido.Cliente = clienteSeleccionado.RazonSocial; } tempPedido.IdVendedor = this.IdVendedor; tempPedido.Estado = pickerEstado.Items[pickerEstado.SelectedIndex]; tempPedido.FechaPedido = dateFechaPedido.Date; tempPedido.FechaEntrega = dateFechaEntrega.Date; tempPedido.Subtotal = Convert.ToDouble(lblSubTotal.Text); tempPedido.GastosEnvio = Convert.ToDouble(txtGastosEnvio.Text); tempPedido.Total = Convert.ToDouble(lblTotal.Text); tempPedido.Pagado = switchPagado.IsToggled; //Se persiste el pedido a la base de datos using (var pedControlador = new ControladorPedido()) { pedControlador.Insert(tempPedido); } } else { tempPedido.IdCliente = clientes[pickerCliente.SelectedIndex].IdCliente; using (var cliControlador = new ControladorCliente()) { var clienteSeleccionado = cliControlador.FindById(tempPedido.IdCliente); tempPedido.Cliente = clienteSeleccionado.RazonSocial; } tempPedido.Estado = pickerEstado.Items[pickerEstado.SelectedIndex]; tempPedido.FechaPedido = dateFechaPedido.Date; tempPedido.FechaEntrega = dateFechaEntrega.Date; tempPedido.Subtotal = Convert.ToDouble(lblSubTotal.Text); tempPedido.GastosEnvio = Convert.ToDouble(txtGastosEnvio.Text); tempPedido.Total = Convert.ToDouble(lblTotal.Text); tempPedido.Pagado = switchPagado.IsToggled; //Se persiste el pedido a la base de datos using (var pedControlador = new ControladorPedido()) { pedControlador.Update(tempPedido); } } //Persistir detalles foreach (Detalle det in detalles) { if (det.IdDetalle == 0) { det.IdPedido = tempPedido.IdPedido; using (var detControlador = new ControladorDetalle()) { detControlador.Insert(det); } } else { using (var detControlador = new ControladorDetalle()) { detControlador.Update(det); } } } //Eliminar detalles eliminados foreach (Detalle det in detallesEliminados) { using (var detControlador = new ControladorDetalle()) { detControlador.Delete(det); } } Navigation.PopModalAsync(); } }