Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
            }
        }