public void cargarDetalles() { using (var detControlador = new ControladorDetalle()) { this.detalles = new ObservableCollection <Detalle>(detControlador.FindByPedido(this.tempPedido.IdPedido)); listDetalles.ItemsSource = this.detalles; } }
private async void btnEliminar_Clicked(object sender, EventArgs e) { //Si se esta eliminando un pedido ya persistido if (btnEliminar.Text == "Eliminar") { //Se confirma la eliminacion del pedido var respuesta = await DisplayAlert("Confirmar eliminacion del pedido", "¿Está seguro que desea eliminar este pedido con sus respectivos detalles?", "Si", "Cancelar"); if (respuesta) { //Se eliminan todos los detalles de ese pedido using (var detControlador = new ControladorDetalle()) { var detallesAEliminar = detControlador.FindByPedido(this.tempPedido.IdPedido); foreach (Detalle det in detallesAEliminar) { detControlador.Delete(det); } } //Se elimina el pedido en si using (var pedControlador = new ControladorPedido()) { pedControlador.Delete(this.tempPedido); } await Navigation.PopModalAsync(); } } else { //Se confirma que se quiera cancelar la creacion del pedido if (this.tempPedido.Editable) { var respuesta = await DisplayAlert("Confirmar cancelacion del pedido", "¿Está seguro que desea cancelar la creacion de ste pedido?", "Si", "Cancelar"); if (respuesta) { await Navigation.PopModalAsync(); } } else { await Navigation.PopModalAsync(); } } }
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"); } }
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(); } }