Example #1
0
 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
 }
Example #2
0
 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
 }
Example #3
0
        //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
        }
Example #4
0
        //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);
            }
        }
Example #5
0
 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();
 }
Example #6
0
        //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);
            }
        }
Example #7
0
        //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");
            }
        }
Example #8
0
        //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");
        }
Example #9
0
        //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>());
        }
Example #10
0
        //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";
                }
            }
        }
Example #11
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");
            }
        }
Example #12
0
 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ó
 }
Example #13
0
 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ó.
 }
Example #14
0
        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");
            }
        }
Example #15
0
        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
        }