Exemple #1
0
        public GetImagesResponse Get(GetImagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                        .AsQueryable <Media>()
                        .Where(m => m.Original == null && m.Folder.Id == request.Data.FolderId && m.Type == MediaType.Image);

            if (!request.Data.IncludeFolders)
            {
                query = query.Where(media => media.ContentType != Module.MediaManager.Models.MediaContentType.Folder);
            }

            if (!request.Data.IncludeImages)
            {
                query = query.Where(media => media.ContentType != Module.MediaManager.Models.MediaContentType.File);
            }

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(m => !m.IsArchived);
            }

            query = query.ApplyTagsFilter(
                request.Data,
                tagName => { return(media => media.MediaTags.Any(tag => tag.Tag.Name == tagName)); });

            var listResponse = query.Select(media =>
                                            new MediaModel
            {
                Id             = media.Id,
                Version        = media.Version,
                CreatedBy      = media.CreatedByUser,
                CreatedOn      = media.CreatedOn,
                LastModifiedBy = media.ModifiedByUser,
                LastModifiedOn = media.ModifiedOn,

                Title            = media.Title,
                Caption          = media is MediaImage ? ((MediaImage)media).Caption : null,
                MediaContentType = media is MediaFolder
                                                    ? (MediaContentType)((int)MediaContentType.Folder)
                                                    : (MediaContentType)((int)MediaContentType.File),
                FileExtension = media is MediaImage ? ((MediaImage)media).OriginalFileExtension : null,
                FileSize      = media is MediaImage ? ((MediaImage)media).Size : (long?)null,
                ImageUrl      = media is MediaImage ? ((MediaImage)media).PublicUrl : null,
                ThumbnailUrl  = media is MediaImage ? ((MediaImage)media).PublicThumbnailUrl : null,
                IsArchived    = media.IsArchived
            }).ToDataListResponse(request);

            return(new GetImagesResponse
            {
                Data = listResponse
            });
        }
 public void Should_Return_Images_List_Successfully()
 {
     RunActionInTransaction(session =>
     {
         CreateFakeMedias(session);
         var repository = CreateRepository(session);
         using (var service = new MediaManagerApiContext(Container.BeginLifetimeScope(), repository))
         {
             var request = new GetImagesRequest(itemsCount: 3);
             var images  = service.GetImages(request);
             Assert.IsNotNull(images);
             Assert.AreEqual(images.Items.Count, 3);
         }
     });
 }
Exemple #3
0
        /// <summary>
        /// Gets the images.
        /// </summary>
        /// <param name="request">The images request.</param>
        /// <returns>The <see cref="Task"/> containing the API response with <see cref="GetImagesResponse"/>.</returns>
        public virtual Task <ApiResponse <GetImagesResponse> > GetAllAsync(GetImagesRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (string.IsNullOrWhiteSpace(request.EntityId))
            {
                throw new ApiException(400, $"Parameter '{nameof(request.EntityId)}' is missed.");
            }

            var requestContext = PrepareRequestContext(path: $"{Path}/{request.EntityId}/images")
                                 .WithQuery(request.Query.Build());

            return(CallAsync <GetImagesResponse>(requestContext));
        }
        public void Should_Return_Ordered_Descending_Images_List_Successfully()
        {
            RunActionInTransaction(session =>
            {
                var medias     = CreateFakeMedias(session);
                var repository = CreateRepository(session);
                using (var service = new MediaManagerApiContext(Container.BeginLifetimeScope(), repository))
                {
                    var folder  = medias.First(m => m is MediaFolder && m.Title == "Images1");
                    var request = new GetImagesRequest(p => p.Folder.Id == folder.Id, orderDescending: true, order: p => p.Title);
                    request.AddPaging(1, 2);

                    var images = service.GetImages(request);
                    Assert.IsNotNull(images);
                    Assert.AreEqual(images.Items.Count, 1);
                    Assert.AreEqual(images.TotalCount, 2);
                    Assert.AreEqual(images.Items[0].Title, "Image1__1");
                }
            });
        }
        /// <summary>
        /// Gets the list of media image entities.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        /// The list of tag entities
        /// </returns>
        /// <exception cref="CmsApiException"></exception>
        public DataListResponse <MediaImage> GetImages(GetImagesRequest request = null)
        {
            try
            {
                var query = Repository
                            .AsQueryable <MediaImage>()
                            .ApplyFilters(request);

                var totalCount = query.ToRowCountFutureValue(request);
                query = query
                        .AddOrderAndPaging(request)
                        .Fetch(m => m.Folder);

                return(query.ToDataListResponse(totalCount));
            }
            catch (Exception inner)
            {
                const string message = "Failed to get images list.";
                Logger.Error(message, inner);
                throw new CmsApiException(message, inner);
            }
        }
