Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo 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");
                }
            }
        }