/// <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); }
/// <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; } } } }
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(); }