Ejemplo n.º 1
0
        private static void testeInterface()
        {
            IServicoMensageria servicoMensageria = Ativador.Get <IServicoMensageria>();

            AutenticarUsuarioResponse responseAutenticacao =
                (AutenticarUsuarioResponse)
                servicoMensageria.ProcessarMensagem(
                    new AutenticarUsuarioRequest()
            {
                CodigoUsuario = "Admin",
                Senha         = "123"
            });

            ReceberArvoreComandosInterfaceResponse respostaArvore =
                (ReceberArvoreComandosInterfaceResponse)
                servicoMensageria.ProcessarMensagem(
                    new ReceberArvoreComandosInterfaceRequest()
            {
                CodigoSessao = responseAutenticacao.Sessao.CodigoSessao,
                CodigoGrupoComandoInterface = "default"
            });

            ReceberGrupoComandoInterfaceResponse respostaReceber =
                (ReceberGrupoComandoInterfaceResponse)
                servicoMensageria.ProcessarMensagem(
                    new ReceberGrupoComandoInterfaceRequest()
            {
                CodigoSessao = responseAutenticacao.Sessao.CodigoSessao,
                CodigoGrupoComandoInterface = "default"
            });
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Solicita o processamento dos comandos de interface. Verifica os comandos permitidos e retorna
        /// a árvore.
        /// </summary>
        /// <param name="parametros"></param>
        /// <returns></returns>
        public ReceberArvoreComandosInterfaceResponse ReceberArvoreComandosInterface(ReceberArvoreComandosInterfaceRequest parametros)
        {
            // Referencia para o servico de seguranca
            IServicoSeguranca servicoSeguranca = Ativador.Get <IServicoSeguranca>();

            // Prepara a resposta
            ReceberArvoreComandosInterfaceResponse resposta =
                new ReceberArvoreComandosInterfaceResponse()
            {
                CodigoMensagemRequest       = parametros.CodigoMensagem,
                CodigoGrupoComandoInterface = parametros.CodigoGrupoComandoInterface
            };

            // Pega grupo de comandos
            ReceberGrupoComandoInterfaceResponse respostaReceber =
                this.ReceberGrupoComandoInterface(
                    new ReceberGrupoComandoInterfaceRequest()
            {
                CodigoSessao = parametros.CodigoSessao,
                CodigoGrupoComandoInterface = parametros.CodigoGrupoComandoInterface
            });

            // Transforma a árvore de comandos em lista
            List <ComandoInterfaceInfo> listaComandos = respostaReceber.GrupoComandoInterface.ListarComandos();

            // Cria lista indicando quais comandos são grupo
            List <string> listaGrupos =
                (from c in listaComandos
                 where c.Filhos.Count > 0
                 select c.CodigoComandoInterface).ToList();

            // Salva o código do item na tag da segurança para enviar para validação
            foreach (ComandoInterfaceInfo item in listaComandos)
            {
                item.Seguranca.Tag = item.CodigoComandoInterface;
            }

            // Cria lista de itens de seguranca a validar
            List <ItemSegurancaInfo> itensSeguranca =
                (from c in listaComandos
                 select c.Seguranca).ToList();

            // Solicita validação dos itens
            ValidarItemSegurancaResponse respostaValidacao =
                servicoSeguranca.ValidarItemSeguranca(
                    new ValidarItemSegurancaRequest()
            {
                CodigoSessao   = parametros.CodigoSessao,
                ItensSeguranca = itensSeguranca
            });

            // Cria dicionario com os itens validados para reassociar aos comandos
            Dictionary <string, ItemSegurancaInfo> dicionarioItens = new Dictionary <string, ItemSegurancaInfo>();

            foreach (ItemSegurancaInfo item in respostaValidacao.ItensSeguranca)
            {
                dicionarioItens.Add(item.Tag, item);
            }

            // Reassocia itens de segurança validado aos comandos
            foreach (ComandoInterfaceInfo comando in listaComandos)
            {
                if (dicionarioItens.ContainsKey(comando.CodigoComandoInterface))
                {
                    comando.Seguranca = dicionarioItens[comando.CodigoComandoInterface];
                }
            }

            // Cria dicionário de pais e filhos
            // O dicionário está montado como codigoFilho, codigoPai
            Dictionary <string, ComandoInterfaceInfo> dicionarioPaisFilhos = new Dictionary <string, ComandoInterfaceInfo>();

            foreach (ComandoInterfaceInfo comandoPai in listaComandos)
            {
                foreach (ComandoInterfaceInfo comandoFilho in comandoPai.Filhos)
                {
                    dicionarioPaisFilhos.Add(comandoFilho.CodigoComandoInterface, comandoPai);
                }
            }

            // Remove os não válidados pela segurança
            List <ComandoInterfaceInfo> comandosRemover =
                (from c in listaComandos
                 where !c.Seguranca.Valido.HasValue || c.Seguranca.Valido.Value == false
                 select c).ToList();

            foreach (ComandoInterfaceInfo comandoRemover in comandosRemover)
            {
                if (dicionarioPaisFilhos.ContainsKey(comandoRemover.CodigoComandoInterface))
                {
                    dicionarioPaisFilhos[comandoRemover.CodigoComandoInterface].Filhos.Remove(comandoRemover);
                }
                else
                {
                    respostaReceber.GrupoComandoInterface.ComandosInterfaceRaiz.Remove(comandoRemover);
                }
            }

            // Remover os menus de grupo que não tem filhos
            List <ComandoInterfaceInfo> comandosRemover2 =
                (from c in listaComandos
                 where listaGrupos.Contains(c.CodigoComandoInterface) && c.Filhos.Count == 0
                 select c).ToList();

            foreach (ComandoInterfaceInfo comandoRemover in comandosRemover2)
            {
                if (dicionarioPaisFilhos.ContainsKey(comandoRemover.CodigoComandoInterface))
                {
                    dicionarioPaisFilhos[comandoRemover.CodigoComandoInterface].Filhos.Remove(comandoRemover);
                }
                else
                {
                    respostaReceber.GrupoComandoInterface.ComandosInterfaceRaiz.Remove(comandoRemover);
                }
            }

            // Retorna a arvore
            resposta.ComandosInterfaceRaiz = respostaReceber.GrupoComandoInterface.ComandosInterfaceRaiz;

            // Retorna
            return(resposta);
        }