/// <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 testa o valor da variavel a fim de enquadrar em um critério /// </summary> /// <param name="entidadeFilha"></param> /// <param name="entidade"></param> /// <returns></returns> public Criterio CalculaVariavel(List <Variavel> entidadeFilha, Variavel entidade) { Criterio dadosCriterio = new Criterio(); List <Criterio> dadosCriterioLista = new List <Criterio>(); CalculoVariavel dadosCalculoVariavel = new CalculoVariavel(); VariavelCalculoVariavel dadosVariavelCalculo = new VariavelCalculoVariavel(); VariavelCalculoVariavelBLL oVariavelCalculo = new VariavelCalculoVariavelBLL(); CriterioBLL oCriterio = new CriterioBLL(); dadosCriterio.Variavel = entidade; dadosCalculoVariavel.Variavel = entidade; //retorna todos os valores e operadores para uma expressão dadosCalculoVariavel.VariavelCalculoVariavel = oVariavelCalculo.ListarCalculo(dadosVariavelCalculo); //Concatena todos os valores e operadores da expressão for (int i = 0; i < dadosCalculoVariavel.VariavelCalculoVariavel.Count; i++) { entidade.Expressão += dadosCalculoVariavel.VariavelCalculoVariavel[i].TipoOperadorCalculo.Simbolo; entidade.Expressão += dadosCalculoVariavel.VariavelCalculoVariavel[i].Variavel.Criterio.Valor.ToString(); } //Retorna o valor da expressão calculada entidade.Criterio.Valor = Convert.ToInt32(Eval(entidade.Expressão)); //lista todas os Criterios para a variavel dadosCriterioLista = oCriterio.ListarVariavelLista(dadosCriterio); //Testa todas os critérios variaveis até encontrar o correto for (int j = 0; j < dadosCriterioLista.Count; j++) { //Menor ou igual ao valor do critério atual (Até) if (dadosCriterioLista[j].TipoCriterioVariavel.IDTipoCriterioVariavel == 1 && entidade.Criterio.Valor <= dadosCriterioLista[j].CriterioVariavel.Valor1) { entidade.Criterio.IDCriterio = dadosCriterioLista[j].CriterioVariavel.Criterio.IDCriterio; break; } //Entre os valores do Critério atual (Entre) else if (dadosCriterioLista[j].TipoCriterioVariavel.IDTipoCriterioVariavel == 2 && entidade.Criterio.Valor >= dadosCriterioLista[j].CriterioVariavel.Valor1 && entidade.Criterio.Valor <= dadosCriterioLista[j].CriterioVariavel.Valor2) { entidade.Criterio.IDCriterio = dadosCriterioLista[j].CriterioVariavel.Criterio.IDCriterio; break; } //Menor que o valor do critério atual (Maior que) else if (dadosCriterioLista[j].TipoCriterioVariavel.IDTipoCriterioVariavel == 3 && entidade.Criterio.Valor > dadosCriterioLista[j].CriterioVariavel.Valor1) { entidade.Criterio.IDCriterio = dadosCriterioLista[j].CriterioVariavel.Criterio.IDCriterio; break; } //Igual ao valor do critério atual (Igual) else if (dadosCriterioLista[j].TipoCriterioVariavel.IDTipoCriterioVariavel == 4 && entidade.Criterio.Valor == dadosCriterioLista[j].CriterioVariavel.Valor1) { entidade.Criterio.IDCriterio = dadosCriterioLista[j].CriterioVariavel.Criterio.IDCriterio; break; } //Menor que o valor do criterio atual (Manor que) else if (dadosCriterioLista[j].TipoCriterioVariavel.IDTipoCriterioVariavel == 5 && entidade.Criterio.Valor < dadosCriterioLista[j].CriterioVariavel.Valor1) { entidade.Criterio.IDCriterio = dadosCriterioLista[j].CriterioVariavel.Criterio.IDCriterio; break; } } return(dadosCriterio); }