Exemple #6
0
        /// <summary>
        /// Gets images list.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        ///   <c>GetImagesResponse</c> with images list.
        /// </returns>
        public GetImagesResponse Get(GetImagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                .AsQueryable<Media>()
                .Where(m => m.Original == null && m.Type == Module.MediaManager.Models.MediaType.Image)
                .Where(f => !(f is MediaImage) || (!((MediaImage)f).IsTemporary && ((MediaImage)f).IsUploaded == true));

            if (request.Data.FolderId == null)
            {
                query = query.Where(m => m.Folder == null);
            }
            else
            {
                query = query.Where(m => m.Folder.Id == request.Data.FolderId && !m.Folder.IsDeleted);
            }

            if (!request.Data.IncludeFolders)
            {
                query = query.Where(media => media.ContentType != Module.MediaManager.Models.MediaContentType.Folder);
            }

            if (!request.Data.IncludeImages)
            {
                query = query.Where(media => media.ContentType != Module.MediaManager.Models.MediaContentType.File);
            }

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(m => !m.IsArchived);
            }

            query = query.ApplyMediaTagsFilter(request.Data)
                         .ApplyCategoriesFilter(categoryService, request.Data);

            var listResponse = query.Select(media =>
                    new MediaModel
                        {
                            Id = media.Id,
                            Version = media.Version,
                            CreatedBy = media.CreatedByUser,
                            CreatedOn = media.CreatedOn,
                            LastModifiedBy = media.ModifiedByUser,
                            LastModifiedOn = media.ModifiedOn,

                            Title = media.Title,
                            Description = media.Description,
                            Caption = media is MediaImage ? ((MediaImage)media).Caption : null,
                            MediaContentType = media is MediaFolder 
                                                    ? (MediaContentType)((int)MediaContentType.Folder)
                                                    : (MediaContentType)((int)MediaContentType.File),
                            FileExtension = media is MediaImage ? ((MediaImage)media).OriginalFileExtension : null,
                            FileSize = media is MediaImage ? ((MediaImage)media).Size : (long?)null,
                            ImageUrl = media is MediaImage ? ((MediaImage)media).PublicUrl : null,
                            ThumbnailUrl = media is MediaImage ? ((MediaImage)media).PublicThumbnailUrl : null,
                            IsArchived = media.IsArchived
                        })
                        .ToDataListResponse(request);

            foreach (var model in listResponse.Items)
            {
                model.ImageUrl = fileUrlResolver.EnsureFullPathUrl(model.ImageUrl);
                model.ThumbnailUrl = fileUrlResolver.EnsureFullPathUrl(model.ThumbnailUrl);


                if (request.Data.IncludeCategories)
                {
                    model.Categories = (from media in repository.AsQueryable<MediaFile>()
                        from category in media.Categories
                                        where media.Id == model.Id && !category.IsDeleted
                        select
                            new CategoryNodeModel
                            {
                                Id = category.Category.Id,
                                Version = category.Version,
                                CreatedBy = category.CreatedByUser,
                                CreatedOn = category.CreatedOn,
                                LastModifiedBy = category.ModifiedByUser,
                                LastModifiedOn = category.ModifiedOn,
                                Name = category.Category.Name,
                                CategoryTreeId = category.Category.CategoryTree.Id
                            }).ToList();
                }
            }

            return new GetImagesResponse
                       {
                           Data = listResponse
                       };
        }
        /// <summary>
        /// Gets the list of media image entities.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        /// The list of tag entities
        /// </returns>
        /// <exception cref="CmsApiException"></exception>
        public DataListResponse<MediaImage> GetImages(GetImagesRequest request = null)
        {
            try
            {
                var query = Repository
                    .AsQueryable<MediaImage>()
                    .ApplyFilters(request);

                var totalCount = query.ToRowCountFutureValue(request);
                query = query
                    .AddOrderAndPaging(request)
                    .Fetch(m => m.Folder);

                return query.ToDataListResponse(totalCount);
            }
            catch (Exception inner)
            {
                const string message = "Failed to get images list.";
                Logger.Error(message, inner);
                throw new CmsApiException(message, inner);
            }
        }
