/// <summary> /// Genera el html para los hijos /// </summary> /// <param name="menuItem">item de menu</param> /// <param name="html">html</param> /// <param name="profileModules">módulos del perfil</param> public static void MakeHTMLItem(Module menuItem, ref string html, List <Module> rolModules) { string actions = string.Empty; //Agrego accion para todos los items de menu hijos que sean de tipo accion y esten en el perfil menuItem.Children.Where(x => x.Type == ModulesType.ACTION && rolModules.Select(y => y.EntityID).Contains(x.EntityID) && x.Activo).ToList().ForEach(x => actions += x.Action + " "); actions = actions.Trim(); //Si tiene hijos para el perfil if (menuItem.Children.Where(x => (x.Type == ModulesType.MENU_ACTION || x.Type == ModulesType.MENU_ITEM) && rolModules.Select(y => y.EntityID).Contains(x.EntityID) && x.Activo).ToList().Count > 0) { //Etiqueta de apertura de lista html += HtmlGenerator.OpenParentListItem(menuItem.Action, menuItem.Icon, menuItem.Caption, actions); //Para cada hijo foreach (Module childItem in menuItem.Children.Where(x => rolModules.Select(y => y.EntityID).Contains(x.EntityID)).OrderBy(x => x.Order)) { //Creo html para el hijo MakeHTMLItem(childItem, ref html, rolModules); } //Etiqueta de cierre de lista html += HtmlGenerator.CloseParentListItem(); } else { html += HtmlGenerator.AddListItem(menuItem.Action, menuItem.Icon, menuItem.Caption, actions); } }
/// <summary> /// Genera el Html para el menu /// </summary> /// <param name="menuItems">Items del menu ordenados en cascada</param> /// <param name="profileModules">Items de menu del perfil</param> /// <returns></returns> public static string MakeHTMLMenu(List <Module> menuItems, List <Module> rolModules) { var htmlMenu = HtmlGenerator.OpenMenuClass(); //Itero sobre los items que tenga el perfil foreach (Module menuItem in menuItems.Where(x => x.Parent == null && rolModules.Select(y => y.EntityID).Contains(x.EntityID)).OrderBy(x => x.Order)) { MakeHTMLItem(menuItem, ref htmlMenu, rolModules); } htmlMenu += HtmlGenerator.CloseMenuClass(); return(htmlMenu); }