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); }