Exemplo n.º 1
0
 public FinalizaPercurso(string login, Models.Carro carro, Models.Relatorio relatorio)
 {
     this.carro = carro;
     user       = login;
     InitializeComponent();
     txtKmpercorridos.Text = "KM percorridos: " + Math.Round(relatorio.kmpercorridos, 3).ToString() + "KM";
     txtCusto.Text         = "R$" + relatorio.custo.ToString("F");
     txtModelo.Text        = carro.modelo;
     txtKmatual.Text       = "KM Atual: " + Math.Round(carro.kmatual, 3).ToString() + "KM";
     txtPlaca.Text         = "Placa: " + carro.placa;
     txtStatus.Text        = "Status:" + carro.status;
 }
Exemplo n.º 2
0
        private async void btnIniciarFinalizar(object sender, EventArgs e)
        {
            if (!iniciado)
            {
                try
                {
                    var locator = CrossGeolocator.Current;                                           //Variavel que vai atribuir Localização atual
                    locator.DesiredAccuracy = 50;                                                    //Precisão 50mt
                    var position = await locator.GetPositionAsync(timeout : new TimeSpan(0, 0, 10)); //Pega posição do celular

                    iniciado = true;
                    btnIniciarFinalizarPercurso.Text            = "Finalizar Percurso";
                    btnIniciarFinalizarPercurso.BackgroundColor = Color.Red;
                    carro.status = "Em movimento";
                    await dsCarro.UpdateCarroAsync(carro); //atualizando o status do carro

                    txtStatus.Text      = "Status:" + carro.status;
                    txtStatus.TextColor = Color.Red;
                    tempoInicio         = DateTime.UtcNow;
                    latitudeInicial     = position.Latitude;
                    longitudeInicial    = position.Longitude;
                    CalculaDistancia();
                    await CrossExternalMaps.Current.NavigateTo("", latitudeFinal, longitudeFinal); //acessa o mapa padrão
                }
                catch (Exception ex)
                {
                    await DisplayAlert("Erro", "Ative sua Localização para continuar.", "OK");
                }
            }
            else
            {
                try
                {
                    relatorio = new Models.Relatorio
                    {
                        carro       = carro.placa.Trim(),
                        endinicial  = txtEndinic.Text.Trim(),
                        endfinal    = txtEndfinal.Text.Trim(),
                        datainicial = tempoInicio.AddHours(-3),
                        datafinal   = DateTime.UtcNow.AddHours(-3)
                    };
                }
                catch (Exception ex)
                {
                    await DisplayAlert("Erro:", "Preencha todos os campos.", "OK");
                }
                try
                {
                    finalizado = true;
                    var locator = CrossGeolocator.Current;                                           //Variavel que vai atribuir Localização atual
                    locator.DesiredAccuracy = 50;                                                    //Precisão 50mt
                    var position = await locator.GetPositionAsync(timeout : new TimeSpan(0, 0, 10)); //Pega posição do celular

                    latitudeFinal  = position.Latitude;
                    longitudeFinal = position.Longitude;

                    Location locationInic        = new Location(latitudeInicial, longitudeInicial);
                    Location locationFinal       = new Location(latitudeFinal, longitudeFinal);
                    var      distanciaPercorrida = distancia + Location.CalculateDistance(locationInic, locationFinal, DistanceUnits.Kilometers);

                    carro.status   = "Parado";
                    carro.kmatual += float.Parse((distanciaPercorrida).ToString("N3"));        //3 casas decimais - Soma e iguala ao kmatual
                    await dsCarro.UpdateCarroAsync(carro);                                     //atualiza os valores do carro no banco

                    relatorio.kmpercorridos = float.Parse(distanciaPercorrida.ToString("N3")); //insere no relatório o valores

                    List <Models.Combustivel> combustiveis = await dsCombustivel.GetCombustivelAsync();

                    Models.Combustivel combustivel = combController.GetCombustivelByCadastro(combustiveis, user);

                    relController.AddRelatorio(relatorio, combustivel, carro, combustivelUtilizado); //instância para calcular o custo

                    await Navigation.PushAsync(new FinalizaPercurso(user, carro, relatorio));

                    Navigation.RemovePage(Navigation.NavigationStack[Navigation.NavigationStack.Count - 2]);
                }
                catch (Exception ex)
                {
                    await DisplayAlert("Erro:", "Ative sua Localização para continuar.", "OK");
                }
            }
        }