Esempio n. 1
0
        public void Resolver()
        {
            NosMarkupStr.Clear();

            int numeroMaximoIteracoes = NumeroMaximoIteracoes.HasValue ? NumeroMaximoIteracoes.Value : int.MaxValue;

            // Pegar valores iniciais
            PegarValoresFormulario(true);

            // Pegar valores finais
            PegarValoresFormulario(false);

            int repeticoes   = default(int);
            var validarCampo = new ValidaCampos();

            bool existeRepeticoesEstadoInicial = validarCampo.ExistemRepeticoes(Utils.ToArrayBidimensional((ushort[])EstadoInicial.Clone()), out repeticoes);

            if (existeRepeticoesEstadoInicial)
            {
                MostrarMensagemErro("Foram encontradas " + repeticoes + " posições repetidas no estado inicial, preencha corretamente para resolver o puzzle");
                return;
            }

            bool existeRepeticoesEstadoFinal = validarCampo.ExistemRepeticoes(Utils.ToArrayBidimensional((ushort[])EstadoFinal.Clone()), out repeticoes);

            if (existeRepeticoesEstadoFinal)
            {
                MostrarMensagemErro("Foram encontradas " + repeticoes + " posições repetidas no estado final, preencha corretamente para resolver o puzzle");
                return;
            }

            bool encontrouSolucao = false;

            // No ultimoNoConhecido = new _8Puzzle.Models.Solver(EstadoInicial, EstadoFinal, numeroIteracoes).Solve(out encontrouSolucao);
            int numeroiteracoes;

            ushort[] estadoEncontrado;

            encontrouSolucao = new PuzzleSolver().Resolver(numeroMaximoIteracoes, EstadoInicial, EstadoFinal, TamanhoPopulacao, ChanceCrossover, ChanceMutacao, out numeroiteracoes, out estadoEncontrado);

            if (encontrouSolucao)
            {
                EncontrouSolucao = encontrouSolucao;
                PrintarArray(estadoEncontrado, numeroiteracoes);
                EsconderMensagem();
            }
            else
            {
                EncontrouSolucao = false;
            }
        }
Esempio n. 2
0
        public async Task Verifica()
        {
            #region Variáveis / Controllers

            Cliente     cliente = new Cliente();
            LoginModel  login;
            Motorista   motorista = new Motorista();
            DataService data      = new DataService();

            LoginController     control             = new LoginController();
            ClienteController   controlCliente      = new ClienteController();
            MotoristaController motoristaController = new MotoristaController();

            string email = etEmail.Text;
            string senha = etSenha.Text;
            string cpf;
            int    idCliente = 0;

            #endregion

            #region Mensagens de retorno
            string ok            = "Campos OK";
            string notEmail      = "Digite o e-mail!";
            string notSenha      = "Digite a senha!";
            string vazios        = "Campos vazios!";
            string invalidos     = "Usuário e/ou senha incorretos";
            string emailInvalido = "E-mail inválido!";
            string acessando     = "Aguarde ...";
            #endregion



            if (email != null && senha != null)
            {
                if (!ValidaCampos.IsEmail(email))                  // VALIDANDO E-MAIL
                {
                    lblEntrando.IsVisible = false;
                    lblAlerta.IsVisible   = true;
                    lblAlerta.Text        = "";
                    lblAlerta.Text        = emailInvalido;
                }
                else
                {
                    #region Verifica login

                    // Lista completa
                    var lista = await loginController.GetList();

                    var lista_ = lista.Where(l => l.IdStatus == 4).ToList();   // Id: 4 - Ativo

                    var filtro = lista_.FirstOrDefault(l => l.Email == email); // Pesquisa e-mail

                    if (filtro == null)                                        // email inválido
                    {
                        await DisplayAlert("E-mail inválido", "Verifique o e-mail digitado.", "OK");
                    }
                    else if (filtro.Senha != senha)
                    {
                        await DisplayAlert("Senha inválido", "Verifique a senha digitada.", "OK");
                    }
                    else if (filtro.Senha == senha)
                    {
                        // Aguarde ...
                        lblEntrando.IsVisible = true;
                        lblEntrando.Text      = acessando;

                        // Envi ao objeto Login
                        login = await loginController.GetLogin_(filtro);

                        cpf = login.Ccpf;

                        cliente = await controlCliente.GetCpf(cpf);

                        if (cliente.IdTipoUsuario == 3)
                        {
                            motorista = await motoristaController.GetMotoristaCliente(cliente.IdCliente);

                            Session.Instance.motorista = motorista;
                        }

                        #region Captura dos dados do usuário

                        Session.Instance.IdCliente     = cliente.IdCliente;
                        Session.Instance.IdTipoUsuario = cliente.IdTipoUsuario;
                        Session.Instance.Email         = cliente.Cemail;
                        Session.Instance.Senha         = cliente.Csenha;
                        Session.Instance.Cnome         = cliente.Cnome;
                        Session.Instance.Crg           = cliente.Crg;
                        Session.Instance.Ccpf          = cliente.Ccpf;
                        Session.Instance.Csexo         = cliente.Csexo;
                        Session.Instance.CdataNascto   = cliente.CdataNascto;
                        Session.Instance.Ccelular      = cliente.Ccelular;
                        Session.Instance.Ccelular2     = cliente.Ccelular2;
                        Session.Instance.Cendereco     = cliente.Cendereco;
                        Session.Instance.Cnumero       = cliente.Cnumero;
                        Session.Instance.Ccomplemento  = cliente.Ccomplemento;
                        Session.Instance.Cbairro       = cliente.Cbairro;
                        Session.Instance.Ccidade       = cliente.Ccidade;
                        Session.Instance.Ccep          = cliente.Ccep;
                        Session.Instance.Cuf           = cliente.Cuf;
                        Session.Instance.IdStatus      = cliente.IdStatus;

                        Session.Instance.IdMotorista   = motorista.IdMotorista;
                        Session.Instance.MnumeroCnh    = motorista.MnumeroCnh;
                        Session.Instance.McategoriaCnh = motorista.McategoriaCnh;
                        Session.Instance.MvalidadeCnh  = motorista.MvalidadeCnh;

                        Session.Instance.cliente = cliente;

                        #endregion

                        await Navigation.PushModalAsync(new Views.LgHome());
                    }

                    #endregion
                }
            }
            if (email != null && senha == null)
            {
                await DisplayAlert("Senha", notSenha, "OK");
            }
            if (email == null && senha != null)
            {
                await DisplayAlert("Email", notEmail, "OK");
            }
            if (email == null && senha == null)
            {
                await DisplayAlert("Vazios", vazios, "OK");
            }
        }
