Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
                    }
                }
            }
        }