Example #1
0
        private List <MenuViewModel.MenuItem> PopulateMenuItems(IEnumerable <MenuItem> source, Guid parentId, Guid languageId)
        {
            var result = new List <MenuViewModel.MenuItem>();

            foreach (var menuItem in source.Where(x => x.ParentId == parentId).OrderBy(x => x.SortOrder).ToList())
            {
                var text  = menuItem.Text;
                var title = menuItem.Title;
                var url   = "#";

                if (languageId != Guid.Empty)
                {
                    var menuItemLocalisation = menuItem.MenuItemLocalisations.FirstOrDefault(x => x.LanguageId == languageId);

                    if (menuItemLocalisation != null)
                    {
                        text  = !string.IsNullOrWhiteSpace(menuItemLocalisation.Text) ? menuItemLocalisation.Text : text;
                        title = !string.IsNullOrWhiteSpace(menuItemLocalisation.Title) ? menuItemLocalisation.Title : title;
                    }
                }

                if (menuItem.MenuItemType == MenuItemType.Page)
                {
                    var page = _pageRepository.GetById(menuItem.PageId);

                    if (page == null || page.Status != PageStatus.Active)
                    {
                        continue;
                    }

                    url = $"/{page.Url}";
                }
                else if (menuItem.MenuItemType == MenuItemType.Link && !string.IsNullOrWhiteSpace(menuItem.Link))
                {
                    url = menuItem.Link;
                }

                var menuItemModel = new MenuViewModel.MenuItem
                {
                    Text  = text,
                    Title = title,
                    Url   = url
                };

                menuItemModel.Children.AddRange(PopulateMenuItems(source, menuItem.Id, languageId));

                result.Add(menuItemModel);
            }

            return(result);
        }
Example #2
0
        private List <MenuViewModel.MenuItem> PopulateMenuItems(IEnumerable <MenuItem> source, Guid parentId, Language language)
        {
            var result = new List <MenuViewModel.MenuItem>();

            var menuItems = source as IList <MenuItem> ?? source.ToList();

            foreach (var menuItem in menuItems.Where(x => x.ParentId == parentId).OrderBy(x => x.SortOrder).ToList())
            {
                var menuItemRoleIds = menuItem.MenuItemPermissions.Select(x => x.RoleId);

                var text  = menuItem.Text;
                var title = menuItem.Title;
                var url   = "#";

                if (language != null)
                {
                    var menuItemLocalisation = menuItem.MenuItemLocalisations.FirstOrDefault(x => x.LanguageId == language.Id);

                    if (menuItemLocalisation != null)
                    {
                        text  = !string.IsNullOrWhiteSpace(menuItemLocalisation.Text) ? menuItemLocalisation.Text : text;
                        title = !string.IsNullOrWhiteSpace(menuItemLocalisation.Title) ? menuItemLocalisation.Title : title;
                    }
                }

                if (menuItem.Type == MenuItemType.Page)
                {
                    var page = _pageRepository.GetById(menuItem.PageId);

                    if (page == null)
                    {
                        continue;
                    }

                    url = language == null ? $"/{page.Url}" : $"/{language.Url}/{page.Url}";

                    if (language != null)
                    {
                        var pageLocalisation = page.PageLocalisations.FirstOrDefault(x => x.LanguageId == language.Id);
                        if (pageLocalisation != null)
                        {
                            url = !string.IsNullOrEmpty(pageLocalisation.Url) ? $"/{language.Url}/{pageLocalisation.Url}" : url;
                        }
                    }

                    menuItemRoleIds = page.PagePermissions.Where(x => x.Type == PermissionType.View).Select(x => x.RoleId);
                }
                else if (menuItem.Type == MenuItemType.Link && !string.IsNullOrWhiteSpace(menuItem.Link))
                {
                    url = menuItem.Link;
                }

                var menuItemRoles = _roleService.GetRolesFromIds(menuItemRoleIds);

                var menuItemModel = new MenuViewModel.MenuItem
                {
                    Text      = text,
                    Title     = title,
                    Url       = url,
                    ViewRoles = menuItemRoles.Select(x => x.Name)
                };

                menuItemModel.Children.AddRange(PopulateMenuItems(menuItems, menuItem.Id, language));

                result.Add(menuItemModel);
            }

            return(result);
        }