public static AuthMenuItem ToEntity(this AuthMenuItemMsg msg) { AuthMenuItem entity = null; if (msg != null) { entity = new AuthMenuItem() { Id = msg.MenuId.ToString(), Name = msg.DisplayName, Description = msg.Description, IconStyle = msg.IconStyle, IsDisplay = msg.IsDisplay, URL = msg.LinkPath, Type = msg.Type.ToEntity(), AuthKey = msg.AuthKey }; } return(entity); }
public static void GenerateAuthItems(this ObservableCollection <AuthMenuItemMsg> dataItems, AuthMenuItemMsg parentItem, ref ObservableCollection <AuthMenuItem> menuItems, ref ObservableCollection <AuthMenuItem> navigateItems, ref ObservableCollection <AuthMenuItem> authUris) { menuItems = new ObservableCollection <AuthMenuItem>(); navigateItems = new ObservableCollection <AuthMenuItem>(); if (dataItems != null) { // 1、Find matched items List <AuthMenuItemMsg> matchedItems = new List <AuthMenuItemMsg>(); foreach (AuthMenuItemMsg item in dataItems) { if ((parentItem == null && item.ParentMenuId == null) || (parentItem != null && item.ParentMenuId == parentItem.MenuId)) { matchedItems.Add(item); } } // 2、Remove matched items from original collection foreach (AuthMenuItemMsg item in matchedItems) { dataItems.Remove(item); } // 3、Find children for matched items foreach (AuthMenuItemMsg item in matchedItems) { ObservableCollection <AuthMenuItem> subMenuItems = null; ObservableCollection <AuthMenuItem> subNavigateItems = null; GenerateAuthItems(dataItems, item, ref subMenuItems, ref subNavigateItems, ref authUris); if (item.Type == MenuTypeEnum.Page || item.Type == MenuTypeEnum.Link || subMenuItems.Count > 0) { if (item.IsDisplay) { AuthMenuItem menuItem = item.ToEntity(); menuItem.Items = subMenuItems; menuItems.Add(menuItem); } } if (item.Type == MenuTypeEnum.Page || item.Type == MenuTypeEnum.Link || subNavigateItems.Count > 0) { AuthMenuItem menuItem = item.ToEntity(); menuItem.Items = subNavigateItems; navigateItems.Add(menuItem); } if (item.Type == MenuTypeEnum.Category || item.Type == MenuTypeEnum.Page || item.Type == MenuTypeEnum.Link) { var a = item.ToEntity(); a.Parent = parentItem.ToEntity(); authUris.Add(a); } } } }