private FrameworkMenu GetMenu2(List <FrameworkModule> allModules, string controllerName, List <FrameworkRole> allowedRoles, List <FrameworkUserBase> allowedUsers, int displayOrder) { var acts = allModules.Where(x => x.FullName == $"WalkingTec.Mvvm.Admin.Api,{controllerName}" && x.IsApi == true).SelectMany(x => x.Actions).ToList(); var rest = acts.Where(x => x.IgnorePrivillege == false).ToList(); FrameworkAction act = null; if (acts.Count > 0) { act = acts[0]; } FrameworkMenu menu = GetMenuFromAction(act, true, allowedRoles, allowedUsers, displayOrder); if (menu != null) { menu.Url = "/" + acts[0].Module.ClassName.ToLower(); menu.ModuleName = menu.ModuleName; menu.PageName = menu.ModuleName; menu.ActionName = "MainPage"; menu.ClassName = acts[0].Module.FullName; menu.MethodName = null; for (int i = 0; i < rest.Count; i++) { if (rest[i] != null) { menu.Children.Add(GetMenuFromAction(rest[i], false, allowedRoles, allowedUsers, (i + 1))); } } } return(menu); }
private FrameworkMenu GetMenuFromAction(FrameworkAction act, bool isMainLink, List <FrameworkRole> allowedRoles, List <FrameworkUserBase> allowedUsers, int displayOrder = 1) { if (act == null) { return(null); } FrameworkMenu menu = new FrameworkMenu { ActionId = act.ID, ModuleId = act.ModuleId, Url = "/" + act.Module.ClassName + "/" + act.MethodName, Privileges = new List <FunctionPrivilege>(), ShowOnMenu = isMainLink, FolderOnly = false, Children = new List <FrameworkMenu>(), IsInherit = true, IsPublic = false, IsInside = true, DisplayOrder = displayOrder, CreateTime = DateTime.Now }; if (act.Module.Area != null) { menu.Url = "/" + act.Module.Area.Prefix + menu.Url; } if (isMainLink) { menu.PageName = act.Module.ModuleName; menu.ModuleName = act.Module.ModuleName; menu.ActionName = act.ActionName; } else { menu.PageName = act.ActionName; menu.ModuleName = act.Module.ModuleName; menu.ActionName = act.ActionName; } if (allowedRoles != null) { foreach (var role in allowedRoles) { menu.Privileges.Add(new FunctionPrivilege { RoleId = role.ID, Allowed = true }); } } if (allowedUsers != null) { foreach (var user in allowedUsers) { menu.Privileges.Add(new FunctionPrivilege { UserId = user.ID, Allowed = true }); } } return(menu); }