public async void entrada(String inString) { Preferences.Set("BUSY", false); var db = new SQLiteConnection(Preferences.Get("DB_PATH", "")); try { if (inString != "") { if (inString.Length == 11 || inString.StartsWith("ID")) { //Vamos a ver si es un ID de salida. if (inString.StartsWith("ID")) { // var querry = "SELECT * FROM Invitados WHERE INVIDATO_ID = " + inString.Replace("ID", "") + " AND FECHA_SALIDA is null AND Fecha_Verificacion is not null"; var querrys = "SELECT * FROM Invitados WHERE INVIDATO_ID= " + inString.Replace("ID", "") + " AND FECHA_SALIDA is null"; //var registroInv = db.Query<Invitados>(querry); var registroVer = db.Query <Invitados>(querrys); if (registroVer.Any()) { if (Preferences.Get("VERIFICA", false)) { if (registroVer.First().Fecha_Verificacion is null) { registroVer.First().Fecha_Verificacion = DateTime.Now; registroVer.First().Puerta_Registro = Convert.ToInt32(Preferences.Get("PUERTA", "1459").ToString()); registroVer.First().verificacionSubida = null; var Request = db.Query <COMPANIAS>($"select * from companias where compania_id = {registroVer.First().Compania_ID}"); await PopupNavigation.PushAsync(new VisitInfo(registroVer.First(), Request.First().NOMBRE)); db.UpdateAll(registroVer); DependencyService.Get <IToastMessage>().DisplayMessage("Se ha verificado correctamente."); //await Navigation.PushAsync(new Verificacion(registroVer.First())); } else { var time = (DateTime.Now - registroVer.First().Fecha_Verificacion.Value).TotalSeconds; var pref = Convert.ToDouble(Preferences.Get("TIEMPOS", "1")) * 60; if (time < pref) //REVISAR// { DependencyService.Get <IToastMessage>().DisplayMessage("Se ha acaba de verificar este id."); } else { if (registroVer.First().Fecha_Salida is null) { registroVer.First().Fecha_Salida = DateTime.Now; registroVer.First().salidaSubida = null; db.UpdateAll(registroVer); DependencyService.Get <IToastMessage>().DisplayMessage("Se ha dado salida correctamente."); } } } } else { registroVer.First().Fecha_Verificacion = DateTime.Now; registroVer.First().Puerta_Registro = Convert.ToInt32(Preferences.Get("PUERTA", "1459").ToString()); registroVer.First().verificacionSubida = null; registroVer.First().Fecha_Salida = DateTime.Now; registroVer.First().salidaSubida = null; //var Request = db.Query<COMPANIAS>($"select * from companias where compania_id = {registroVer.First().Compania_ID}"); //await Navigation.PushAsync(new VisitInfo(registroVer.First().Nombres, registroVer.First().Cargo, Request.First().NOMBRE, registroVer.First().Fecha_Registro.ToString(), registroVer.First().Fecha_Verificacion.ToString())); db.UpdateAll(registroVer); DependencyService.Get <IToastMessage>().DisplayMessage("Se ha dado salida correctamente."); } } else { if (!Preferences.Get("SYNC_VSU", false)) { var querrySal = "SELECT * FROM SalidaOffline WHERE INVIDATO_ID = " + inString.Replace("ID", ""); var registroSal = db.Query <SalidaOffline>(querrySal); if (!registroSal.Any()) { //Hacer el insert a la base de datos local para subirlo mas tarde var SalOF = new SalidaOffline(); SalOF.INVIDATO_ID = int.Parse(inString.Replace("ID", "")); SalOF.Fecha_Salida = DateTime.Now; SalOF.Subida = null; db.Insert(SalOF); } else { DependencyService.Get <IToastMessage>().DisplayMessage("Este ID de Salida ya se encuentra en la base de datos"); } } else { DependencyService.Get <IToastMessage>().DisplayMessage("Este ID de Salida no existe."); } } } else { //Vamos a verificar si la persona ya entro. var querry = "SELECT * FROM INVITADOS WHERE CARGO = '" + inString + "' AND FECHA_SALIDA is NULL"; var registroVerifInv = db.Query <Invitados>(querry); if (registroVerifInv.Any()) { querry = "SELECT * FROM PADRON WHERE CEDULA = '" + inString + "'"; var registro = db.Query <PADRON>(querry); entCedula.Text = registro.First().CEDULA; entNombres.Text = registro.First().NOMBRES; entApellidos.Text = registro.First().APELLIDO1 + " " + registro.First().APELLIDO2; //Esto quiere decir que aun la persona no ha salido. await Navigation.PushAsync(new SalidaPage(inString, entNombres.Text, entApellidos.Text)); } else { //Vamos a ver si la persona tiene una reserva. querry = "SELECT * FROM VW_RESERVA_VISITA WHERE VISITAS_DOCUMENTO = '" + inString + "' and visitas_Fecha_reserva=" + DateTime.Today.Ticks; var registroRes = db.Query <VW_RESERVA_VISITA>(querry); if (registroRes.Count > 0) { await Navigation.PushAsync(new ReservasPage(registroRes)); } else { // Como no tiene reserva entramos. //Buscamos la cedula en el padron. querry = "SELECT * FROM PADRON WHERE CEDULA = '" + inString + "'"; try { //Ejecutamos el query. var registro = db.Query <PADRON>(querry); entCedula.Text = registro.First().CEDULA; entNombres.Text = registro.First().NOMBRES; entApellidos.Text = registro.First().APELLIDO1 + " " + registro.First().APELLIDO2; await Navigation.PushAsync(new CompanyPage(entCedula.Text, entNombres.Text, entApellidos.Text)); } catch (Exception ey) { entApellidos.Text = string.Empty; entNombres.Text = string.Empty; entCedula.Text = inString; var properties = new Dictionary <string, string> { { "Category", "Documento NO EXISTE?" }, { "Code", "MainPage.xaml.cs Line: 179" }, { "Lector", Preferences.Get("LECTOR", "0") } }; Crashes.TrackError(ey, properties); await PopupNavigation.PushAsync(new PopUpCedulaNoexiste()); //Invocacion del PopUp para mostrar mesaje de error// await Navigation.PushAsync(new RegistroPage(entCedula.Text, true)); Debug.WriteLine("Entrada"); Analytics.TrackEvent("Error al buscar cedula en el padron" + ey.Message + "\n Escaner: " + Preferences.Get("LECTOR", "N/A")); try { var duration = TimeSpan.FromSeconds(1); Vibration.Vibrate(duration); } catch { //TODO: HANDLE NO VIBRATE } Debug.WriteLine(ey); } } } } } else { DependencyService.Get <IToastMessage>().DisplayMessage("Ha escaneado un codigo que no es la cedula"); } } } catch (Exception ea) { Debug.Write("Error en escaneo de cedula: " + ea.Message); //throw; } finally { Preferences.Set("BUSY", true); db.Close(); db.Dispose(); } }