Exemple #8
0
        public GetImagesResponse Get(GetImagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                .AsQueryable<Media>()
                .Where(m => m.Original == null && m.Type == MediaType.Image);

            if (request.Data.FolderId == null)
            {
                query = query.Where(m => m.Folder == null);
            }
            else
            {
                query = query.Where(m => m.Folder.Id == request.Data.FolderId && !m.Folder.IsDeleted);
            }

            if (!request.Data.IncludeFolders)
            {
                query = query.Where(media => media.ContentType != Module.MediaManager.Models.MediaContentType.Folder);
            }

            if (!request.Data.IncludeImages)
            {
                query = query.Where(media => media.ContentType != Module.MediaManager.Models.MediaContentType.File);
            }

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(m => !m.IsArchived);
            }

            query = query.ApplyTagsFilter(
                request.Data,
                tagName => { return media => media.MediaTags.Any(mediaTag => mediaTag.Tag.Name == tagName && !mediaTag.Tag.IsDeleted); });

            var listResponse = query.Select(media =>
                    new MediaModel
                        {
                            Id = media.Id,
                            Version = media.Version,
                            CreatedBy = media.CreatedByUser,
                            CreatedOn = media.CreatedOn,
                            LastModifiedBy = media.ModifiedByUser,
                            LastModifiedOn = media.ModifiedOn,

                            Title = media.Title,
                            Caption = media is MediaImage ? ((MediaImage)media).Caption : null,
                            MediaContentType = media is MediaFolder
                                                    ? (MediaContentType)((int)MediaContentType.Folder)
                                                    : (MediaContentType)((int)MediaContentType.File),
                            FileExtension = media is MediaImage ? ((MediaImage)media).OriginalFileExtension : null,
                            FileSize = media is MediaImage ? ((MediaImage)media).Size : (long?)null,
                            ImageUrl = media is MediaImage ? ((MediaImage)media).PublicUrl : null,
                            ThumbnailUrl = media is MediaImage ? ((MediaImage)media).PublicThumbnailUrl : null,
                            IsArchived = media.IsArchived

                        }).ToDataListResponse(request);

            return new GetImagesResponse
                       {
                           Data = listResponse
                       };
        }
