private async Task exportarPedidos() { try { //Cargar todos los pedidos editables de este vendedor List <Pedido> pedidosExportar; using (var cPedidos = new ControladorPedido()) { pedidosExportar = cPedidos.FindForExport(this.IdVendedor); } //Por cada pedido encontrado foreach (Pedido pedExportar in pedidosExportar) { //Se guardan sus detalles List <Detalle> detExportar; using (var cDetalle = new ControladorDetalle()) { detExportar = cDetalle.FindByPedido(pedExportar.IdPedido); } //Se pasan a formato JSON var pedidoJson = JsonConvert.SerializeObject(pedExportar, Newtonsoft.Json.Formatting.Indented); var detallesJson = JsonConvert.SerializeObject(detExportar, Newtonsoft.Json.Formatting.Indented); //Se crea una lista de parejas var parejas = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("pedido", pedidoJson), new KeyValuePair <string, string>("detalles", detallesJson) }; //Se le da formato de formulario var contenido = new FormUrlEncodedContent(parejas); //Se envia el pedido y sus detalles correspondientes al servidor HttpClient clienteHttp = new HttpClient(); clienteHttp.BaseAddress = new Uri(this.Direccion); clienteHttp.Timeout = TimeSpan.FromSeconds(30); string url = string.Format("/Importar.aspx"); HttpResponseMessage respuesta = clienteHttp.PostAsync(url, contenido).Result; if (respuesta.IsSuccessStatusCode) { //Se cambia el atributo "editable" en todos los pedidos que fueron exportados pedExportar.Editable = false; using (var pControlador = new ControladorPedido()) { pControlador.Update(pedExportar); } } } exportarIndicator.IsVisible = false; imgExportar.IsVisible = true; if (pedidosExportar.Count > 0) { await DisplayAlert("Exportacion exitosa", "Los pedidos se exportaron exitosamente", "Aceptar"); App.Current.MainPage = new Pedidos(this.IdVendedor, this.Direccion); } else { await DisplayAlert("Exportacion fallida", "No hay ningun pedido para exportar", "Aceptar"); } } catch (Exception) { exportarIndicator.IsVisible = false; imgExportar.IsVisible = true; await DisplayAlert("Error de conexión", "No se pudo enviar la informacion al sitio web. Compruebe que su conexión a internet este funcionando correctamente.", "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(); } }