public virtual string BuildUrl(MainMenuItemWrapper current, IEnumerable <MainMenuItemWrapper> items, MenuOrigin origin)
        {
            var categoryHierarchy = GetCategoryHierarchy(items, current);

            return(BuildUrl(current.Url, current.DisplayName, categoryHierarchy, origin));
        }
        /// <summary>
        /// Get the hierarchy of a MainMenu collection from C1
        /// </summary>
        /// <param name="items"></param>
        /// <param name="currentItem"></param>
        /// <returns></returns>
        private IEnumerable <string> GetHierarchy(IEnumerable <MainMenuItemWrapper> items, MainMenuItemWrapper currentItem)
        {
            yield return(SanatizeDisplayName(currentItem.DisplayName));

            while (currentItem.ParentId.HasValue)
            {
                var parent = items.First(x => x.Id.Equals(currentItem.ParentId.Value));
                yield return(SanatizeDisplayName(parent.DisplayName));

                currentItem = parent;
            }
        }
        protected virtual NameValueCollection GetCategoryHierarchy(IEnumerable <MainMenuItemWrapper> items, MainMenuItemWrapper currentItem)
        {
            var collection = new NameValueCollection();
            var hierarchy  = GetHierarchy(items, currentItem).Reverse().ToArray();

            return(BuildCategoryHierarchyQueryStringParameters(hierarchy));
        }