예제 #1
0
        //========================================================================================================
        //========================================================================================================
        //METODO ACTIVADO AL PRESIONAR EL BOTON BUSCAR
        protected async void OnBuscar(Object sender, EventArgs e)
        {
            Lista = new List <Personas>();
            FrameListaBusqueda.IsVisible = false;
            ListViewPersonas.ItemsSource = Lista = null;
            int Cant = 0;

            //================================================================================
            //================================================================================

            //PRIMERO SE VERIFICA QUE LA ENTRADA "EntryDatos" NO SE ENCUENTRE VACIO

            if (string.IsNullOrEmpty(EntryDatos.Text))
            {
                //DE ESTARLO SE LE NOTIFICARA AL USUARIO
                ConexionDatos.MensajePantalla("Debe ingresar los datos a buscar");
            }
            else
            {
                //----------------------------------------------------------------------------
                ActivityIndicatorBusqueda.IsVisible = ActivityIndicatorBusqueda.IsRunning = true;
                await Task.Delay(1125);

                ActivityIndicatorBusqueda.IsVisible = ActivityIndicatorBusqueda.IsRunning = false;
                //----------------------------------------------------------------------------

                //LUEGO SE EVALUA CUAL ES LA OPCION DE BUSQUEDA SELECCIONADA
                switch (Seleccion)
                {
                //OPCION BUSQUEDA POR ID
                case 0:
                    //SE VERIFICA QUE NO EXISTAN ESPACIOS EN BLANCO
                    //AL MOMENTO DE TOMAR EL ID PROPORCIONADO POR
                    //EL USUARIO
                    if (!Metodos.EspacioBlanco(EntryDatos.Text))
                    {
                        //SE LLENA LA LISTA CON EL RESULTADO ARROJADO POR EL
                        //METODO "ListasPersonas", PERTENECIENTE A LA CLASE
                        //"Metodos"
                        Lista = ConexionDatos.ListaPersonas(Seleccion, EntryDatos.Text);

                        //SE EVALUA EL ESTADO DE LA LISTA (SI ESTA POPULADA O VACIA)
                        if (Lista == null)
                        {
                            //DE ESTAR VACIA SE LE NOTIFICARA AL USUARIO QUE
                            //NO SE ENCONTRO NINGUN USUARIO QUE RESPONDA A ESE ID (CEDULA)
                            ConexionDatos.MensajePantalla("No se obtuvo ningun resultado de busqueda");
                        }
                        else
                        {
                            //DE ENCONTRAR RESULTADOS (LISTA POPULADA) SE PROCEDE A
                            //LLENAR EL LISTVIEW "ListViewPersonas" CON EL RESULTADO
                            //OBTENIDO PREVIAMENTE
                            ListViewPersonas.ItemsSource = Lista;
                            //SE PROCEDE A CONTAR LA CANTIDAD DE PERSONAS QUE POSEE LA LISTA
                            //PARA LUEGO DIMENSIONAR EL TAMAÑO DEL LISTVIEW
                            Cant = Lista.Count;
                            ListViewPersonas.HeightRequest = (Cant * HeightRow);
                            //POR ULTIMO SE HABILITA LA VISIBILIDAD DEL "FrameListaBusqueda"
                            //QUE ALBERGA A "ListViewPersonas".
                            FrameListaBusqueda.IsVisible = true;
                        }
                    }
                    else
                    {
                        //SI EL ID INTEGRADO TIENE UN ESPACIO EN BLANCO
                        //SE LE NOTIFICA AL USUARIO MEDIANTE UN MENSAJE DE ALERTA
                        await DisplayAlert("Alerta", "El numero de ID (cedula) no puede contener espacios en blanco", "Entendido");
                    }
                    break;

                //OPCION BUSQUEDA POR NUMERO DE FICHA
                case 1:
                    //SE VERIFICA QUE NO EXISTAN MAS DE DOS ESPACIOS EN BLANCO
                    if (!Metodos.EspacioBlanco(EntryDatos.Text))
                    {
                        //SE LLENA LA LISTA CON EL RESULTADO ARROJADO POR EL METODO "ListaPersonas"
                        Lista = ConexionDatos.ListaPersonas(Seleccion, EntryDatos.Text);

                        if (Lista == null)
                        {
                            //LA LISTA SE ENCUENTRA VACIA: NO SE ENCONTRO NINGUN RESULTADO
                            ConexionDatos.MensajePantalla("No se obtuvo ningun resultado de busqueda");
                        }
                        else
                        {
                            //DE ENCONTRAR RESULTADOS (LISTA POPULADA) SE PROCEDE A LLENAR EL LISTVIEW "ListViewPersonas" CON EL RESULTADO
                            //OBTENIDO PREVIAMENTE
                            ListViewPersonas.ItemsSource = Lista;
                            //SE PROCEDE A CONTAR LA CANTIDAD DE PERSONAS QUE POSEE LA LISTA PARA LUEGO DIMENSIONAR EL TAMAÑO DEL LISTVIEW
                            Cant = Lista.Count;
                            ListViewPersonas.HeightRequest = (Cant * HeightRow);
                            //POR ULTIMO SE HABILITA LA VISIBILIDAD DEL "FrameListaBusqueda" QUE ALBERGA A "ListViewPersonas".
                            FrameListaBusqueda.IsVisible = true;
                        }
                    }
                    else
                    {
                        //SI EL NUMERO DE FICHA INGRESADO TIENE UN ESPACIO EN BLANCO SE LE NOTIFICA AL USUARIO MEDIANTE UN MENSAJE DE ALERTA
                        await DisplayAlert("Alerta", "El numero de ficha no puede contener espacios en blanco", "Entendido");
                    }
                    break;

                //OPCION BUSQUEDA POR NOMBRE(S)
                case 2:
                    //SE VERIFICA QUE NO EXISTAN MAS DE DOS ESPACIOS EN BLANCO
                    //(ESTO TOMANDO EN CUENTA QUE SOLO SE PUEDE REGISTRAR UN MAXIMO
                    //DE DOS NOMBRES POR REGISTRO)
                    if (Metodos.CuantosEspaciosBlanco(EntryDatos.Text) < 2)
                    {
                        Lista = ConexionDatos.ListaPersonas(Seleccion, EntryDatos.Text);

                        if (Lista == null)
                        {
                            ConexionDatos.MensajePantalla("No se obtuvo ningun resultado de busqueda");
                        }
                        else
                        {
                            ListViewPersonas.ItemsSource = Lista;
                            Cant = Lista.Count;
                            ListViewPersonas.HeightRequest = (Cant * HeightRow);
                            FrameListaBusqueda.IsVisible   = true;
                        }
                    }
                    else
                    {
                        //SI EL TEXTO INGRESADO TIENE MAS DE DOS ESPACIOS EN BLANCO
                        //SE PROCEDE A NOTIFICARLE AL USUARIO
                        await DisplayAlert("Alerta", "Verifique la cantidad de espacios en blanco ingresados", "Entendido");
                    }
                    break;

                //OPCION BUSQUEDA POR APELLIDO(S)
                case 3:
                    //BASICAMENTE CUMPLE LA MISMA RUTINA DE BUSQUEDA
                    //QUE LA OPCION DE BUSQUEDA POR NOMBRE(S)
                    if (Metodos.CuantosEspaciosBlanco(EntryDatos.Text) < 2)
                    {
                        Lista = ConexionDatos.ListaPersonas(Seleccion, EntryDatos.Text);

                        if (Lista == null)
                        {
                            ConexionDatos.MensajePantalla("No se obtuvo ningun resultado de busqueda");
                        }
                        else
                        {
                            ListViewPersonas.ItemsSource = Lista;
                            Cant = Lista.Count;
                            ListViewPersonas.HeightRequest = (Cant * HeightRow);
                            FrameListaBusqueda.IsVisible   = true;
                        }
                    }
                    else
                    {
                        await DisplayAlert("Alerta", "Verifique la cantidad de espacios en blanco ingresados", "Entendido");
                    }
                    break;

                //OPCION BUSQUEDA POR NOMBRE DE USUARIO
                case 4:
                    //BASICAMENTE CUMPLE LA MISMA RUTINA DE BUSQUEDA
                    //QUE LA OPCION DE BUSQUEDA POR ID
                    if (!Metodos.EspacioBlanco(EntryDatos.Text))
                    {
                        Lista = ConexionDatos.ListaPersonas(Seleccion, EntryDatos.Text);

                        if (Lista == null)
                        {
                            ConexionDatos.MensajePantalla("No se obtuvo ningun resultado de busqueda");
                        }
                        else
                        {
                            ListViewPersonas.ItemsSource = Lista;
                            Cant = Lista.Count;
                            ListViewPersonas.HeightRequest = (Cant * HeightRow);
                            FrameListaBusqueda.IsVisible   = true;
                        }
                    }
                    else
                    {
                        await DisplayAlert("Alerta", "El numero de ID (cedula) no puede contener espacios en blanco", "Entendido");
                    }
                    break;
                }
            }
        }
