예제 #1
0
        /// <summary>
        /// Metodo testa todas as variaveis filho e busca seus criterios
        /// </summary>
        /// <param name="entidade"></param>
        /// <returns></returns>
        public Criterio RetornaCriterio(Variavel entidadeVariavel, Entidade entidade)
        {
            EntidadeBLL oEntidade = new EntidadeBLL();
            VariavelCalculoVariavelBLL oCalculoVariavel = new VariavelCalculoVariavelBLL();
            VariavelBLL oVariavel          = new VariavelBLL();
            Criterio    dadosCriterio      = new Criterio();
            Variavel    dadosVariavelLista = new Variavel();

            //Retorna lista de filhos das variáveis
            //dadosVariavelLista = oVariavel.ListarRelacao(entidadeVariavel);

            for (int i = 0; i < dadosVariavelLista.VariavelFilho.Count; i++)
            {
                //Variavel com Tipo de dado Importado
                if (dadosVariavelLista.VariavelFilho[i].TipoDadoVariavel.IDTipoDadoVariavel == 1)
                {
                    entidade.Variavel.IDVariavel = dadosVariavelLista.VariavelFilho[i].IDVariavel;
                    entidade = oEntidade.ListarVariavel(entidade);
                    if (entidade.Variavel.Criterio.IDCriterio != 0)
                    {
                        dadosVariavelLista.VariavelFilho[i].Criterio.IDCriterio = entidade.Variavel.Criterio.IDCriterio;
                    }
                    else
                    {
                        dadosVariavelLista.VariavelFilho[i].Criterio.Valor = entidade.Variavel.Criterio.Valor;
                    }
                }
                //Variavel com Tipo de dado Deduzido ou Calculado
                else
                {
                    //Recursivamente Procura Filhos e seus criterios ou valores
                    dadosVariavelLista.VariavelFilho[i].Criterio = RetornaCriterio(dadosVariavelLista.VariavelFilho[i], entidade);
                }
            }
            //Variavel com Tipo de dado Calculo
            if (entidadeVariavel.TipoDadoVariavel.IDTipoDadoVariavel == 3)
            {
                //retorna o critério Utilizando o Calculo das variaveis filhas
                dadosCriterio = CalculaVariavel(dadosVariavelLista.VariavelFilho, entidadeVariavel);
            }
            //Variavel com Tipo de dado Deduzido
            else
            {
                //Retorna o criterio Utilizando a RegraLogica com base nos critérios das variaveis filhas
                dadosCriterio = TestaRegraLogica(dadosVariavelLista.VariavelFilho, entidadeVariavel);
            }

            return(dadosCriterio);
        }
