public void AtualizaPassagensPedagio(ChaveBuscaViewsModels chave, int id)
        {
            PassagensPedagio passagemChaveUm = new PassagensPedagio();

            passagemChaveUm.PassagemPedagioId = id;
            passagemChaveUm.OpRodoviaChave    = chave.Rodovia;
            passagemChaveUm.KmChave           = chave.Km;
            passagemChaveUm.SentidoChave      = chave.Sentido;
            passagemChaveUm.CidadeChave       = chave.Cidade;
            passagemChaveUm.EstadoChave       = chave.Estado;
            _rodoviaRepository.UpdateChavePassagensPedagio(passagemChaveUm);
        }
        public IActionResult GerarStringComparacao()
        {
            RodoviaDominio rodoviaDominio = new RodoviaDominio();

            List <PassagensPedagio> listaPassagensPedagiosGroupRodovia = new List <PassagensPedagio>();

            listaPassagensPedagiosGroupRodovia = _rodoviaRepository.GetRodoviaPassagensPedagio();
            foreach (PassagensPedagio itemRodvia in listaPassagensPedagiosGroupRodovia)
            {
                List <PassagensPedagio> listaPraca = new List <PassagensPedagio>();
                listaPraca = _rodoviaRepository.GetPracasPassagensPedagio(itemRodvia.Rodovia);
                foreach (PassagensPedagio itemPraca in listaPraca)
                {
                    //Verifica Chave Um
                    var MontaChaveUm = new ChaveBuscaViewsModels();
                    MontaChaveUm = rodoviaDominio.MontaChaveUm(itemPraca.Praca);
                    if (MontaChaveUm.Valida)
                    {
                        //Chave é valida
                        AtualizaPassagensPedagio(MontaChaveUm, itemPraca.PassagemPedagioId);
                    }
                    if (!MontaChaveUm.Valida)
                    {
                        var MontaChaveDois = new ChaveBuscaViewsModels();
                        MontaChaveDois = rodoviaDominio.MontaChaveDois(itemPraca.Praca);
                        if (MontaChaveDois.Valida)
                        {
                            AtualizaPassagensPedagio(MontaChaveDois, itemPraca.PassagemPedagioId);
                        }
                    }
                }
            }



            return(View());
        }
        //Somente Cidade
        public ChaveBuscaViewsModels MontaChaveDois(string praca)
        {
            ChaveBuscaViewsModels chave = new ChaveBuscaViewsModels();

            int    validaKm          = praca.IndexOf("KM");
            string pontoCardealAtual = "";
            string montaPraca        = "";
            string mbCidade          = "";
            string mbKm    = "";
            bool   _valida = false;

            //Existe Km na Chave
            if (validaKm > 0)
            {
                //Localiza ponto cardeal
                string[] pontoCardeal = { "NORTE", "SUL", "LESTE", "OESTE" };
                foreach (string ponto in pontoCardeal)
                {
                    int validaPonto = praca.IndexOf(ponto);
                    if (validaPonto > 0)
                    {
                        pontoCardealAtual = ponto;
                        montaPraca        = praca.Replace(pontoCardealAtual, "");
                        var montaCidkm = montaPraca.Split("KM");
                        mbCidade = montaCidkm[0];
                        mbKm     = montaCidkm[1];

                        chave.Sentido = pontoCardealAtual;
                        chave.Cidade  = mbCidade;

                        //Trata KM
                        chave.Km = GetTrataKm(mbKm);

                        _valida = true;
                    }
                }
                if (!_valida)
                {
                    if (praca.IndexOf("-") > 0)
                    {
                        var bsCidade = praca.Split("-");

                        chave.Cidade = bsCidade[0];
                        chave.Km     = GetTrataKm(mbKm);
                        _valida      = true;
                    }
                }
            }
            else
            {
                if (!_valida)
                {
                    if (praca.IndexOf(",") == -1)
                    {
                        chave.Cidade = praca;
                        _valida      = true;
                    }
                }
            }
            chave.Valida = _valida;

            return(chave);
        }
        //Rodovia + KM + Sentido + Cidade
        public ChaveBuscaViewsModels MontaChaveUm(string praca)
        {
            ChaveBuscaViewsModels chave = new ChaveBuscaViewsModels();

            bool _validaChave = false;

            if (praca.IndexOf(",") > 0)
            {
                var _strPraca = praca.Split(",");

                int valorArray = _strPraca.Length;

                if (_strPraca[1].Length > 0)
                {
                    string _km         = _strPraca[1];
                    string _verificaKM = _km.Replace(" ", "").Substring(0, 2);

                    if (_verificaKM == "KM")
                    {
                        _validaChave = true;
                    }
                }

                if (_validaChave)
                {
                    chave.Rodovia = _strPraca[0];

                    //monta km
                    string mntKm       = _strPraca[1];
                    var    mntKmIncFim = mntKm.Split("+");
                    chave.Km = mntKmIncFim[0].Replace(" ", "");

                    string mntCidade = "";

                    if (valorArray > 3)
                    {
                        chave.Sentido = _strPraca[2];
                        mntCidade     = _strPraca[3];
                    }
                    else
                    {
                        mntCidade = _strPraca[2];
                    }

                    if (mntCidade.IndexOf("-") > 0)
                    {
                        var mntCidadeEstado = mntCidade.Split("-");
                        chave.Cidade = mntCidadeEstado[0];
                        chave.Estado = mntCidadeEstado[1];
                    }
                    else
                    {
                        chave.Cidade = mntCidade;
                    }
                }
            }

            chave.Valida = _validaChave;

            return(chave);
        }