Exemplo n.º 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);
        }
Exemplo n.º 2
0
        /// <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);
        }