示例#1
0
        public void UpdateForums(long projectId)
        {
            if (m_forumOptions.IsEnabled == false)
            {
                return;
            }

            var work    = new GetProjectWork(m_projectRepository, m_metadataRepository, projectId, true, true, false, true);
            var project = work.Execute();

            if (project == null)
            {
                throw new ForumException(MainServiceErrorCode.ProjectNotExist, "Project does not exist.");
            }

            var projectDetailContract = m_mapper.Map <ProjectDetailContract>(project);

            projectDetailContract.PageCount = work.GetPageCount();
            var bookTypeIds = project.LatestPublishedSnapshot.BookTypes.Select(x => (short)x.Type).ToArray();

            if (project.ForumId != null)
            {
                m_forumManager.UpdateForum(projectDetailContract, bookTypeIds);
            }
        }
示例#2
0
        public ProjectContract GetProject(long projectId)
        {
            var work         = new GetProjectWork(m_projectRepository, projectId);
            var resultEntity = work.Execute();

            var result = Mapper.Map <ProjectContract>(resultEntity);

            return(result);
        }
示例#3
0
        public int?CreateOrUpdateForums(long projectId, short[] bookTypeIds = null)
        {
            if (m_forumOptions.IsEnabled == false)
            {
                return(null);
            }

            var work    = new GetProjectWork(m_projectRepository, m_metadataRepository, projectId, true, true, false, true);
            var project = work.Execute();

            if (project == null)
            {
                throw new ForumException(MainServiceErrorCode.ProjectNotExist, "The project does not exist.");
            }

            var projectDetailContract = m_mapper.Map <ProjectDetailContract>(project);

            projectDetailContract.PageCount = work.GetPageCount();
            if (bookTypeIds == null && project.LatestPublishedSnapshot != null)
            {
                bookTypeIds = project.LatestPublishedSnapshot.BookTypes.Select(x => (short)x.Type).ToArray();
            }


            if (project.ForumId != null)
            {
                m_forumManager.UpdateForum(projectDetailContract, bookTypeIds);
            }

            var forum = m_forumManager.GetForumByExternalId(project.Id);

            if (forum == null)
            {
                //Create forum
                var forumId = m_forumManager.CreateNewForum(projectDetailContract, bookTypeIds);
                new SetForumIdToProjectWork(m_projectRepository, projectId, forumId).Execute();
                return(forumId);
            }

            //Forum is created, but not connect with project -> set ForumId to Project
            new SetForumIdToProjectWork(m_projectRepository, projectId, forum.ForumID).Execute();
            return(forum.ForumID);
        }
示例#4
0
        public ProjectDetailContract GetProject(long projectId, bool fetchPageCount, bool fetchAuthors, bool fetchResponsiblePersons,
                                                bool fetchPermissions)
        {
            var userId = m_authenticationManager.GetCurrentUserId();

            var work = new GetProjectWork(m_projectRepository, m_metadataRepository, projectId, fetchPageCount, fetchAuthors,
                                          fetchResponsiblePersons, false);
            var project = work.Execute();

            if (project == null)
            {
                return(null);
            }

            var metadataResource = work.GetMetadataResource();
            var result           = m_mapper.Map <ProjectDetailContract>(project);

            result.CreatedByUser  = m_userDetailManager.GetUserContractForUser(result.CreatedByUser);
            result.LatestMetadata = m_mapper.Map <ProjectMetadataContract>(metadataResource);
            result.PageCount      = work.GetPageCount();

            if (fetchAuthors && metadataResource != null)
            {
                result.Authors = m_mapper.Map <List <OriginalAuthorContract> >(metadataResource.Resource.Project.Authors);
            }

            if (fetchResponsiblePersons && metadataResource != null)
            {
                result.ResponsiblePersons =
                    m_mapper.Map <List <ProjectResponsiblePersonContract> >(metadataResource.Resource.Project.ResponsiblePersons);
            }

            if (fetchPermissions)
            {
                var permissions = m_projectRepository.InvokeUnitOfWork(x => x.FindPermissionsForProjectsByUserId(new[] { projectId }, userId));
                result.CurrentUserPermissions = m_projectPermissionConverter.GetAggregatedPermissions(permissions);
            }

            return(result);
        }