예제 #2
0
        /// <summary>
        /// metodo localiza a variavel Output Global e seus filhos diretos
        /// </summary>
        /// <param name="entidade"></param>
        /// <returns></returns>
        public void SegmentarEntidade(Entidade entidade)
        {
            VariavelBLL        oVariavel             = new VariavelBLL();
            EntidadeBLL        oEntidade             = new EntidadeBLL();
            RegraLogicaBLL     oRegraLogica          = new RegraLogicaBLL();
            Variavel           dadosVariavelLista    = new Variavel();
            Segmento           dadosSeguimento       = new Segmento();
            RegraLogica        dadosRegraLogica      = new RegraLogica();
            List <RegraLogica> dadosRegraLogicaLista = new List <RegraLogica>();

            //retorna a variavel OutputGlobal
            dadosVariavelLista = oVariavel.ListarOutputGlobal(entidade.Variavel);
            //retorna lista de filhos do OutputGlobal
            //dadosVariavelLista = oVariavel.ListarRelacao(dadosVariavelLista);

            //retorna Critérios das variaveis recursivamente
            for (int i = 0; i < dadosVariavelLista.VariavelFilho.Count; i++)
            {
                //Variavel com Tipo de dado Importado
                if (dadosVariavelLista.VariavelFilho[i].TipoDadoVariavel.IDTipoDadoVariavel == 1)
                {
                    entidade.Variavel.IDVariavel = dadosVariavelLista.VariavelFilho[i].IDVariavel;
                    entidade = oEntidade.ListarVariavel(entidade);
                    if (entidade.Variavel.Criterio.IDCriterio != 0)
                    {
                        dadosVariavelLista.VariavelFilho[i].Criterio.IDCriterio = entidade.Variavel.Criterio.IDCriterio;
                    }
                    else
                    {
                        dadosVariavelLista.VariavelFilho[i].Criterio.Valor = entidade.Variavel.Criterio.Valor;
                    }
                }
                //Variavel com Tipo de dado Deduzido ou Calculo
                else
                {
                    //Recursivamente Procura Filhos e seus criterios
                    dadosVariavelLista.VariavelFilho[i].Criterio = RetornaCriterio(dadosVariavelLista.VariavelFilho[i], entidade);
                }
            }

            dadosRegraLogica.Variavel = entidade.Variavel;
            //carrega todas as regras logicas do OutputGlobal
            dadosRegraLogicaLista = oRegraLogica.ListarPorVariavel(dadosRegraLogica);

            //percorre a lista de regra logica até encontrar a regra válida
            for (int i = 0; i < dadosRegraLogicaLista.Count; i++)
            {
                for (int j = 0; j < dadosVariavelLista.VariavelFilho.Count; j++)
                {
                    dadosVariavelLista.VariavelFilho[j].RegraLogica.IdRegraLogica = dadosRegraLogicaLista[i].IdRegraLogica;
                    //testa Variaveis para encontrar a regra lógica válida
                    dadosVariavelLista.VariavelFilho[j].RegraLogica = oRegraLogica.ValidarVariavel(dadosVariavelLista.VariavelFilho[j]);
                    //Regra Lógica falsa interrompe o laço
                    if (dadosVariavelLista.VariavelFilho[j].RegraLogica.Valido == false)
                    {
                        break;
                    }

                    //Regra lógica válida prepara o critério para retorno
                    else if (j + 1 == dadosVariavelLista.VariavelFilho.Count)
                    {
                        //Consome a Regra Logica
                        entidade.Segmento.RegraLogica.IdRegraLogica = dadosRegraLogicaLista[i].IdRegraLogica;
                        //Retorna Segmento basiado na Regra Logica
                        entidade.Segmento = ListarRegraLogica(entidade.Segmento);
                        //Cadastra a Entidade em um Segmento
                        NovaEntidade(entidade.Segmento);
                        //Incrementa o tamanho do mercado de um segmento
                        ControleTamanhoMercado(entidade.Segmento);
                        return;
                    }
                }
            }
        }