Esempio n. 3
0
        private async Task VerificaCamposAsync(int i)
        {
            #region Mensagens de retorno
            string nulo       = "Preencha o campo: ";
            string finalizado = "Cadastro finalizado com sucesso!";
            string dadosInsuf = "Dados insuficientes no campo: ";
            string caracter   = "Retire os caracteres especiais de: ";
            #endregion

            #region Dados bancários

            //int      idContaBancaria = 0;
            int      idBanco      = 1;
            int      agencia      = Convert.ToInt32(etMotoristaAgencia.Text);
            int      digAgencia   = Convert.ToInt32(etMotoristaDigitoAgencia.Text);
            int      conta        = Convert.ToInt32(etMotoristaConta.Text);
            int      digConta     = Convert.ToInt32(etMotoristaDigitoConta.Text);
            int      idTipoConta  = 1;
            int      idStatus     = 4;
            DateTime dataCadastro = DateTime.Now;
            DateTime ultimaAtualizacao;
            string   bancoDesc    = etMotoristaBanco.Text;
            string   tipoContaBan = etMotoristaTipoConta.Text;

            #endregion

            #region Valida() - Dados bancários

            if (string.IsNullOrEmpty(bancoDesc))                       // BANCO - DESCRIÇÃO
            {
                await DisplayAlert("Campo vazio", nulo + bancoDesc.ToString(), "OK");
            }
            else if (bancoDesc.Length < 2)
            {
                await DisplayAlert("Dados insuficientes", dadosInsuf + lblMotoristaBanco.Text, "OK");
            }

            else if (agencia < 0)                                              // AGENCIA
            {
                await DisplayAlert("Campo vazio", nulo + lblMotoristaAgencia.Text, "OK");
            }
            else if (ValidaCampos.CaracterEspecial(agencia.ToString()))
            {
                await DisplayAlert("Caracteres inválidos", caracter + lblMotoristaAgencia.Text, "OK");
            }
            else if (conta < 0)                                             // DADOS CONTA
            {
                await DisplayAlert("Campo vazio", nulo + lblMotoristaConta.Text, "OK");
            }
            else if (ValidaCampos.CaracterEspecial(conta.ToString()))
            {
                await DisplayAlert("Caracteres inválidos", caracter + lblMotoristaConta.Text, "OK");
            }

            else if (digConta < 0)                                          // DIGITO CONTA
            {
                await DisplayAlert("Campo vazio", nulo + lblMotoristaDigitoConta.Text, "OK");
            }
            else if (ValidaCampos.CaracterEspecial(digConta.ToString()))
            {
                await DisplayAlert("Caracteres inválidos", caracter + lblMotoristaDigitoConta.Text, "OK");
            }

            else if (string.IsNullOrEmpty(tipoContaBan))                    // TIPO CONTA BANCÁRIA
            {
                await DisplayAlert("Campo vazio", nulo + lblMotoristaTipoConta.Text, "OK");
            }

            #endregion

            else
            {
                // Conta bancária ---------------------------------------------------------

                #region ContaBancaria()
                ContaBancaria contaBan = new ContaBancaria()
                {
                    IdCliente          = id,
                    IdBanco            = idBanco,
                    MAgencia           = agencia,
                    MDigAgencia        = digAgencia,
                    MConta             = conta,
                    MDigConta          = digConta,
                    IdTipoConta        = idTipoConta,
                    MDataCadastro      = DateTime.Now,
                    IdStatus           = idStatus,
                    Ccpf               = cpf,
                    MUltimaAtualizacao = null,
                    BancoDesc          = bancoDesc,
                    TipoContaBanDesc   = tipoContaBan
                };
                #endregion

                if (i == 1)              // INSERT ----------------------------------------
                {
                    await contaControl.PostContaAsync(contaBan);

                    await DisplayAlert("Sucesso!", "Cadastro finalizado com sucesso!", "OK");

                    await Navigation.PushModalAsync(new Views.LgDadosBancarios());
                }
                else                   // UPDATE ----------------------------------------
                {
                    contaBan.IdContaBancaria    = idContaBancaria;
                    contaBan.MUltimaAtualizacao = DateTime.Now;

                    await contaControl.UpdateConta(contaBan);

                    await DisplayAlert("Sucesso!", "Cadastro atualizado com sucesso!", "OK");

                    await Navigation.PushModalAsync(new Views.LgDadosBancarios());
                }

                //-------------------------------------------------------------------------

                // Esconde os botões
                btnVoltar.IsVisible  = false;
                btnSalvar.IsVisible  = false;
                btnSalvar2.IsVisible = false;

                // Esconde os campos
                slAdicionar.IsVisible = false;

                // Mostra a lista de contas cadastradas e o botão 'Adicionar conta bancária'
                btnAdicionarConta.IsVisible = true;
                slMinhasContas.IsVisible    = true;
            }
        }
        private async Task VerificaCamposAsync(int operacao)
        {
            Veiculo veiculo;

            #region Mensagens de retorno
            string nulo        = "Preencha o campo: ";
            string finalizado  = "Cadastro finalizado com sucesso!";
            string campoObrig  = "Campo obrigatório";
            string dadosInsuf  = "Dados insuficientes no campo: ";
            string dadosIns    = "Dados insuficientes";
            string caracterEsp = "Caracteres especiais";
            #endregion

            #region Parâmetros
            Placa                 = etPlaca.Text;
            Modelo                = etModelo.Text;
            Marca                 = etMarca.Text;
            Renavam               = etRenavam.Text;
            Chassi                = etChassi.Text;
            AnoFabricacao         = Convert.ToInt32(etAnoFabr.Text);
            IdTipoVeiculo         = 2;
            CarroceriaAltura      = etAltura.Text;
            CarroceriaLargura     = etLargura.Text;
            CarroceriaComprimento = etChassi.Text;
            Refrigeracao          = etRefrigerado.Text;
            CapacidadeCarga       = etCapacidade.Text;
            IdStatus              = 4;
            TipoVeiculoDesc       = etTipoVeiculo.Text;
            TipoCarroceriaDesc    = etTipoCarroceria.Text;
            IdTipoCarroceria      = 0;
            #endregion

            try
            {
                if (btnChassi.IsEnabled && etPlaca.IsVisible)
                {
                    #region Validação dos campos

                    if (Placa == null)                                                  // PLACA
                    {
                        await DisplayAlert(campoObrig, nulo + lblPlaca.Text, "OK");
                    }
                    else if (Placa.Length < 7)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblPlaca.Text, "OK");
                    }

                    else if (AnoFabricacao.ToString() == null)                          // ANO FABRICAÇÃO
                    {
                        await DisplayAlert(campoObrig, nulo + lblAnoFabr.Text, "OK");
                    }
                    else if (AnoFabricacao < 4)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblAnoFabr.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(AnoFabricacao.ToString()))
                    {
                        await DisplayAlert(caracterEsp, "O campo '" + lblAnoFabr.Text + "' aceita apenas números", "OK");
                    }

                    else if (string.IsNullOrEmpty(Modelo))                              // MODELO
                    {
                        await DisplayAlert(campoObrig, nulo + lblModelo.Text, "OK");
                    }
                    else if (Modelo.Length < 4)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblModelo.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(Marca))                               // MARCA
                    {
                        await DisplayAlert(campoObrig, nulo + lblMarca.Text, "OK");
                    }
                    else if (Marca.Length < 3)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblMarca.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(TipoVeiculoDesc))                     // TIPO VEICULO
                    {
                        await DisplayAlert(campoObrig, nulo + lblTipoVeiculo.Text, "OK");
                    }
                    else if (TipoVeiculoDesc.Length < 3)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblTipoVeiculo, "OK");
                    }

                    /*
                     * else if (ValidaCampos.CaracterEspecial(TipoVeiculoDesc))
                     * {
                     *  await DisplayAlert(caracterEsp, "O campo '" + lblTipoVeiculo.Text + "' aceita apenas letras e números", "OK");
                     * } */

                    else if (Chassi == null)                                            // CHASSI
                    {
                        await DisplayAlert(campoObrig, nulo + lblChassi.Text, "OK");
                    }
                    else if (Chassi.Length < 17)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblChassi.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(Chassi))
                    {
                        await DisplayAlert(caracterEsp, "O campo '" + lblChassi.Text + "' aceita apenas letras e números", "OK");
                    }

                    else if (Renavam == null)                                           // RENAVAM
                    {
                        await DisplayAlert("Campo obrigatório", nulo + lblRenavam.Text, "OK");
                    }
                    else if (Renavam.Length < 11)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblRenavam.Text, "OK");
                    }

                    else
                    {
                        ChassiNotVisible();
                        btnDimensoes.IsEnabled = true;
                        btnAvancar.IsVisible   = false;

                        if (operacao == 1)
                        {
                            btnFinalizar.IsVisible = true;
                        }
                        else
                        {
                            btnSalvar.IsVisible = true;
                        }

                        btnVoltar.IsVisible = true;

                        DimensoesVisible();
                    }
                    #endregion
                }
                else if (btnDimensoes.IsEnabled && lblCapacidade.IsVisible)
                {
                    #region Validação dos campos - 2
                    if (CapacidadeCarga == null)                                    // CAPACIDADE DE CARGA
                    {
                        await DisplayAlert(campoObrig, nulo + lblCapacidade.Text, "OK");
                    }

                    else if (CapacidadeCarga.Length < 3)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblCapacidade.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(TipoCarroceriaDesc))              // TIPO CARROCERIA
                    {
                        await DisplayAlert(campoObrig, nulo + lblTipoCarroceria.Text, "OK");
                    }

                    else if (TipoCarroceriaDesc.Length < 5)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblTipoCarroceria.Text, "OK");
                    }

                    /*
                     * else if (ValidaCampos.CaracterEspecial(TipoCarroceriaDesc))
                     * {
                     *  await DisplayAlert(caracterEsp, "O campo '" + lblTipoCarroceria.Text + "' aceita apenas letras e números", "OK");
                     * } */

                    else if (string.IsNullOrEmpty(CarroceriaAltura))                // CARROCERIA ALTURA
                    {
                        await DisplayAlert("Campo obrigatório", nulo + lblAltura.Text, "OK");
                    }

                    /*
                     * else if (CarroceriaAltura.Length < 3)
                     * {
                     *  await DisplayAlert(dadosIns, dadosInsuf + lblAltura.Text, "OK");
                     * } */

                    else if (string.IsNullOrEmpty(CarroceriaLargura))               // CARROCERIA LARGURA
                    {
                        await DisplayAlert("Campo obrigatório", nulo + lblLargura.Text, "OK");
                    }

                    /*
                     * else if (CarroceriaLargura.Length < 3)
                     * {
                     *  await DisplayAlert(dadosIns, dadosInsuf + lblLargura.Text, "OK");
                     * }
                     */

                    else if (string.IsNullOrEmpty(CarroceriaComprimento))               // CARROCERIA COMPRIMENTO
                    {
                        await DisplayAlert(campoObrig, nulo + lblComprimento.Text, "OK");
                    }

                    /*
                     * else if (CarroceriaComprimento.Length < 3)
                     * {
                     *  await DisplayAlert(dadosIns, dadosInsuf + lblComprimento.Text, "OK");
                     * }
                     */

                    else if (string.IsNullOrEmpty(Refrigeracao))                        // REFRIGERAÇÃO
                    {
                        await DisplayAlert(campoObrig, nulo + lblRefrigerado.Text, "OK");
                    }
                    else if (Refrigeracao.Length < 3)
                    {
                        await DisplayAlert(dadosIns, dadosInsuf + lblRefrigerado.Text, "OK");
                    }

                    #endregion

                    else
                    {
                        DimensoesNotVisible();

                        // status
                        var status = await statusController.GetStatus(IdStatus);

                        #region Veiculo()

                        veiculo = new Veiculo()
                        {
                            IdMotorista           = idMotorista,
                            Placa                 = Placa,
                            Modelo                = Modelo,
                            Marca                 = Marca,
                            Renavam               = Renavam,
                            Chassi                = Chassi,
                            AnoFabricacao         = AnoFabricacao,
                            IdTipoVeiculo         = IdTipoVeiculo,
                            CarroceriaAltura      = CarroceriaAltura,
                            CarroceriaLargura     = CarroceriaLargura,
                            CarroceriaComprimento = CapacidadeCarga,
                            Refrigeracao          = Refrigeracao,
                            CapacidadeCarga       = CapacidadeCarga,
                            IdStatus              = IdStatus,
                            TipoVeiculoDesc       = TipoVeiculoDesc,
                            TipoCarroceriaDesc    = TipoCarroceriaDesc,
                            IdTipoCarroceria      = IdTipoCarroceria,
                            DescStatus            = status.DescricaoStatus
                        };
                        #endregion

                        if (operacao == 1)     // INSERT ------------------------
                        {
                            await veiculoController.PostVeiculoAsync(veiculo);

                            // DisplayAlert("Finalizado", finalizado, "OK");

                            lblFinalizado.IsVisible = true;
                            lblFinalizado.Text      = finalizado;
                        }
                        else if (operacao == 2) // UPDATE -----------------------
                        {
                            await veiculoController.UpdateVeiculo(veiculo, idVeic);
                        }

                        // Views
                        slMeusVeiculos.IsVisible = true;
                        slAdicionar.IsVisible    = false;

                        // Botões
                        btnAdicionarVeiculos.IsVisible = true;

                        btnSalvar.IsVisible = false;
                        btnVoltar.IsVisible = false;

                        await DisplayAlert("Sucesso!", "Cadastro finalizado com sucesso!", "OK");

                        // Chama a lista novamente para trazer os novos dados
                        await Navigation.PushModalAsync(new Views.LgVeiculos());

                        //ListaAsync();
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex.Source != null)
                {
                    Console.WriteLine("Exception source: {0}", ex.Source);
                }
                throw;
            }
        }
