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(); } }
public void SetRootMenu(CompositeMenu rootMenu) { RootMenu = rootMenu; if (!(this is CompositeMenu)) { return; } foreach (var childMenu in ((CompositeMenu)this).Menus) { childMenu.SetRootMenu(rootMenu); } }
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); }
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); }
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); }