/// <summary> /// Adiciona as funções que este menu possui como filhas do mesmo /// </summary> /// <param name="node"></param> /// <param name="funcionario"></param> /// <param name="tipoFunc"></param> /// <param name="funcoes"></param> /// <param name="menu"></param> private void CriaFuncoes(ref TreeNode node, Funcionario funcionario, TipoFuncionario tipoFunc, List <FuncaoMenu> funcoes, Glass.Global.Negocios.Entidades.Menu menu) { var funcoesMenu = funcoes.Where(f => f.IdMenu == menu.IdMenu); foreach (var funcao in funcoesMenu) { var nodeFuncao = new TreeNode(funcao.Descricao); nodeFuncao.Value = string.Format("f|{0}", funcao.IdFuncaoMenu.ToString()); nodeFuncao.SelectAction = TreeNodeSelectAction.None; if (UserInfo.GetUserInfo.IsAdministrador) { nodeFuncao.ShowCheckBox = true; nodeFuncao.ImageUrl = "~/Images/gear.gif"; // Verifica se o funcionário/tipo possui acesso à esta função if (funcionario != null) { nodeFuncao.Checked = funcionario.ConfigsFuncaoFunc.Any(f => f.IdFuncaoMenu == funcao.IdFuncaoMenu); } else { nodeFuncao.Checked = tipoFunc.ConfigsFuncaoTipoFunc.Any(f => f.IdFuncaoMenu == funcao.IdFuncaoMenu); } } else { // Verifica se o funcionário/tipo possui acesso à esta função if (funcionario != null) { nodeFuncao.ImageUrl += funcionario.ConfigsFuncaoFunc.Any(f => f.IdFuncaoMenu == funcao.IdFuncaoMenu) ? "~/Images/validacao.gif" : ""; } else { nodeFuncao.ImageUrl += tipoFunc.ConfigsFuncaoTipoFunc.Any(f => f.IdFuncaoMenu == funcao.IdFuncaoMenu) ? "~/Images/validacao.gif" : ""; } } node.ChildNodes.Add(nodeFuncao); } }
/// <summary> /// Função recursiva que monta a treeview em vários níveis /// </summary> /// <param name="nodePai"></param> /// <param name="funcionario"></param> /// <param name="tipoFunc"></param> /// <param name="idMenuInicial"></param> /// <param name="menuPai"></param> /// <param name="menusModulo"></param> /// <param name="funcoes"></param> protected void CriaItensTreeView(ref TreeNode nodePai, Funcionario funcionario, TipoFuncionario tipoFunc, Glass.Global.Negocios.Entidades.Menu menuPai, List <Glass.Global.Negocios.Entidades.Menu> menusModulo, List <FuncaoMenu> funcoes) { // Caso este menu possua filhos, adiciona-os na iteração abaixo foreach (var menu in menusModulo.Where(f => f.IdMenuPai == menuPai.IdMenu)) { nodePai.ChildNodes.Add(PreencheNo(funcionario, tipoFunc, menusModulo, funcoes, menu)); } }
/// <summary> /// Preenche um nó da treeview /// </summary> /// <param name="nodePai"></param> /// <param name="funcionario"></param> /// <param name="menusModulo"></param> /// <param name="funcoes"></param> /// <param name="menu"></param> private TreeNode PreencheNo(Funcionario funcionario, TipoFuncionario tipoFunc, List <Glass.Global.Negocios.Entidades.Menu> menusModulo, List <FuncaoMenu> funcoes, Glass.Global.Negocios.Entidades.Menu menu) { var node = new TreeNode(menu.Nome); node.Value = string.Format("m|{0}", menu.IdMenu.ToString()); node.SelectAction = TreeNodeSelectAction.Expand; node.Expanded = false; CriaFuncoes(ref node, funcionario, tipoFunc, funcoes, menu); // Cria os filhos deste menu CriaItensTreeView(ref node, funcionario, tipoFunc, menu, menusModulo, funcoes); if (UserInfo.GetUserInfo.IsAdministrador) { node.ImageUrl = "~/Images/Menu.png"; node.ShowCheckBox = funcionario == null || funcionario.TipoFuncionario.IdTipoFuncionario != (int)Data.Helper.Utils.TipoFuncionario.MarcadorProducao; // Verifica se o usuário possui acesso à este menu if (funcionario != null) { node.Checked = funcionario.ConfigsMenuFunc.Any(f => f.IdMenu == menu.IdMenu); } else { node.Checked = tipoFunc.ConfigsMenuTipoFunc.Any(f => f.IdMenu == menu.IdMenu); } } else { // Verifica se o funcionário/tipo possui acesso à esta função if (funcionario != null) { node.ImageUrl += funcionario.ConfigsMenuFunc.Any(f => f.IdMenu == menu.IdMenu) ? "~/Images/validacao.gif" : ""; } else { node.ImageUrl += tipoFunc.ConfigsMenuTipoFunc.Any(f => f.IdMenu == menu.IdMenu) ? "~/Images/validacao.gif" : ""; } } return(node); }