Ejemplo n.º 1
0
        public void GerarCodigoSegmento(Modelo entidadeModelo)
        {
            string          codigo;
            Modelo          dadosModelo      = new Modelo();
            TipoSegmentoBLL oTipoSegmento    = new TipoSegmentoBLL();
            Variavel        dadosVariavel    = new Variavel();
            VariavelBLL     oVariavel        = new VariavelBLL();
            Criterio        dadosCriterio    = new Criterio();
            CriterioBLL     oCriterio        = new CriterioBLL();
            RegraLogica     dadosRegraLogica = new RegraLogica();
            RegraLogicaBLL  oRegraLogica     = new RegraLogicaBLL();
            Segmento        dadosSegmento    = new Segmento();

            //Invoca Método para retornar OutputGlobal
            dadosVariavel.Modelo = new Modelo()
            {
                IDModelo = entidadeModelo.IDModelo
            };
            dadosVariavel.TipoSaida = new TipoSaida()
            {
                IDTipoSaida = 3
            };
            dadosVariavel.ClasseVariavel = new ClasseVariavel()
            {
                IDClasseVariavel = null
            };
            dadosVariavel = oVariavel.ListarOutputGlobal(dadosVariavel);
            if (dadosVariavel.IDVariavel == 0)
            {
                throw new Exceptions.RegraLogicaInvalida("NÃO EXISTE NENHUM OUTPUT GLOBAL VINCULADO A ESSE MODELO. IMPOSSÍVEL GERAR SEGMENTOS.");
            }

            //Invoca Método para retornar RegraLógica
            dadosRegraLogica.Variavel = new Variavel()
            {
                IDVariavel = dadosVariavel.IDVariavel
            };
            dadosRegraLogica = oRegraLogica.Listar(dadosRegraLogica);
            if (dadosRegraLogica.RegraLogicaLista.Count == 0)
            {
                throw new Exceptions.RegraLogicaInvalida("NÃO EXISTE NENHUMA REGRA LÓGICA VINCULADA AO OUTPUT GLOBAL DO MODELO. IMPOSSÍVEL GERAR SEGMENTOS.");
            }

            //Pegar o IdRegraLogica de cada indice da lista RegraLogica
            foreach (RegraLogica listRegraLogica in dadosRegraLogica.RegraLogicaLista)
            {
                if (listRegraLogica.IdRegraLogica == null)
                {
                    throw new Exceptions.RegraLogicaInvalida("REGRA LÓGICA NÃO CADASTRADA");
                }

                //Invoca Método para retornar o Nome Modelo.
                dadosModelo = oTipoSegmento.Listar(entidadeModelo);
                //Atribui a primeira letra do Nome Modelo no Código.
                codigo = dadosModelo.Nome[0].ToString();
                //Concatena abre colchetes no Código.
                codigo += "[";

                //Invoca Método para retornar Nome Critério.
                dadosCriterio.IDCriterio   = listRegraLogica.Criterio.IDCriterio;
                dadosCriterio.LinhaNegocio = new LinhaNegocio()
                {
                    IDLinhaNegocio = null
                };
                dadosCriterio = oCriterio.Listar(dadosCriterio);

                //Concatena as 3 primeiras Letras do Nome Critério no Código.
                codigo += dadosCriterio.Nome[0];
                codigo += dadosCriterio.Nome[1];
                codigo += dadosCriterio.Nome[2];
                //Concatena abre parenteses no Código.
                codigo += "(";

                //Invoca Método para retornar uma lista de VariavelRegraLogica.
                dadosVariavel.TipoSaida = new TipoSaida()
                {
                    IDTipoSaida = 3
                };
                dadosVariavel.Modelo = new Modelo()
                {
                    IDModelo = entidadeModelo.IDModelo
                };
                dadosVariavel.RegraLogica = new RegraLogica()
                {
                    IdRegraLogica = listRegraLogica.IdRegraLogica
                };
                dadosVariavel.ClasseVariavel = new ClasseVariavel()
                {
                    IDClasseVariavel = null
                };
                dadosVariavel = oVariavel.ListarRegraLogicaProcessoSegmento(dadosVariavel);

                //Pegar o IdCriterio de cada indice da lista VariavelRegraLogica
                foreach (VariavelRegraLogica list in dadosVariavel.VariavelRegraLogicaLista)
                {
                    //Invoca Método para retornar Nome Critério.
                    dadosCriterio.IDCriterio   = list.Criterio.IDCriterio;
                    dadosCriterio.LinhaNegocio = new LinhaNegocio()
                    {
                        IDLinhaNegocio = null
                    };
                    dadosCriterio = oCriterio.Listar(dadosCriterio);
                    //Concatena as 2 primeiras Letras do Nome Critério no Código.
                    codigo += dadosCriterio.Nome[0];
                    codigo += dadosCriterio.Nome[1] + ", ";
                }

                //Concatena fecha parenteses no Código.
                codigo += ")";
                //Concatena fecha colchetes no Código.
                codigo += "]";

                //Verifica se existe algum relacionamento com o SegmentoRegraLogica e o exclui
                dadosSegmento.Modelo = new Modelo()
                {
                    IDModelo = entidadeModelo.IDModelo
                };
                dadosSegmento = Listar(dadosSegmento);
                foreach (Segmento listSegmento in dadosSegmento.SegmentoLista)
                {
                    dadosSegmento.IDSegmento = listSegmento.IDSegmento;
                    RemoverRegraLogica(dadosSegmento);
                }
                dadosSegmento.Modelo = new Modelo()
                {
                    IDModelo = entidadeModelo.IDModelo
                };
                dadosSegmento.IDSegmento = null;
                dadosSegmento.Codigo     = null;
                dadosSegmento.Usuario    = new Usuario()
                {
                    IDUsuario = null
                };
                try
                {
                    Remover(dadosSegmento);
                }
                catch (Exception)
                {
                    throw new Exceptions.RegraLogicaInvalida("EXISTEM RELACIONAMENTOS PENDENTES PARA ESTE SEGMENTO. IMPOSSÍVEL GERAR SEGMENTOS.");
                }


                //Invoca Método para inserir o Código Segmento.
                dadosSegmento.TamanhoMercado    = null;
                dadosSegmento.Codigo            = codigo;
                dadosSegmento.FatorAtratividade = null;
                dadosSegmento.Modelo            = new Modelo()
                {
                    IDModelo = entidadeModelo.IDModelo
                };
                dadosSegmento.Usuario = new Usuario()
                {
                    IDUsuario = entidadeModelo.Usuario.IDUsuario
                };
                Novo(dadosSegmento);

                //Invoca Método para inserir a relação Segmento e RegraLógica
                dadosSegmento.RegraLogica = new RegraLogica()
                {
                    IdRegraLogica = listRegraLogica.IdRegraLogica
                };
                NovoRegraLogica(dadosSegmento);
            }
        }