Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
     }
 }
Beispiel #3
0
        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);
            }
        }
Beispiel #5
0
        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);
        }