public PagIngresoLectura(ClsLectura Obj, bool opc)//constructor { InitializeComponent(); this.opc = opc; //asignación de variable local this.Obj = Obj; //asignación de objeto local Obj.Fecha = DateTime.Today; //asignación de fecha actual BindingContext = this.Obj; //indica que la vista se relacionará con los valores del objeto }
public PagIngresoLectura(ClsLectura Obj, string opc) //constructor para consultar y modificar { InitializeComponent(); //inicializamos los componentes para poderlos utilizar this.opc = opc; //asignación de variable local, opc que es el resultado de la condición de para editar this.ObjLectura = Obj; //asignación la variable local, de objeto lectura que vamos a modificar BindingContext = this.ObjLectura; //indica que la vista se relacionará con los valores del objeto this.ObjLectura.Localizar(); //estamos istanciando al metodo localizar, que es para utilizarlo en una nueva versión }
//controlador del botón ingresar lectura evento clic private void ButIngresarLectura_Clicked(object sender, EventArgs e) { ClsLectura Obj = new ClsLectura(); //nueva instancia clase clslectura Obj.FechaIngreso = DateTime.Now; //asigna fecha actual Obj.FechaModificacion = DateTime.Now; ((NavigationPage)this.Parent).PushAsync(new PagIngresoLectura(Obj, true)); //mostrar vista ingresolectura }
//actualizar una lectura public async Task <string> UpdateAsync(ClsLectura ObjLectura) { try { ObjLectura.Estado = "2"; await App.Database.UpdateLecturaAsync(ObjLectura); return("ok"); } catch (Exception ex) { return(ex.Message); } }
public PagIngresoLectura(ClsMedidor Obj, bool nuevo)//constructor para ingresar nuevo { InitializeComponent(); this.nuevo = nuevo; //asignación de variable local this.ObjMedidor = Obj; //asignación de objeto local lblCodigo.Text = this.ObjMedidor.Codigo; lblNumero.Text = this.ObjMedidor.Numero; this.ObjLectura = new ClsLectura(); this.ObjLectura.Created_at = DateTime.Now; //asigna fecha actual this.ObjLectura.Updated_at = DateTime.Now; this.ObjLectura.Fecha = DateTime.Today; //asignación de fecha actual this.ObjLectura.Medidor_id = this.ObjMedidor.Id; BindingContext = this.ObjLectura; //indica que la vista se relacionará con los valores del objeto this.ObjLectura.Localizar(); }
//guardar una nueva lectura public async Task <string> SaveAsync(ClsLectura ObjLectura)//recibe un objeto de la clase clslectura { try { ObjLectura.Estado = "0"; //se guardo por defecto con el estado 0, porque no está sincronizado ObjLectura.Calcular(); //llamada a método calcular await App.Database.SaveLecturaAsync(ObjLectura); // return("ok"); } catch (Exception ex) { return(ex.Message); } }
//controlador del evento seleccion de una lectura del listado private async void listView_ItemSelected(object sender, SelectedItemChangedEventArgs e) { try { Object ObjFila = e.SelectedItem;//asignar el objeto seleccionado a la variable obj var json = JsonConvert.SerializeObject(ObjFila); ClsLectura ObjLectura = JsonConvert.DeserializeObject <ClsLectura>(json); var consulta = await Manager.Get(ObjLectura.Id); ObjLectura = consulta.First(); await((NavigationPage)this.Parent).PushAsync(new PagIngresoLectura(ObjLectura, "ver")); //mostrar la vista ingreso de lectura con los datos cargados } catch (Exception ex) { await DisplayAlert("Error", ex.Message, "ok"); } }
//método que invoca al script que actualiza un registro en la base de datos tabla lectura public async Task <string> UpdateAsync(ClsLectura Objeto) { Url = "http://" + Servidor + "/applecturas/logica/lectura/update.php?" + "anterior=" + Objeto.Anterior + "&actual=" + Objeto.Actual + "&consumo=" + Objeto.Consumo + "&basico=" + Objeto.Basico + "&exceso=" + Objeto.Exceso + "&observacion=" + Objeto.Observacion + "&idmedidor=" + Objeto.ObjMedidor.Id + "&fecha=" + Objeto.Fecha.ToShortDateString() + "&estado=" + Objeto.Estado + "&idlectura=" + Objeto.Id; HttpClient client = getCliente(); var resp = await client.GetAsync(Url); if (resp.IsSuccessStatusCode) { return(await resp.Content.ReadAsStringAsync()); } return("false"); }
//método que invoca al script que realiza la inserción de registros en la base de datos en la tabla lectura public async Task <IEnumerable <ClsLectura> > InsertAsync(ClsLectura Objeto) { Url = "http://" + Servidor + "/applecturas/logica/lectura/insert.php?" + "anterior=" + Objeto.Anterior + "&actual=" + Objeto.Actual + "&consumo=" + Objeto.Consumo + "&basico=" + Objeto.Basico + "&exceso=" + Objeto.Exceso + "&observacion=" + Objeto.Observacion + "&idmedidor=" + Objeto.ObjMedidor.Id + "&fecha=" + Objeto.Fecha.ToShortDateString(); HttpClient client = getCliente(); var resp = await client.GetAsync(Url); if (resp.IsSuccessStatusCode) { string content = await resp.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <IEnumerable <ClsLectura> >(content)); } return(Enumerable.Empty <ClsLectura>()); }
//controlador del selector de medidores private async void PkrNumeroMedidor_SelectedIndexChanged(object sender, EventArgs e) { ClsMedidor ObjMedidor = PkrNumeroMedidor.SelectedItem as ClsMedidor; //asignar nueva instancia de clase medidor según el objeto seleccionado ObjMedidor.ObjPersona = ObjPersona; //asignar objeto persona a objeto medidor Obj.ObjMedidor = ObjMedidor; //asignar variable local con objeto seleccionado CtrlLectura ObjCtrlLectura = new CtrlLectura(); //instancia de clase lectura var ConsLectura = await ObjCtrlLectura.ConsultarAnterior(ObjMedidor.Id); //consulta de lectura anterior if (ConsLectura != null) //si la lectura anterior no es nulo { if (ConsLectura.Count() != 0) { ClsLectura ObjLecturaAnterior = ConsLectura.First(); //asignar lectura anterior a objeto lectura anterior Obj.Anterior = ObjLecturaAnterior.Actual; //asignar campo anterior en objeto lectura según lectura del objeto lectura anterior TxtAnterior.Text = Obj.Anterior.ToString(); //mostrar lectura anterior en caja de texto } else { Obj.Anterior = 0;//en caso que no haya lectura anterior parte de 0 TxtAnterior.Text = "0"; } } }
//manejador del botón guardar private async void ButGuardar_Clicked(object sender, EventArgs e) { try { if (!string.IsNullOrWhiteSpace(LblNombres.Text) && PkrNumeroMedidor.SelectedItem != null && !string.IsNullOrWhiteSpace(txtConsumo.Text) //validación de no nulos ) { if (txtCedula.Text.Length == 10 && Obj.Actual > 0)//validación cedula con 10 caracteres { if (txtCedula.TextColor == Color.Green && txtLecturaActual.TextColor == Color.Green ) //Validacíon formato correcto { CtrlLectura manager = new CtrlLectura(); //instancia de clase control var res = ""; if (opc) { var ObjLecturaInsert = await manager.InsertAsync(Obj);//llamada a método que inserta un nuevo registro if (ObjLecturaInsert != null) { Obj = ObjLecturaInsert.First(); //asignación de objeto local con datos recién ingresados txtId.Text = Obj.Id.ToString(); //mostrar id del registro creado res = "ok"; //respuesta positiva } else { res = null;//respuesta negativa si no se realizó correctamente } } else { res = await manager.UpdateAsync(Obj);//llamada al método actualizar } if (res != null) { await DisplayAlert("Mensaje", "Datos Guardados Correctamente", "ok"); } else { await DisplayAlert("Mensaje", "No se guardó la información, vuelva a intentar más tarde", "ok"); } } else { await DisplayAlert("Mensaje", "Los campos de color rojo tienen formato incorrecto", "ok"); } } else { await DisplayAlert("Mensaje", "Faltan Datos Necesarios", "ok"); } } else { await DisplayAlert("Mensaje", "Faltan Datos", "ok"); } } catch (Exception e1) { await DisplayAlert("Mensaje", e1.Message, "ok"); } }
public Task <int> UpdateLecturaAsync(ClsLectura lectura)//método asíncrono para actualizar un registro ne la tabla ClsLectura de la base de datos local, //recibe como parámetro un objeto de la clase ClsLectura { return(_database.UpdateAsync(lectura));//invoca al método asíncrono UpdateAsync que actualiza el registro, respondiendo con 0 si fracazó }
public Task <int> SaveLecturaAsync(ClsLectura lectura) //método asíncrono que guarda un nuevo registro en la tabla ClsLectura, recibe como parametro un objeto de la clase ClsLectura { return(_database.InsertAsync(lectura)); //invocación al método Insert en la tabla ClsLectura enviando el objeto de la clase ClsLectura, devuelve cero si la operación fracasó. }
protected override async void OnAppearing()//se ejecuta cuando se muestra esta interfaz { base.OnAppearing(); this.ObjUsuario = App.Current.Properties["ObjUsuario"] as ClsUsuario;//recuperar objeto guardado en propieades de la aplicación ObjLectura.User_id = ObjUsuario.Id; try { manager = new CtrlLectura(); //instancia de clase control lectura if (nuevo) //cuando se está creando una lectura nueva { this.ObjCtrlPersona = new CtrlPersona(); //instancia la variable en objeto de la clase control persona (abonado) var ListPersona = await ObjCtrlPersona.ConsultarId(this.ObjMedidor.Persona_id); if (ListPersona.Count() > 0) { this.ObjPersona = ListPersona.First(); LblNombres.Text = this.ObjPersona.Nombre + " " + this.ObjPersona.Apellido; txtCedula.Text = this.ObjPersona.Cedula; } var LecturaAnterior = await manager.ConsultarAnterior(this.ObjMedidor.Id); if (LecturaAnterior.Count == 1) { ClsLectura ObjLecAnterior = LecturaAnterior.First(); TxtAnterior.Text = ObjLecAnterior.Actual.ToString(); ObjLectura.Anterior = ObjLecAnterior.Actual; } } else { if (opc == "ver") { //cuando se está consultando una lectura ButGuardar.IsVisible = false; } this.ObjCtrlPersona = new CtrlPersona(); CtrlMedidor ObjCtrlMedidor = new CtrlMedidor(); var ListMedidor = await ObjCtrlMedidor.Consultar(this.ObjLectura.Medidor_id); if (ListMedidor.Count() == 1) { this.ObjMedidor = ListMedidor.First(); var ListPersona = await ObjCtrlPersona.ConsultarId(this.ObjMedidor.Persona_id); if (ListPersona.Count() == 1) { this.ObjPersona = ListPersona.First(); LblNombres.Text = this.ObjPersona.Nombre + " " + this.ObjPersona.Apellido; txtCedula.Text = this.ObjPersona.Cedula; txtConsumo.Text = this.ObjLectura.Consumo.ToString(); TxtObservacion.Text = this.ObjLectura.Observacion; TxtAnterior.Text = ObjLectura.Anterior.ToString(); lblCodigo.Text = ObjMedidor.Codigo.ToString(); lblNumero.Text = ObjMedidor.Numero.ToString(); if (ObjLectura.Image != null) { Imagen.Source = ObjLectura.Image; } } } } recuperarpolitica(); } catch (Exception ex) { await DisplayAlert("Mensaje", ex.Message, "ok"); } }
public async Task <string> Sincronizar() //método para sincronizar con servidor remoto { var ListLecturas = await GetNoSincronizados(); //obtener lecturas con estado = 0 int sinc = 0, nsinc = 0; //variables para mostrar resultado sinc=sincronizados, nsinc=no sincronizados Url = Servidor + "srvlecturas.php"; //armar la url con la dirección del sevidor y el script srvlecturas.php HttpClient client = getCliente(); //crear un nuevo objeto tipo cliente http foreach (ClsLectura item in ListLecturas) //recorrer el listado de lecturas no sincronizadas { if (item.IdServer == 0) //si el id es igual a cero se crea una lectura { try { var formContent = new FormUrlEncodedContent(new[]//armar un formulario con los datos del objeto { new KeyValuePair <string, string>("Fecha", item.Fecha.Year + "/" + item.Fecha.Month + "/" + item.Fecha.Day), new KeyValuePair <string, string>("Anterior", item.Anterior.ToString()), new KeyValuePair <string, string>("Actual", item.Actual.ToString()), new KeyValuePair <string, string>("Consumo", item.Consumo.ToString()), new KeyValuePair <string, string>("Basico", item.Basico.ToString()), new KeyValuePair <string, string>("Exceso", item.Exceso.ToString()), new KeyValuePair <string, string>("Observacion", item.Observacion.ToString()), new KeyValuePair <string, string>("Imagen", item.StrImagen), new KeyValuePair <string, string>("Latitud", item.Latitud.ToString()), new KeyValuePair <string, string>("Longitud", item.Longitud.ToString()), new KeyValuePair <string, string>("Estado", item.Estado), new KeyValuePair <string, string>("Medidor_id", item.Medidor_id.ToString()), new KeyValuePair <string, string>("User_id", item.User_id.ToString()), new KeyValuePair <string, string>("Created_at", item.Created_at.Year + "/" + item.Created_at.Month + "/" + item.Created_at.Day), new KeyValuePair <string, string>("Updated_at", item.Updated_at.Year + "/" + item.Updated_at.Month + "/" + item.Updated_at.Day), }); var response = await client.PostAsync(Url + "?id=0", formContent); //enviar la petición http al servidor remoto y recoger el resultado en la variable response if (response.IsSuccessStatusCode) //si la respuesta viene con código correcto { var json = await response.Content.ReadAsStringAsync(); //se lee el contenido de la respuesta del servidor ClsLectura result = JsonConvert.DeserializeObject <ClsLectura>(json); //result objeto de la clase clslectura await App.Database.UpdateLecturaAsync(item.Id, result.IdServer, "1"); //actualizar el registro de la tabla clslectura sinc++; //incremento } else { nsinc++; } } catch { nsinc++; } } else { try { var formContent = new FormUrlEncodedContent(new[]//armar un formulario con los datos del objeto { new KeyValuePair <string, string>("Fecha", item.Fecha.Year + "/" + item.Fecha.Month + "/" + item.Fecha.Day), new KeyValuePair <string, string>("Anterior", item.Anterior.ToString()), new KeyValuePair <string, string>("Actual", item.Actual.ToString()), new KeyValuePair <string, string>("Consumo", item.Consumo.ToString()), new KeyValuePair <string, string>("Basico", item.Basico.ToString()), new KeyValuePair <string, string>("Exceso", item.Exceso.ToString()), new KeyValuePair <string, string>("Observacion", item.Observacion.ToString()), new KeyValuePair <string, string>("Imagen", item.StrImagen), new KeyValuePair <string, string>("Latitud", item.Latitud.ToString()), new KeyValuePair <string, string>("Longitud", item.Longitud.ToString()), new KeyValuePair <string, string>("Estado", item.Estado), new KeyValuePair <string, string>("Medidor_id", item.Medidor_id.ToString()), new KeyValuePair <string, string>("User_id", item.User_id.ToString()), new KeyValuePair <string, string>("Created_at", item.Created_at.Year + "/" + item.Created_at.Month + "/" + item.Created_at.Day), new KeyValuePair <string, string>("Updated_at", item.Updated_at.Year + "/" + item.Updated_at.Month + "/" + item.Updated_at.Day), new KeyValuePair <string, string>("idServer", item.IdServer.ToString()), }); var response = await client.PostAsync(Url + "?id=" + item.IdServer, formContent); //enviar la petición http al servidor remoto y recoger el resultado en la variable response if (response.IsSuccessStatusCode) //si la respuesta viene con código correcto { var json = await response.Content.ReadAsStringAsync(); //recibe la respuesta en formato json if (json == "ok") { await App.Database.UpdateLecturaAsync(item.Id, "1"); //actualizar el registro de la tabla clslectura sinc++; //incremento } else { nsinc++; } } else { nsinc++; } } catch (Exception x) { nsinc++; } } } return("Lecturas Sincronizadas: " + sinc + " Lecturas No sincronizadas: " + nsinc);//devuelve resultado lecturass sincronizadas y no sincronizadas }