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); } }
public ProjectContract GetProject(long projectId) { var work = new GetProjectWork(m_projectRepository, projectId); var resultEntity = work.Execute(); var result = Mapper.Map <ProjectContract>(resultEntity); return(result); }
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); }
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); }