private async System.Threading.Tasks.Task ChamadoEncontradoPainel(bool cancelaTempo = false) { Device.BeginInvokeOnMainThread(() => { this.ViewModel.ChamadoEncontrado = true; }); this.ViewModel.ChamadoEncontrado = true; this.ViewModel.OnPropertyChanged("ChamadoEncontrado"); this.ApplyBindings(); if (cancelaTempo) { UsuarioAutenticado.Instance.CancelaPorInatividade = new CancellationTokenSource(); Task.Delay(40000).ContinueWith(t => { if (UsuarioAutenticado.Instance.StatusAplicatico == BHJet_Enumeradores.StatusAplicativoEnum.ChamadoEncontrado) { Device.BeginInvokeOnMainThread(async() => { // Recusa Corrida // RecusarCorrida(null, new EventArgs()); LiberarCorrida(); // Aviso Sonoro TextSpeechUtil.ExecutarVoz($"Corrida rejeitada por inativídade."); }); } }, UsuarioAutenticado.Instance.CancelaPorInatividade.Token); } }
private async void DoWorkAsyncInfiniteLoop() { try { if (UsuarioAutenticado.Instance.CancelaPesquisa != null) { UsuarioAutenticado.Instance.CancelaPesquisa.Cancel(); } UsuarioAutenticado.Instance.CancelaPesquisa = new CancellationTokenSource(); await System.Threading.Tasks.Task.Run(() => { Device.StartTimer(TimeSpan.FromSeconds(10), () => { // Verifica se pesquisa esta ativa if (UsuarioAutenticado.Instance.StatusAplicatico == BHJet_Enumeradores.StatusAplicativoEnum.Pesquisando) { // Cancela if (UsuarioAutenticado.Instance.CancelaPesquisa.IsCancellationRequested) { return(false); } // Envia localizacao e disponibilidade UsuarioAutenticado.Instance.AlteraDisponibilidade(true, false); // Busca Corrida - Diaria var resultado = ViewModel.BuscaCorrida(); if (resultado.Key) { Device.BeginInvokeOnMainThread(async() => { // Redireciona para o tipo de chamado if (resultado.Value == BHJet_Enumeradores.TipoContrato.ChamadosAvulsos) { // Aviso Vibracao Xamarin.Essentials.Vibration.Vibrate(1000); // Aviso Sonoro TextSpeechUtil.ExecutarVoz($"Corrida encontrada. Endereço inícial, {ViewModel.chamadoItem.DestinoInicial}."); // Atualiza tela await ChamadoEncontradoPainel(true); Xamarin.Essentials.Vibration.Vibrate(1000); } }); // Redireciona para o tipo de chamado if (resultado.Value == BHJet_Enumeradores.TipoContrato.ContratoLocacao) { UsuarioAutenticado.Instance.StatusAplicatico = BHJet_Enumeradores.StatusAplicativoEnum.Diarista; UsuarioAutenticado.Instance.CancelaPesquisa.Cancel(); App.Current.MainPage = new DiariaDeBordo(); return(false); } else { // Encerra busca UsuarioAutenticado.Instance.StatusAplicatico = BHJet_Enumeradores.StatusAplicativoEnum.ChamadoEncontrado; UsuarioAutenticado.Instance.CancelaPesquisa.Cancel(); App.Current.MainPage = new Index(); return(false); } } return(true); } else { return(false); } }); }).ConfigureAwait(false); } catch (Exception e) { this.TrataExceptionMobile(e); } }