Beispiel #1
0
        public void UpdateRootMenu(int rootMenuId, CompositeMenu menu)
        {
            using (var tran = _unitOfWorkManager.Begin())
            {
                var oldMenu = MenuRepository.FirstOrDefault(e => e.Id == rootMenuId);

                SetMenuInvalidForCache(oldMenu.Name);

                // 移除根菜单所有菜单
                MenuRepository.Delete(e => e.RootMenuId == rootMenuId || e.Id == rootMenuId);

                _unitOfWorkManager.Current.SaveChanges();

                var menus = GetMenus(menu);
                // 不允许存在相同名称的菜单
                var names = menus.Select(e => e.Name);
                if (names.Distinct().Count() < names.Count())
                {
                    throw new UserFriendlyException($"提交的菜单中包含重复的名称,请重新命名");
                }
                var duplicateMenu = MenuRepository.FirstOrDefault(e => names.Contains(e.Name));
                if (duplicateMenu != null)
                {
                    throw new UserFriendlyException($"菜单{duplicateMenu.Name}以存在,请重新命名");
                }

                MenuRepository.Insert(menu);

                _unitOfWorkManager.Current.SaveChanges();

                tran.Complete();
            }
        }
Beispiel #2
0
        public void SetRootMenu(CompositeMenu rootMenu)
        {
            RootMenu = rootMenu;

            if (!(this is CompositeMenu))
            {
                return;
            }

            foreach (var childMenu in ((CompositeMenu)this).Menus)
            {
                childMenu.SetRootMenu(rootMenu);
            }
        }
Beispiel #3
0
        public void AddCompositeMenu(CompositeMenu menu)
        {
            if (menu.CompositeMenuId.HasValue && GetCompositeMenu(menu.CompositeMenuId.Value) == null)
            {
                throw new MessageException("无效的父菜单");
            }

            if (IsExistMenuName(menu.Name))
            {
                throw new MessageException("该菜单名称已存在");
            }

            MenuRepository.Insert(menu);
        }
Beispiel #4
0
        public void AddRootMenu(CompositeMenu menu)
        {
            var menus = GetMenus(menu);

            // 不允许存在相同名称的菜单
            var names         = menus.Select(e => e.Name);
            var duplicateMenu = MenuRepository.FirstOrDefault(e => names.Contains(e.Name));

            if (duplicateMenu != null)
            {
                throw new UserFriendlyException($"菜单{duplicateMenu.Name}以存在,请重新命名");
            }

            MenuRepository.Insert(menu);
        }
Beispiel #5
0
        private List <MenuBase> GetMenus(MenuBase menu)
        {
            List <MenuBase> menus = new List <MenuBase>();

            menus.Add(menu);

            if (!(menu is CompositeMenu))
            {
                return(menus);
            }

            CompositeMenu compositeMenu = (CompositeMenu)menu;

            foreach (var childMenu in compositeMenu.Menus)
            {
                menus.AddRange(GetMenus(childMenu));
            }

            return(menus);
        }