/// <summary>
 /// Inicializa as views de permissão
 /// </summary>
 private void InicializaView()
 {
     if (this.permissaoAcesso == null)
     {
         this.permissaoAcesso = new PermissaoAcessoViewModel();
     }
 }
        public ActionResult Permissao(PermissaoAcessoViewModel modelo)
        {
            if (this.Logado != ((char)Enums.Logado.Sim).ToString())
            {
                return(this.RedirectToAction("Login", "Login"));
            }

            try
            {
                this.InicializaView();

                permissaoAcesso     = modelo;
                modelo.LoginUsuario = modelo.LoginUsuario.ToLower();

                var N9999USUBusiness = new N9999USUBusiness();

                // Busca código do usuário
                var dadosUsuario = N9999USUBusiness.ListaDadosUsuarioPorLogin(modelo.LoginUsuario);

                if (dadosUsuario == null)
                {
                    // Se usuário não cadastrado no NWORKFLOW, cadastra o mesmo.
                    N9999USUBusiness.CadastrarUsuario(modelo.LoginUsuario);

                    // Busca código do usuário cadastrado
                    dadosUsuario = N9999USUBusiness.ListaDadosUsuarioPorLogin(modelo.LoginUsuario);
                }

                var n9999MENBusiness = new N9999MENBusiness();

                // Lista todos os itens do menu, telas e operações que o usuário pesquisado já possuí algum tipo de operação
                var lista = n9999MENBusiness.MontarTreeViewPermissoes(dadosUsuario.CODUSU, (int)Enums.Sistema.NWORKFLOW);

                // Id dos itens da treeview que o usuário já possuí acesso para "checkagem" após o load da treeview;
                foreach (MenuModel item in lista.Where(p => p.PERMEN == ((char)Enums.Operacao.Pesquisar).ToString()).ToList())
                {
                    permissaoAcesso.menusOperacaoUser = permissaoAcesso.menusOperacaoUser + "#" + item.CODMEN.ToString() + item.PERMEN + "-";

                    if (item.INSMEN == ((char)Enums.Operacao.Inserir).ToString())
                    {
                        permissaoAcesso.menusOperacaoUser = permissaoAcesso.menusOperacaoUser + "#" + item.CODMEN.ToString() + item.INSMEN + "-";
                    }
                    if (item.ALTMEN == ((char)Enums.Operacao.Alterar).ToString())
                    {
                        permissaoAcesso.menusOperacaoUser = permissaoAcesso.menusOperacaoUser + "#" + item.CODMEN.ToString() + item.ALTMEN + "-";
                    }
                    if (item.EXCMEN == ((char)Enums.Operacao.Excluir).ToString())
                    {
                        permissaoAcesso.menusOperacaoUser = permissaoAcesso.menusOperacaoUser + "#" + item.CODMEN.ToString() + item.EXCMEN + "-";
                    }
                }

                this.PermissoesDeAcessoGerenciamento = lista;

                return(this.View("Permissao", this.permissaoAcesso));
            }
            catch (Exception ex)
            {
                this.Session["ExceptionErro"] = ex;
                return(this.RedirectToAction("ErroException", "Erro"));
            }
        }