예제 #3
0
        public void LerArquivoEntidade(string arquivoLocal, Modelo entidadeModelo)
        {
            string                   variavel;
            int                      idEntidade;
            Modelo                   dadosModelo = new Modelo();
            ModeloBLL                oModelo     = new ModeloBLL();
            LogImportacaoEntidade    dadosLogImportacaoEntidade = new LogImportacaoEntidade();
            LogImportacaoEntidadeBLL oLogImportacaoEntidade     = new LogImportacaoEntidadeBLL();
            Entidade                 dadosEntidade = new Entidade();
            EntidadeBLL              oEntidade     = new EntidadeBLL();
            Criterio                 dadosCriterio = new Criterio();
            CriterioBLL              oCriterio     = new CriterioBLL();

            //Atribui o CSV no StreamReader passando o local do arquivo como parâmetro
            StreamReader stream = new StreamReader(arquivoLocal);
            //Pula o Header
            string linha = stream.ReadLine();

            //Laço de cada linha
            while ((linha = stream.ReadLine()) != null)
            {
                //Quebra a linha nas colunas correspondentes que estiverem separadas por ";"
                string[] linhaSeparada = linha.Split(';');
                //Invoca método ListarVariavelImportacao passando o IdTipoDadoVariavel como importada
                dadosModelo.TipoDadoVariavel = new TipoDadoVariavel()
                {
                    IDTipoDadoVariavel = 1
                };
                dadosModelo = oModelo.ListarVariavelImportacao(entidadeModelo);
                //Foreach para ler cada ColunaImportacao na lista de ModelosVariaveis
                foreach (ModeloVariavel list in dadosModelo.ModeloVariavel)
                {
                    //Se valor informado estiver nulo no arquivo CSV, Criticar a mesma
                    if (linhaSeparada[list.Variavel.ColunaImportacao] == null)
                    {
                        dadosLogImportacaoEntidade.CodigoVariavel    = list.Variavel.Codigo;
                        dadosLogImportacaoEntidade.DocumentoEntidade = linhaSeparada[0].ToString();
                        dadosLogImportacaoEntidade.Mensagem          = "Valor de Variável não informado para a variável " + list.Variavel.IDVariavel;
                        oLogImportacaoEntidade.Novo(dadosLogImportacaoEntidade);
                    }
                    //Caso tenha conteúdo, fazer as seguintes verificações
                    else
                    {
                        //Invoca método Novo da EntidadeBLL passando as 3 primeiras colunas como parametros
                        dadosEntidade.Documento = linhaSeparada[0].ToString();
                        dadosEntidade.Nome      = linhaSeparada[1].ToString();
                        dadosEntidade.Regiao    = linhaSeparada[2].ToString();
                        dadosEntidade.Modelo    = new Modelo()
                        {
                            IDModelo = entidadeModelo.IDModelo
                        };
                        oEntidade.Novo(dadosEntidade);
                        //Atribui ao idEntidade o @@Identity do método novo
                        idEntidade = dadosEntidade.IDEntidade;
                        //Atribui a variavel o conteúdo correspondente da ColunaImportacao
                        variavel = linhaSeparada[list.Variavel.ColunaImportacao].ToString();
                        //Caso os primeiros caracteres comecem com "de"
                        if (variavel.StartsWith("de"))
                        {
                            //Quebra a Variavel para capturar os valores 1 e 2
                            string[] variavelSeparada = variavel.Split(' ');
                            //Invoca método ListarVariavel e retorna IDCriterio
                            dadosCriterio.CriterioVariavel = new CriterioVariavel()
                            {
                                Valor1 = Convert.ToInt32(variavelSeparada[1]),
                                Valor2 = Convert.ToInt32(variavelSeparada[3])
                            };
                            dadosCriterio.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosCriterio.TipoCriterioVariavel = new TipoCriterioVariavel()
                            {
                                IDTipoCriterioVariavel = 2
                            };
                            dadosCriterio = oCriterio.ListarVariavel(dadosCriterio);
                            //Invoca método NovoVariavel da EntidadeBLL
                            dadosEntidade.Criterio = new Criterio()
                            {
                                IDCriterio = dadosCriterio.IDCriterio
                            };
                            dadosEntidade.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosEntidade.IDEntidade = idEntidade;
                            oEntidade.NovoVariavel(dadosEntidade);
                        }
                        //Caso os primeiros caracteres comecem com "até"
                        else if (variavel.StartsWith("até"))
                        {
                            //Quebra a Variavel para capturar o valor 1
                            string[] variavelSeparada = variavel.Split('$');
                            //Invoca método ListarVariavel e retorna IDCriterio
                            dadosCriterio.CriterioVariavel = new CriterioVariavel()
                            {
                                Valor1 = Convert.ToDouble(variavelSeparada[1].Replace(',', '.'))
                            };
                            dadosCriterio.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosCriterio.TipoCriterioVariavel = new TipoCriterioVariavel()
                            {
                                IDTipoCriterioVariavel = 2
                            };
                            dadosCriterio = oCriterio.ListarVariavel(dadosCriterio);
                            //Invoca método NovoVariavel da EntidadeBLL
                            dadosEntidade.Criterio = new Criterio()
                            {
                                IDCriterio = dadosCriterio.IDCriterio
                            };
                            dadosEntidade.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosEntidade.IDEntidade = idEntidade;
                            oEntidade.NovoVariavel(dadosEntidade);
                        }
                        //Caso seja um valor numérico
                        else if (variavel.GetType() == typeof(Int32))
                        {
                            //Invoca método ListarVariavel e retorna IDCriterio
                            dadosCriterio.CriterioVariavel = new CriterioVariavel()
                            {
                                Valor1 = Convert.ToDouble(variavel)
                            };
                            dadosCriterio.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosCriterio.TipoCriterioVariavel = new TipoCriterioVariavel()
                            {
                                IDTipoCriterioVariavel = 2
                            };
                            dadosCriterio = oCriterio.ListarVariavel(dadosCriterio);
                            //Caso o IdCriterio não seja encontrado
                            if (dadosCriterio.IDCriterio == 0)
                            {
                                //Invoca método NovoVariavel da EntidadeBLL
                                dadosEntidade.EntidadeVariavelObject = new EntidadeVariavel()
                                {
                                    Valor = Convert.ToDouble(variavel)
                                };
                                dadosEntidade.Variavel = new Variavel()
                                {
                                    IDVariavel = list.Variavel.IDVariavel
                                };
                                dadosEntidade.IDEntidade = idEntidade;
                                oEntidade.NovoVariavel(dadosEntidade);
                            }
                            else
                            {
                                //Invoca método NovoVariavel da EntidadeBLL
                                dadosEntidade.Criterio = new Criterio()
                                {
                                    IDCriterio = dadosCriterio.IDCriterio
                                };
                                dadosEntidade.Variavel = new Variavel()
                                {
                                    IDVariavel = list.Variavel.IDVariavel
                                };
                                dadosEntidade.IDEntidade = idEntidade;
                                oEntidade.NovoVariavel(dadosEntidade);
                            }
                        }
                        //Caso os primeiros caracteres comecem com "abaixo de"
                        else if (variavel.StartsWith("abaixo de"))
                        {
                            //Quebra a Variavel para capturar o valor 1
                            string[] variavelSeparada = variavel.Split(' ');
                            //Invoca método ListarVariavel e retorna IDCriterio
                            dadosCriterio.CriterioVariavel = new CriterioVariavel()
                            {
                                Valor1 = Convert.ToDouble(variavelSeparada[3])
                            };
                            dadosCriterio.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosCriterio.TipoCriterioVariavel = new TipoCriterioVariavel()
                            {
                                IDTipoCriterioVariavel = 5
                            };
                            dadosCriterio = oCriterio.ListarVariavel(dadosCriterio);
                            //Invoca método NovoVariavel da EntidadeBLL
                            dadosEntidade.Criterio = new Criterio()
                            {
                                IDCriterio = dadosCriterio.IDCriterio
                            };
                            dadosEntidade.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosEntidade.IDEntidade = idEntidade;
                            oEntidade.NovoVariavel(dadosEntidade);
                        }
                        //Caso os primeiros caracteres comecem com "acima de"
                        else if (variavel.StartsWith("acima de"))
                        {
                            //Quebra a Variavel para capturar o valor 1
                            string[] variavelSeparada = variavel.Split(' ');
                            //Invoca método ListarVariavel e retorna IDCriterio
                            dadosCriterio.CriterioVariavel = new CriterioVariavel()
                            {
                                Valor1 = Convert.ToDouble(variavelSeparada[3])
                            };
                            dadosCriterio.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosCriterio.TipoCriterioVariavel = new TipoCriterioVariavel()
                            {
                                IDTipoCriterioVariavel = 3
                            };
                            dadosCriterio = oCriterio.ListarVariavel(dadosCriterio);
                            //Invoca método NovoVariavel da EntidadeBLL
                            dadosEntidade.Criterio = new Criterio()
                            {
                                IDCriterio = dadosCriterio.IDCriterio
                            };
                            dadosEntidade.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosEntidade.IDEntidade = idEntidade;
                            oEntidade.NovoVariavel(dadosEntidade);
                        }
                        //Caso seja uma String
                        else if (variavel.GetType() == typeof(String))
                        {
                            //Invoca método ListarVarivelImportacao e retorna IDCriterio
                            dadosCriterio.Nome     = linhaSeparada[1].ToString().Trim();
                            dadosCriterio.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosCriterio = oCriterio.ListarVariavelImportacao(dadosCriterio);
                            //Invoca método NovoVariavel da EntidadeBLL
                            dadosEntidade.Criterio = new Criterio()
                            {
                                IDCriterio = dadosCriterio.IDCriterio
                            };
                            dadosEntidade.Variavel = new Variavel()
                            {
                                IDVariavel = list.Variavel.IDVariavel
                            };
                            dadosEntidade.IDEntidade = idEntidade;
                            oEntidade.NovoVariavel(dadosEntidade);
                        }
                        //Caso não se encaixe em nenhuma das situações, Criticar
                        else
                        {
                            dadosLogImportacaoEntidade.CodigoVariavel    = list.Variavel.Codigo;
                            dadosLogImportacaoEntidade.DocumentoEntidade = linhaSeparada[0].ToString();
                            dadosLogImportacaoEntidade.Mensagem          = "Domínio informado para a variável " + list.Variavel.IDVariavel + " e Coluna Importação " + variavel + "inexistente no software segmentação";
                            oLogImportacaoEntidade.Novo(dadosLogImportacaoEntidade);
                        }
                    }
                }
            }
            //Fecha a conexão do Stream
            stream.Close();
        }