示例#1
0
        public async Task <CollectionArtifacts> GetArtifactsInCollectionAsync(
            int collectionId, Pagination pagination, int userId)
        {
            var collection = await GetCollectionAsync(collectionId, userId);

            var searchArtifactsResult = await _searchEngineService.Search(
                collection.Id, null, ScopeType.Contents, true, userId);

            var artifactItems = await GetArtifactItemsDetailsAsync(searchArtifactsResult.ArtifactIds, userId);

            var propertyTypeInfos = await GetPropertyTypeInfosAsync(artifactItems);

            var profileColumns = await _artifactListService.GetProfileColumnsAsync(
                collection.Id, userId, ProfileColumns.Default);

            var validColumns = GetSelectedColumns(propertyTypeInfos, profileColumns, string.Empty).ToList();

            var artifactIds = searchArtifactsResult.ArtifactIds.Skip((int)pagination.Offset)
                              .Take((int)pagination.Limit).ToList();

            var artifactsWithPropertyValues = await _collectionsRepository.GetArtifactsWithPropertyValuesAsync(
                userId, artifactIds, validColumns);

            var populatedArtifacts = PopulateArtifactsProperties(artifactIds, artifactsWithPropertyValues, validColumns);

            populatedArtifacts.ItemsCount = searchArtifactsResult.Total;

            return(populatedArtifacts);
        }