//======================================================================================================== //======================================================================================================== //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; } } }
//=============================================================================== //=============================================================================== //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); }