Esempio n. 5
0
        private async Task VerificaCamposAsync(int id)
        {
            #region Mensagens de retorno
            string vazio       = "Campo vazio";
            string nulo        = "Preencha o campo: ";
            string finalizado  = "Cadastro finalizado com sucesso!";
            string emails      = "Os e-mails não coincidem!";
            string senhas      = "As senhas não coincidem!";
            string dadosInsuf  = "Dados insuficientes no campo: ";
            string caracter    = "': este campos não aceita caracteres especiais.";
            string caracterInv = "Caracteres inválidos";
            string senhaCurta  = "A senha deve ter mais de 6 caracteres!";
            string atualizado  = "Cadastro atualizado com sucesso!";
            #endregion

            Cliente cliente;

            #region Variáveis

            #region Others

            /* String categoria    = etClienteCategoriaCnh.Items[etClienteCategoriaCnh.SelectedIndex];
             * String uf           = etClienteUf.Items[etClienteUf.SelectedIndex];
             * String conta        = etClienteTipoConta.Items[etClienteTipoConta.SelectedIndex];*/
            #endregion

            #region Dados Pessoais
            string nome          = etClienteNome.Text;
            string rg            = etClienteRg.Text;
            string cpf           = etClienteCpf.Text;
            string sexo          = etClienteSexo.Items[etClienteSexo.SelectedIndex];
            string dataNascto    = etClienteDataNascto.Text;
            string celular       = etClienteCelular.Text;
            string celular2      = etClienteCelular02.Text;
            int    IdTipoUsuario = 2;
            int    IdStatus      = 4;
            int    idCliente     = 1;
            #endregion

            #region Endereço
            string endereco    = etClienteEndereco.Text;
            string numero      = etClienteNumero.Text;
            string complemento = etClienteComplemento.Text;
            string bairro      = etClienteBairro.Text;
            string cidade      = etClienteCidade.Text;
            string cep         = etClienteCep.Text;
            string uf          = etClienteUf.Text;
            #endregion

            #region Dados bancários
            string   numeroCartao = etClienteNumeroCartao.Text;
            int      idBandeira   = 1;
            string   bandeira     = etClienteBandeira.Text;
            string   dataValidade = etClienteValidadeCartao.Text;
            string   nomeImpresso = etClienteNomeImpresso.Text;
            int      codSeguranca = Convert.ToInt32(etClienteCodSeguranca.Text);
            DateTime dataCadastro = DateTime.Now;
            #endregion

            #region Email e senha
            string email     = etClienteEmail.Text;
            string confemail = etClienteConfEmail.Text;
            string senha     = etClienteSenha.Text;
            string confsenha = etClienteConfSenha.Text;
            #endregion

            #endregion

            try
            {
                #region Valida - Dados Pessoais
                if (etClienteNome.IsVisible)
                {
                    #region Campos
                    if (string.IsNullOrEmpty(nome))                         // NOME
                    {
                        await DisplayAlert(vazio, nulo + lblClienteNome.Text, "OK");
                    }
                    else if (nome.Length < 6)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteNome.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(rg))                      // RG
                    {
                        await DisplayAlert(vazio, nulo + lblClienteRg.Text, "OK");
                    }
                    else if (rg.Length < 9)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteRg.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(rg))
                    {
                        await DisplayAlert(caracterInv, "'" + lblClienteRg.Text + caracter, "OK");
                    }

                    else if (string.IsNullOrEmpty(cpf))                     // CPF
                    {
                        await DisplayAlert(vazio, nulo + lblClienteCpf.Text, "OK");
                    }
                    else if (cpf.Length < 11)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteCpf.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(cpf))
                    {
                        await DisplayAlert(caracterInv, "'" + lblClienteCpf.Text + caracter, "OK");
                    }

                    else if (string.IsNullOrEmpty(sexo))                    // SEXO
                    {
                        await DisplayAlert(vazio, nulo + lblClienteSexo.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(dataNascto))              // DATA DE NASCIMENTO
                    {
                        await DisplayAlert(vazio, nulo + lblClienteDataNascto.Text, "OK");
                    }
                    else if (dataNascto.Length < 8)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteDataNascto.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(celular))                 // CELULAR
                    {
                        await DisplayAlert(vazio, nulo + lblClienteCelular.Text, "OK");
                    }
                    else if (celular.Length < 9)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteCelular.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(celular))
                    {
                        await DisplayAlert(caracterInv, "'" + lblClienteCelular.Text + caracter, "OK");
                    }

                    else if (string.IsNullOrEmpty(celular2))                // CELULAR 02
                    {
                        await DisplayAlert(vazio, nulo + lblClienteCelular02.Text, "OK");
                    }
                    else if (celular2.Length < 9)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteCelular02.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(celular2))
                    {
                        await DisplayAlert(caracterInv, "'" + lblClienteCelular02.Text + caracter, "OK");
                    }
                    #endregion

                    #region Verifica o CPF

                    /* var verificar = await control.GetCpf(cpf);
                     *
                     * string verificaCpf = verificar.Ccpf.ToString();
                     *
                     * if (verificaCpf != null)
                     * {
                     *  lblAlerta.IsVisible = true;
                     *  lblAlerta.Text = "";
                     *  lblAlerta.Text = "CPF já cadastrado!";
                     * }
                     * else
                     * { */

                    #endregion

                    DadosPessoaisNotVisible();

                    if (verificaOperacao == 1)
                    {
                        btnEndereco.IsEnabled = true;
                    }

                    btnAvancar.IsVisible = false;

                    btnAvancar2.IsVisible = true;

                    if (verificaOperacao == 1)       // INSERT
                    {
                        btnVoltar.IsVisible = true;
                    }
                    else                            // UPDATE
                    {
                        stBtnVoltar.IsVisible = true;
                    }

                    lblAlerta.IsVisible = false;

                    EnderecoVisible();
                }
                #endregion

                #region Valida - Endereço
                else if (etClienteEndereco.IsVisible)
                {
                    #region Campos
                    if (string.IsNullOrEmpty(endereco))                         // ENDEREÇO
                    {
                        await DisplayAlert(vazio, nulo + lblClienteEndereco.Text, "OK");
                    }
                    else if (endereco.Length < 5)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteEndereco.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(numero))                      // NUMERO
                    {
                        await DisplayAlert(vazio, nulo + lblClienteNumero.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(numero))
                    {
                        await DisplayAlert(caracterInv, "'" + lblClienteNumero.Text + caracter, "OK");
                    }

                    else if (string.IsNullOrEmpty(complemento))                 // COMPLEMENTO
                    {
                        await DisplayAlert(vazio, nulo + lblClienteCompl.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(bairro))                      // BAIRRO
                    {
                        await DisplayAlert(vazio, nulo + lblClienteBairro.Text, "OK");
                    }
                    else if (bairro.Length < 5)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteBairro.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(cidade))                      // CIDADE
                    {
                        await DisplayAlert(vazio, nulo + lblClienteCidade.Text, "OK");
                    }
                    else if (cidade.Length < 6)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteCidade.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(cep))                         // CEP
                    {
                        await DisplayAlert(vazio, nulo + lblClienteCep.Text, "OK");
                    }
                    else if (cep.Length < 8)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteCep.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(cep))
                    {
                        await DisplayAlert(caracterInv, "'" + lblClienteCep.Text + caracter, "OK");
                    }

                    else if (string.IsNullOrEmpty(uf))                          // UF
                    {
                        await DisplayAlert(vazio, nulo + lblClienteUf.Text, "OK");
                    }
                    else if (uf.Length < 2)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteUf.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(uf))
                    {
                        await DisplayAlert(caracterInv, "'" + lblClienteUf.Text + caracter, "OK");
                    }
                    #endregion

                    else
                    {
                        EnderecoNotVisible();

                        if (verificaOperacao != 2)  // insert
                        {
                            btnDadosBancarios.IsEnabled = true;

                            DadosBancariosVisible();
                        }
                        else                        // update
                        {
                            btnAvancar2.IsVisible = false;
                            btnSalvar.IsVisible   = true;

                            EmailSenhaVisible();
                        }
                        lblAlerta.IsVisible = false;
                    }
                }
                #endregion

                #region Valida - Dados bancários
                else if (btnDadosBancarios.IsEnabled && etClienteNumeroCartao.IsVisible)
                {
                    if (string.IsNullOrEmpty(numeroCartao))                     // NUMERO CARTAO
                    {
                        await DisplayAlert(vazio, nulo + lblClienteNumeroCartao.Text, "OK");
                    }
                    else if (numeroCartao.Length < 15)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteNumeroCartao.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(numeroCartao))
                    {
                        await DisplayAlert(caracterInv, "'" + lblClienteNumeroCartao.Text + caracter, "OK");
                    }

                    else if (string.IsNullOrEmpty(dataValidade))                // DATA VALIDADE CARTAO
                    {
                        await DisplayAlert(vazio, nulo + lblClienteValidadeCartao.Text, "OK");
                    }
                    else if (dataValidade.Length < 6)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteValidadeCartao.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(codSeguranca.ToString()))     // CODIGO SEGURANÇA
                    {
                        await DisplayAlert(vazio, nulo + lblClienteCodSeguranca.Text, "OK");
                    }
                    else if (codSeguranca.ToString().Length < 3)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteCodSeguranca.Text, "OK");
                    }
                    else if (ValidaCampos.CaracterEspecial(codSeguranca.ToString()))
                    {
                        await DisplayAlert(caracterInv, "'" + lblClienteCodSeguranca.Text + caracter, "OK");
                    }

                    else if (string.IsNullOrEmpty(nomeImpresso))                // NOME IMPRESSO
                    {
                        await DisplayAlert(vazio, nulo + lblClienteNomeImpresso.Text, "OK");
                    }
                    else if (nomeImpresso.Length < 6)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteNomeImpresso.Text, "OK");
                    }

                    else if (string.IsNullOrEmpty(bandeira))                    // BANDEIRA
                    {
                        await DisplayAlert(vazio, nulo + lblClienteBandeira.Text, "OK");
                    }
                    else if (bandeira.Length < 4)
                    {
                        await DisplayAlert("Dados insuficientes", dadosInsuf + lblClienteBandeira.Text, "OK");
                    }

                    else
                    {
                        DadosBancariosNotVisible();

                        btnAvancar2.IsVisible  = false;
                        btnFinalizar.IsVisible = true;

                        lblAlerta.IsVisible = false;

                        EmailSenhaVisible();
                    }
                }
                #endregion

                else if (etClienteEmail.IsVisible)
                {
                    #region Valida - Email e senha
                    if (string.IsNullOrEmpty(email))                        // EMAIL
                    {
                        await DisplayAlert(vazio, nulo + lblClienteEmail.Text, "OK");
                    }
                    else if (string.IsNullOrEmpty(senha))                   // SENHA
                    {
                        await DisplayAlert(vazio, nulo + lblClienteSenha.Text, "OK");
                    }
                    else if (senha.Length < 6)                              // SENHA
                    {
                        await DisplayAlert("Dados insuficientes", senhaCurta, "OK");
                    }

                    else if (!ValidaCampos.IsEmail(email))                  // VALIDANDO E-MAIL
                    {
                        await DisplayAlert(caracterInv, "E-mail inválido!", "OK");
                    }
                    #endregion

                    #region Insert

                    else if (verificaOperacao == 1)
                    {
                        if (string.IsNullOrEmpty(confemail))               // CONFIRMAÇÃO DE EMAIL
                        {
                            await DisplayAlert(vazio, nulo + lblClienteConfEmail.Text, "OK");
                        }

                        else if (!email.Equals(confemail))                      // COMPARA E-MAIL
                        {
                            await DisplayAlert("Emails", emails, "OK");
                        }

                        else if (string.IsNullOrEmpty(confsenha))               // CONFIRMAÇÃO DE SENHA
                        {
                            await DisplayAlert(vazio, nulo + lblClienteConfSenha.Text, "OK");
                        }

                        else if (!senha.Equals(confsenha))                  // COMPARA SENHA
                        {
                            await DisplayAlert("Senhas", senhas, "OK");
                        }

                        else
                        {
                            //-------------------------------------------------------------------------
                            // Salvando ...

                            #region Cliente()
                            cliente = new Cliente
                                          (nome, rg, cpf, sexo, dataNascto, celular, celular2, endereco, numero,
                                          complemento, bairro, cidade, cep, uf, email, senha, IdTipoUsuario, IdStatus
                                          );
                            #endregion

                            etClienteSexo.SelectedItem = "F";

                            #region INSERT

                            if (id == 1)
                            {
                                await control.PostAsync(cliente);       // Insert -Tab. Cliente

                                // Captura o IdCliente gerado no banco
                                Cliente clien = await control.GetCpf(cpf);

                                #region CartaoCredito()

                                CartaoCredito cartao = new CartaoCredito()
                                {
                                    IdCliente          = clien.IdCliente,
                                    Ccpf               = cpf,
                                    CNumeroCartao      = numeroCartao,
                                    IdBandeira         = idBandeira,
                                    CDataValidade      = dataValidade,
                                    CCodigoSeg         = codSeguranca,
                                    CDataCadastro      = DateTime.Now,
                                    IdStatus           = 4,
                                    CDataInativacao    = null,
                                    CUltimaAtualizacao = null,
                                    BandeiraDescricao  = bandeira,
                                    NomeImpresso       = nomeImpresso
                                };
                                #endregion

                                await controlCartao.PostCartaoAsync(cartao);    // Insert - Tab. Cartao

                                btnFinalizar.IsVisible = false;
                                btnVoltar.IsVisible    = false;
                                lblAlerta.IsVisible    = false;

                                await DisplayAlert("Sucesso!", "Cadastro realizado com sucesso!", "OK");

                                EmailSenhaNotVisible();

                                // Direciona para a tela de login
                                await Navigation.PushModalAsync(new Views.Login());

                                //btnLogar.IsVisible     = true;
                            }

                            #endregion
                        }
                    }
                    #endregion

                    else
                    {
                        //-------------------------------------------------------------------------
                        // Salvando ...

                        #region Cliente()
                        cliente = new Cliente
                                      (nome, rg, cpf, sexo, dataNascto, celular, celular2, endereco, numero,
                                      complemento, bairro, cidade, cep, uf, email, senha, IdTipoUsuario, IdStatus
                                      );
                        #endregion

                        #region UPDATE

                        if (id == 2)
                        {
                            await control.UpdateCliente(cliente, idCli);

                            await DisplayAlert("Sucesso!", "Cadastro realizado com sucesso!", "OK");  // Confirma a atualização

                            EmailSenhaNotVisible();

                            btnSalvar.IsVisible = false;

                            await Navigation.PushModalAsync(new Views.LgMinhaContaa());  // Direciona para 'Minha Conta'
                        }

                        #endregion

                        //-------------------------------------------------------------------------
                    }
                }
            }
            catch (Exception ex)
            {
                if (ex.Source != null)
                {
                    //await DisplayAlert("Erro", ex.ToString(), "OK");
                    await DisplayAlert("Erro", ex.ToString(), "OK");

                    Console.WriteLine("Exception source: {0}", ex.Source);

                    // Caso não seja possível realizar o processo de cadastro total (de todas as classes),
                    // é excluído o que já foi cadastrado.

                    #region Exclui registros cadastrados caso não tenha sido possível inserir os dados em todas as classes envolvidas
                    Cliente clien = await control.GetCpf(cpf);

                    // Pega o ID do cliente gerado  ----  //int idCliente = clien.IdCliente;

                    if (control.GetCpf(cpf) != null)
                    {
                        await control.DeleteCliente(idCliente);
                    }
                    #endregion
                }
                throw;
            }
        }