public SearchResultDetailContract GetBookDetail(long projectId) { m_authorizationManager.AuthorizeBook(projectId, PermissionFlag.ShowPublished); var metadataResult = m_metadataRepository.InvokeUnitOfWork(x => x.GetMetadataWithDetail(projectId)); var result = m_mapper.Map <SearchResultDetailContract>(metadataResult); if (metadataResult.Resource.Project.ForumId != null) { result.ForumUrl = m_forumSiteUrlHelper.GetTopicsUrl((int)metadataResult.Resource.Project.ForumId); } return(result); }
private void CreateVirtualForumsForOtherBookTypes(Forum forum) { for (var i = 1; i < m_bookTypeIds.Length; i++) { var tempForum = new Forum(m_project.Name, m_categoryRepository.GetCategoryByExternalId(m_bookTypeIds[i]), (short)ForumTypeEnum.Forum) { ExternalProjectId = m_project.Id, RemoteURL = m_forumSiteUrlHelper.GetTopicsUrl(forum.ForumID) }; m_categoryRepository.Create(tempForum); m_forumAccessSubwork.SetAdminAccessToForumForAdminGroup(tempForum); m_forumAccessSubwork.SetMemberAccessToForumForRegisteredGroup(tempForum); } }
public ForumContract GetForum(long projectId) { if (m_forumOptions.IsEnabled == false) { return(null); } var forum = m_forumManager.GetForumByExternalId(projectId); if (forum == null) { return(null); } var result = m_mapper.Map <ForumContract>(forum); result.Url = m_forumSiteUrlHelper.GetTopicsUrl(result.Id); return(result); }
protected override void ExecuteWorkImplementation() { IList <int> newCategories = m_categoryIds.Except(m_oldCategoryIds).ToList(); IList <int> deletedCategories = m_oldCategoryIds.Except(m_categoryIds).ToList(); var mainForum = m_forumRepository.GetMainForumByExternalProjectId(m_projectId); if (mainForum == null) { return; } var forumCategoriesToDelete = m_forumRepository.GetForumsByExternalCategoryIds(deletedCategories); var forums = m_forumRepository.GetForumsByExternalProjectId(m_projectId); foreach (var forum in forums) { if (forumCategoriesToDelete.Contains(forum.ParentForum)) { var forumAccesses = m_forumRepository.GetAllAccessesForForum(forum.ForumID); m_forumRepository.DeleteAll(forumAccesses); m_forumRepository.Delete(forum); } } var forumsToCreate = m_forumRepository.GetForumsByExternalCategoryIds(newCategories); foreach (var forum in forumsToCreate) { var tempForum = new Forum(mainForum.Name, forum.Category, (short)ForumTypeEnum.Forum) { ExternalProjectId = m_projectId, ParentForum = forum, RemoteURL = m_forumSiteUrlHelper.GetTopicsUrl(mainForum.ForumID) }; m_forumRepository.Create(tempForum); m_forumAccessSubwork.SetAdminAccessToForumForAdminGroup(tempForum); } }
private List <SearchResultContract> MapToSearchResult(IList <MetadataResource> dbResult, IList <PageCountResult> dbPageCounts, IList <PageResource> termHits) { var resultList = new List <SearchResultContract>(dbResult.Count); var termResultDictionary = termHits? .GroupBy(x => x.Resource.Project.Id) .ToDictionary(key => key.Key, val => val.OrderBy(x => x.Position).ToList()); foreach (var dbMetadata in dbResult) { var resultItem = m_mapper.Map <SearchResultContract>(dbMetadata); resultList.Add(resultItem); var pageCountItem = dbPageCounts.FirstOrDefault(x => x.ProjectId == dbMetadata.Resource.Project.Id); resultItem.PageCount = pageCountItem != null ? pageCountItem.PageCount : 0; if (dbMetadata.Resource.Project.ForumId != null) { resultItem.ForumUrl = m_forumSiteUrlHelper.GetTopicsUrl((int)dbMetadata.Resource.Project.ForumId); } if (termResultDictionary != null) { if (!termResultDictionary.TryGetValue(dbMetadata.Resource.Project.Id, out var termPageHitList)) { termPageHitList = new List <PageResource>(); } resultItem.TermPageHits = new SearchTermResultContract { PageHitsCount = termPageHitList.Count, PageHits = m_mapper.Map <List <PageContract> >(termPageHitList), }; } } return(resultList); }