Exemple #9
0
        /// <summary>
        /// Gets images list.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>
        ///   <c>GetImagesResponse</c> with images list.
        /// </returns>
        public GetImagesResponse Get(GetImagesRequest request)
        {
            request.Data.SetDefaultOrder("Title");

            var query = repository
                        .AsQueryable <Media>()
                        .Where(m => m.Original == null && m.Type == Module.MediaManager.Models.MediaType.Image)
                        .Where(f => !(f is MediaImage) || (!((MediaImage)f).IsTemporary && ((MediaImage)f).IsUploaded == true));

            if (request.Data.FolderId == null)
            {
                query = query.Where(m => m.Folder == null);
            }
            else
            {
                query = query.Where(m => m.Folder.Id == request.Data.FolderId && !m.Folder.IsDeleted);
            }

            if (!request.Data.IncludeFolders)
            {
                query = query.Where(media => media.ContentType != Module.MediaManager.Models.MediaContentType.Folder);
            }

            if (!request.Data.IncludeImages)
            {
                query = query.Where(media => media.ContentType != Module.MediaManager.Models.MediaContentType.File);
            }

            if (!request.Data.IncludeArchived)
            {
                query = query.Where(m => !m.IsArchived);
            }

            query = query.ApplyMediaTagsFilter(request.Data)
                    .ApplyCategoriesFilter(categoryService, request.Data);

            var listResponse = query.Select(media =>
                                            new MediaModel
            {
                Id             = media.Id,
                Version        = media.Version,
                CreatedBy      = media.CreatedByUser,
                CreatedOn      = media.CreatedOn,
                LastModifiedBy = media.ModifiedByUser,
                LastModifiedOn = media.ModifiedOn,

                Title            = media.Title,
                Description      = media.Description,
                Caption          = media is MediaImage ? ((MediaImage)media).Caption : null,
                MediaContentType = media is MediaFolder
                                                    ? (MediaContentType)((int)MediaContentType.Folder)
                                                    : (MediaContentType)((int)MediaContentType.File),
                FileExtension = media is MediaImage ? ((MediaImage)media).OriginalFileExtension : null,
                FileSize      = media is MediaImage ? ((MediaImage)media).Size : (long?)null,
                ImageUrl      = media is MediaImage ? ((MediaImage)media).PublicUrl : null,
                ThumbnailUrl  = media is MediaImage ? ((MediaImage)media).PublicThumbnailUrl : null,
                IsArchived    = media.IsArchived
            })
                               .ToDataListResponse(request);

            foreach (var model in listResponse.Items)
            {
                model.ImageUrl     = fileUrlResolver.EnsureFullPathUrl(model.ImageUrl);
                model.ThumbnailUrl = fileUrlResolver.EnsureFullPathUrl(model.ThumbnailUrl);


                if (request.Data.IncludeCategories)
                {
                    model.Categories = (from media in repository.AsQueryable <MediaFile>()
                                        from category in media.Categories
                                        where media.Id == model.Id && !category.IsDeleted
                                        select
                                        new CategoryNodeModel
                    {
                        Id = category.Category.Id,
                        Version = category.Version,
                        CreatedBy = category.CreatedByUser,
                        CreatedOn = category.CreatedOn,
                        LastModifiedBy = category.ModifiedByUser,
                        LastModifiedOn = category.ModifiedOn,
                        Name = category.Category.Name,
                        CategoryTreeId = category.Category.CategoryTree.Id
                    }).ToList();
                }
            }

            return(new GetImagesResponse
            {
                Data = listResponse
            });
        }
 public void TEST_Should_Return_Ordered_Images_List_Successfully()
 {
     RunActionInTransaction(session =>
     {
         CreateFakeMedias(session);
         var repository = CreateRepository(session);
         using (var service = new MediaManagerApiContext(Container.BeginLifetimeScope(), repository))
         {
             var request = new GetImagesRequest(order: p => p.Title);
             var images = service.GetImages(request);
             Assert.IsNotNull(images);
             Assert.GreaterOrEqual(images.Items.Count, 0);
         }
     });
 }
        public void Should_Return_Ordered_Images_List_Successfully()
        {
            RunActionInTransaction(session =>
            {
                var medias = CreateFakeMedias(session);
                var repository = CreateRepository(session);
                using (var service = new MediaManagerApiContext(Container.BeginLifetimeScope(), repository))
                {
                    var folder = medias.First(m => m is MediaFolder && m.Title == "Images1");
                    var request = new GetImagesRequest(p => p.Folder.Id == folder.Id, p => p.Title);
                    request.AddPaging(1, 2);

                    var images = service.GetImages(request);
                    Assert.IsNotNull(images);
                    Assert.AreEqual(images.Items.Count, 1);
                    Assert.AreEqual(images.TotalCount, 2);
                    Assert.AreEqual(images.Items[0].Title, "Image1__2");
                }
            });
        }
Exemple #12
0
        public async Task <ImagesResponse> GetImages(GetImagesRequest request)
        {
            var images = await ProcessRequest(request, _imagesRepository.GetImages);

            return(images);
        }
Exemple #13
0
 public PagedResultSet <Image> GetImages(GetImagesRequest request)
 {
     return(new PagedResultSet <Image>(this, "gallery/images", HttpMethod.Get, request));
 }