public ProjectMetadataResultContract GetProjectMetadata(long projectId, GetProjectMetadataParameter parameters)
        {
            var work           = new GetLatestProjectMetadataWork(m_metadataRepository, projectId, parameters);
            var result         = work.Execute();
            var resultContract = result != null
                ? Mapper.Map <ProjectMetadataResultContract>(result)
                : new ProjectMetadataResultContract
            {
                Publisher = new PublisherContract()
            };

            if (result != null && parameters.IsAnyAdditionalParameter())
            {
                var project = result.Resource.Project;

                if (parameters.IncludeAuthor)
                {
                    resultContract.AuthorList = Mapper.Map <List <OriginalAuthorContract> >(project.Authors);
                }
                if (parameters.IncludeResponsiblePerson)
                {
                    resultContract.ResponsiblePersonList = Mapper.Map <List <ResponsiblePersonContract> >(project.ResponsiblePersons);
                }
                if (parameters.IncludeKind)
                {
                    resultContract.LiteraryKindList = Mapper.Map <List <LiteraryKindContract> >(project.LiteraryKinds);
                }
                if (parameters.IncludeGenre)
                {
                    resultContract.LiteraryGenreList = Mapper.Map <List <LiteraryGenreContract> >(project.LiteraryGenres);
                }
            }

            return(resultContract);
        }
示例#2
0
        public ProjectMetadataResultContract GetProjectMetadata(long projectId, GetProjectMetadataParameter parameters)
        {
            var work           = new GetLatestProjectMetadataWork(m_metadataRepository, projectId, parameters);
            var result         = work.Execute();
            var resultContract = result != null
                ? m_mapper.Map <ProjectMetadataResultContract>(result)
                : new ProjectMetadataResultContract();

            if (parameters.IsAnyAdditionalParameter())
            {
                var project = work.GetProjectWithAdditionalData();

                if (parameters.IncludeAuthor)
                {
                    resultContract.AuthorList = m_mapper.Map <List <OriginalAuthorContract> >(project.Authors);
                }
                if (parameters.IncludeResponsiblePerson)
                {
                    resultContract.ResponsiblePersonList = m_mapper.Map <List <ProjectResponsiblePersonContract> >(project.ResponsiblePersons);
                }
                if (parameters.IncludeKind)
                {
                    resultContract.LiteraryKindList = m_mapper.Map <List <LiteraryKindContract> >(project.LiteraryKinds);
                }
                if (parameters.IncludeGenre)
                {
                    resultContract.LiteraryGenreList = m_mapper.Map <List <LiteraryGenreContract> >(project.LiteraryGenres);
                }
                if (parameters.IncludeOriginal)
                {
                    resultContract.LiteraryOriginalList = m_mapper.Map <List <LiteraryOriginalContract> >(project.LiteraryOriginals);
                }
                if (parameters.IncludeKeyword)
                {
                    resultContract.KeywordList = m_mapper.Map <List <KeywordContract> >(project.Keywords);
                }
                if (parameters.IncludeCategory)
                {
                    resultContract.CategoryList = m_mapper.Map <List <CategoryContract> >(project.Categories);
                }
            }

            return(resultContract);
        }
示例#3
0
        public IActionResult GetProjectMetadata(long projectId, [FromQuery] bool includeAuthor, [FromQuery] bool includeResponsiblePerson,
                                                [FromQuery] bool includeKind, [FromQuery] bool includeGenre)
        {
            var parameters = new GetProjectMetadataParameter
            {
                IncludeKind              = includeKind,
                IncludeGenre             = includeGenre,
                IncludeResponsiblePerson = includeResponsiblePerson,
                IncludeAuthor            = includeAuthor
            };
            var resultData = m_projectMetadataManager.GetProjectMetadata(projectId, parameters);

            if (resultData == null)
            {
                return(NotFound());
            }

            return(Ok(resultData));
        }
示例#4
0
        public IActionResult GetProjectMetadata(long projectId, [FromQuery] bool includeAuthor, [FromQuery] bool includeResponsiblePerson,
                                                [FromQuery] bool includeKind, [FromQuery] bool includeGenre, [FromQuery] bool includeOriginal, [FromQuery] bool includeKeyword, [FromQuery] bool includeCategory)
        {
            m_authorizationManager.AuthorizeBook(projectId, PermissionFlag.ReadProject);

            var parameters = new GetProjectMetadataParameter
            {
                IncludeKind              = includeKind,
                IncludeGenre             = includeGenre,
                IncludeOriginal          = includeOriginal,
                IncludeResponsiblePerson = includeResponsiblePerson,
                IncludeAuthor            = includeAuthor,
                IncludeKeyword           = includeKeyword,
                IncludeCategory          = includeCategory
            };
            var resultData = m_projectMetadataManager.GetProjectMetadata(projectId, parameters);

            if (resultData == null)
            {
                return(NotFound());
            }

            return(Ok(resultData));
        }
示例#5
0
 public GetLatestProjectMetadataWork(MetadataRepository metadataRepository, long projectId, GetProjectMetadataParameter parameters) : base(metadataRepository.UnitOfWork)
 {
     m_metadataRepository = metadataRepository;
     m_projectId          = projectId;
     m_parameters         = parameters;
 }