예제 #2
0
        //===============================================================================
        //===============================================================================
        //Convertir la iniciar de cada que conforme una cadena de caracteres
        //en mayuscula
        public static string Mayuscula(string word)
        {
            //Se hace un llamado a la funcion Mayuscula almacenada en la clase Metodos
            //Esta recibe una variable String, detecta donde hay espacios en blanco, y
            //transforma en mayuscula los caracteres asignados a representar la primera
            //letra del nombre la cual puede que esten en minuscula, mientras que al resto
            //de caracteres los transforma en minisculas.

            //SE CREAN E INICIALIZAN LAS VARIABLES LOCALES DEL METODO
            int    cuantosespaciosblanco = 0;
            int    cont      = 0;
            bool   flag      = false;
            string resultado = string.Empty;
            string primero   = string.Empty,
                   segundo   = string.Empty,
                   tercero   = string.Empty;

            char[] first = null,
            second = null;

            //SE RECORRE LA VARIABLE STRING QUE ES ENVIADA COMO PARAMETROS PARA IDENTIFICAR CUANTOS CARACTERS EN BLANCO EXISTEN
            //ESTO LO LOGRAMOS HACIENDO LLAMADO DEL METODO LOCAL "CuantosEspaciosBlanco"
            cuantosespaciosblanco = Metodos.CuantosEspaciosBlanco(word);

            //SE CREA E INICIALIZA EL VECTOR DE ENTEROS QUE CONTENDRAN LA POSICION EXACTA DE LOS ESPACIOS EN BLANCO DENTRO DE
            //LA VARIABLE DEL TIPO STRING QUE ES ENVIADA COMO PARAMETRO (word)
            int[] posicionespaciosblanco = new int[cuantosespaciosblanco];

            //SE RECORRE LA CADENA DE CARACTERES PARA UBICAR EN QUE POSICION DE LA CADENA DE CARACTERES SE ENCUENTRAN LOS ESPACIOS
            //EN BLANCO QUE FUERON ENCONTRADOS PREVIAMENTE
            for (int i = 0; i < word.Length; i++)
            {
                //SE EVALUA SI EN LA POSICION QUE NOS ENCONTRAMOS EXISTE COMO UN ESPACIO EN BLANCO
                if (word[i] == ' ')
                {
                    //SE DA SET (TRUE) A LA BANDERA => SE ENCONTRO AL MENOS UN ESPACIO EN BLANCO
                    flag = true;
                    //SE GUARDA LA POSICION EN LA CUAL SE ENCUENTRA ESE ESPACIO EN BLANCO
                    posicionespaciosblanco[cont] = i;
                    //SE PROSIGUE A MOVERSE A LA SIGUIENTE POSICION DEL VECTOR DE ENTEROS
                    cont++;

                    //SE EVALUA SI EL CONTADOR YA RECORRIO TODOS LOS ESPACIOS EN BLANCO PREVIAMENTE CONTADOS
                    if (cont == cuantosespaciosblanco)
                    {
                        //DE HABER RECORRIDO TODOS LOS ESPACIOS EN BLANCO SE PROCEDE A CERRAR EL CICLO FOR
                        break;
                    }
                }
            }

            //SI SE ENCONTRO AL MENOS UN ESPACIO EN BLANCO SE PROCEDE A
            if (flag)
            {
                //SE EVALUA SI EL TEXTO INGRESADO TIENE MAS DE UN ESPACIO EN BLANCO
                if (cuantosespaciosblanco >= 1)
                {
                    //SI TIENE MAS DE UN ESPACIO EN BLANCO (USUALMENTE USADO EN NOMBRES) SE PROCEDE A
                    //IDENTIFICAR CUALES SON LAS PALABRAS QUE FORMAN EL TEXTO COMPLETO
                    switch (cuantosespaciosblanco)
                    {
                    //------------------------------------------------------------------------------------------------------------------------------------------
                    //CASO UN SOLO ESPACIO EN BLANCO (USUALMENTE DOS NOMBRES)
                    case 1:
                        //SE CREAN E INICIALIZAN LAS VARIABLES QUE CONTENRAN LA PRIMERA
                        first = new char[(word.Length - (word.Length - posicionespaciosblanco[0]))];

                        //SE RECORRE EL TEXTO COMPLETO
                        for (int i = 0; i < posicionespaciosblanco[0]; i++)
                        {
                            first[i] = word[i];
                        }

                        //TRANSFORMAMOS EL VECTOR DE CARACTERES EN SU EQUIVALENTE STRING
                        primero = new string(first).ToLower();

                        //SE COLOCA LA PRIMERA LETRA DE LA PALABRA EN MAYUSCULA Y EL RESTO EN MINUSCULA
                        primero = char.ToUpper(primero[0]) + primero.Substring(1).ToLower();

                        //PARA LA SEGUNDA PALABRA QUE CONFORMA EL TEXTO SOLO ES NECESARIO TOMAR LA PALABRA RESTANTE Y COLOCAR LA PRIMERA LETRA EN MAYUSCULA
                        segundo = char.ToUpper(word[(posicionespaciosblanco[0] + 1)]) + word.Substring((posicionespaciosblanco[0] + 2)).ToLower();

                        //POR ULTIMO SE JUNTAN LAS DOS VARIABLES EN UNA SOLA CON SU ESPACIO EN BLANCO SEPARADOR
                        resultado = primero + ' ' + segundo;

                        break;

                    //------------------------------------------------------------------------------------------------------------------------------------------
                    //CASO DOS ESPACIOS EN BLANCO
                    case 2:
                        //SE DEBE IDENTIFICAR SI A CONTINUACION DEL SEGUNDO ESPACIO EN BLANCO EXISTE O NO UNA LETRA (O PALABRA)
                        //SE CREAN E INICIALIZAN LAS VARIABLES QUE CONTENRAN LA PRIMERA
                        first = new char[(word.Length - (word.Length - posicionespaciosblanco[0]))];

                        //SE RECORRE EL TEXTO COMPLETO
                        for (int i = 0; i < posicionespaciosblanco[0]; i++)
                        {
                            first[i] = word[i];
                        }

                        //SE VUELVE A RECORRER EL TEXTO COMPLETO
                        for (int i = posicionespaciosblanco[0]; i < posicionespaciosblanco[1]; i++)
                        {
                            second[i] = word[i];
                        }

                        //TRANSFORMAMOS EL VECTOR DE CARACTERES EN SU EQUIVALENTE STRING
                        primero = new string(first).ToLower();
                        segundo = new string(second).ToLower();

                        //SE COLOCA LA PRIMERA LETRA DE LA PALABRA EN MAYUSCULA Y EL RESTO EN MINUSCULA
                        primero = char.ToUpper(primero[0]) + primero.Substring(1).ToLower();
                        segundo = char.ToUpper(segundo[0]) + segundo.Substring(1).ToLower();

                        //PARA LA TERCERA PALABRA QUE CONFORMA EL TEXTO SOLO ES NECESARIO TOMAR LA PALABRA RESTANTE Y COLOCAR LA PRIMERA LETRA EN MAYUSCULA
                        tercero = char.ToUpper(word[(posicionespaciosblanco[1] + 1)]) + word.Substring((posicionespaciosblanco[1] + 2)).ToLower();

                        //POR ULTIMO SE JUNTAN LAS DOS VARIABLES EN UNA SOLA CON SU ESPACIO EN BLANCO SEPARADOR
                        resultado = primero + ' ' + segundo + ' ' + tercero;
                        break;
                        //------------------------------------------------------------------------------------------------------------------------------------------
                    }
                }
            }

            //SI NO SE ENCONTRO NINGUN ESPACIO EN BLANCO
            if (!flag)
            {
                //SE PROCEDE A TOMAR TODO EL TEXTO Y TRANSFORMAR EN MAYUSCULA SOLO LA PRIMERA LETRA
                resultado = char.ToUpper(word[0]) + word.Substring(1);
            }

            //SE RETORNA LA INFORMACION QUE CONTIENE LA VARIABLE "resultado"
            return(resultado);
        }