private async void UpdateLogin(Models.Cadastro novoCadastro, Models.Cadastro cadastro, List <Models.Cadastro> cadastros) { CadastroDataService ds = new CadastroDataService(); if (!novoCadastro.login.Equals(cadastro.login.Trim())) //Se o login foi alterado { novoCadastro.cpf = cadastro.cpf; cadastro.cpf = ""; await ds.UpdateCadastroAsync(cadastro); await ds.AddCadastroAsync(novoCadastro); //Adciona o cadastro com o login alterado CarroDataService carrods = new CarroDataService(); CombustivelDataService combds = new CombustivelDataService(); LembreteDataService lemds = new LembreteDataService(); List <Models.Carro> carros = await carrods.GetCarroAsync(); List <Models.Combustivel> combustiveis = await combds.GetCombustivelAsync(); List <Models.Lembrete> lembretes = await lemds.GetLembreteAsync(); for (int i = 0; i < carros.Count; i++) { if (carros[i].dono.Trim().Equals(cadastro.login.Trim())) //Para todo carro com o login alterado, muda para o novo login { Models.Carro carro = new Models.Carro { id = carros[i].id, placa = carros[i].placa.Trim(), dono = novoCadastro.login, modelo = carros[i].modelo.Trim(), tipocombustivel = carros[i].tipocombustivel.Trim(), kmatual = carros[i].kmatual, kmlitro = carros[i].kmlitro, status = carros[i].status.Trim() }; await carrods.UpdateCarroAsync(carro); } } for (int i = 0; i < combustiveis.Count; i++) { if (combustiveis[i].login.Trim().Equals(cadastro.login.Trim())) //Para cada combustivel com o login, muda para o login alterado { Models.Combustivel combustivel = combustiveis[i]; combustivel.login = novoCadastro.login; await combds.UpdateCombustivelAsync(combustivel); } } for (int i = 0; i < lembretes.Count; i++) { if (lembretes[i].login.Trim().Equals(cadastro.login.Trim())) //Para cada lembrete com o login, muda para o login alterado { Models.Lembrete lembrete = lembretes[i]; lembrete.login = novoCadastro.login; await lemds.UpdateLembreteAsync(lembrete); } } await ds.DeleteCadastroAsync(cadastro); } }
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"); } } }