Ejemplo n.º 1
0
        public static async Task <bool> EnsureMenuElements(IServiceProvider service)
        {
            RoleManager <UserRole> roleManager           = service.GetRequiredService <RoleManager <UserRole> >();
            IMenuElementRepository menuElementRepository = service.GetRequiredService <IMenuElementRepository>();

            var menuItems = typeof(RolesHelper).GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static)
                            .Where(fi => fi.IsPrivate && fi.IsStatic && fi.FieldType == typeof(MenuItem))
                            .Select(x => (MenuItem)x.GetValue(new MenuItem()))
                            .ToList();

            //заполняем элементы меню в таблицу
            if (menuElementRepository.GetMenuElementsCount() < menuItems.Count)
            {
                menuElementRepository.AddMenuElements(
                    menuItems.Select(elem => new MenuElement
                {
                    Title             = elem.Title,
                    AspAreaName       = elem.AspAreaName,
                    AspActionName     = elem.AspActionName,
                    AspControllerName = elem.AspControllerName
                }).ToList());
            }

            //производим соединение между ролью и элементами меню и заполняем таблицу элементов меню
            foreach (var menu in RolesHelper.RolesMenus)
            {
                var role = await roleManager.FindByNameAsync(menu.Key);

                if (menuElementRepository.GetMenuElementsForRole(role.Name).Count == 0)
                {
                    menuElementRepository.SetMenuElementsForRole(role, menu.Value.MenuItems
                                                                 .Select(elem =>
                                                                         new MenuElement(
                                                                             elem.Title,
                                                                             elem.AspAreaName,
                                                                             elem.AspControllerName,
                                                                             elem.AspActionName))
                                                                 .ToList());
                }
            }
            return(true);
        }
Ejemplo n.º 2
0
 public TopMenuViewComponent(UserManager <User> userManager, IMenuElementRepository menuElementRepository /*MenuService<MenuForRole> menuService*/)
 {
     //_menuService = menuService;
     _userManager            = userManager;
     _menuElementsRepository = menuElementRepository;
 }