Ejemplo n.º 1
0
            public void CreateMainMenu(string primaryParentCategoryId, Guid?parentMainMenuId, int depth)
            {
                if (depth == 0)
                {
                    return;
                }
                Categories.Where(d => d.PrimaryParentCategoryId == primaryParentCategoryId).ToList().ForEach(cat =>
                {
                    Guid pageId;
                    if (PageIds.TryGetValue(cat.Id, out pageId))
                    {
                        var mainMenu               = DataFacade.BuildNew <MainMenu>();
                        mainMenu.Id                = GuidUtility.Create(NavigationNamespaces.MainMenuNamespaceId, cat.Id);
                        mainMenu.PageId            = WebsiteId;
                        mainMenu.DisplayName       = GetLocalizedDisplayName(cat.Id, cat.DisplayName, Culture);
                        mainMenu.CssClassName      = string.Empty;
                        mainMenu.ParentId          = parentMainMenuId;
                        mainMenu.Url               = $"~/page({pageId})";
                        mainMenu.PublicationStatus = GenericPublishProcessController.Draft;

                        TruncateStrings(cat.Id, mainMenu);

                        mainMenu = DataFacade.AddNew(mainMenu);

                        mainMenu.PublicationStatus = GenericPublishProcessController.Published;
                        DataFacade.Update(mainMenu);

                        CreateMainMenu(cat.Id, mainMenu.Id, depth - 1);
                    }
                });
            }
        public bool MergePageResponseDetail(PageResponseDetail pageResponseDetail)
        {
            // Assume that the page has been updated
            var hasBeenUpdated = true;

            if (PageResponseDetailList.Count > 0)
            {
                // Check if the page already exists in the PageResponseDetail.
                // Either the index to the existing page response detail will be returned
                // or a negative number which is the one's complement of the insertion point will be returned.
                int index = GetPageResponseDetailIndexByPageNumber(pageResponseDetail.PageNumber);
                if (index >= 0)
                {
                    // Check to see if the page has been updated
                    hasBeenUpdated = !(PageResponseDetailList[index].Equals(pageResponseDetail));
                    if (hasBeenUpdated)
                    {
                        pageResponseDetail.HasBeenUpdated = hasBeenUpdated;
                        PageResponseDetailList[index]     = pageResponseDetail;
                    }
                }
                else
                {
                    hasBeenUpdated = true;
                    pageResponseDetail.HasBeenUpdated = hasBeenUpdated;

                    // The one's complement is the insertion index
                    index = ~index;

                    if (index >= PageResponseDetailList.Count)
                    {
                        PageResponseDetailList.Add(pageResponseDetail);
                    }
                    else
                    {
                        PageResponseDetailList.Insert(index, pageResponseDetail);
                    }
                }
            }
            else
            {
                hasBeenUpdated = true;
                pageResponseDetail.HasBeenUpdated = hasBeenUpdated;
                PageResponseDetailList.Add(pageResponseDetail);
            }

            if (!PageIds.Contains(pageResponseDetail.PageId))
            {
                PageIds.Add(pageResponseDetail.PageId);
                PageIds.Sort();
            }

            return(hasBeenUpdated);
        }