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; }
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"); } } }