Example #1
0
        public async Task <BlobContent> ReadBlobContentAsync(long tenantId, long elementId, long blobSetId, string blobLabel)
        {
            AlbumElementSettings settings = await _elementRepository.ReadElementSettingsAsync(tenantId, elementId);

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

            AlbumPhoto photo = settings.Photos.Where(p => p.BlobSetId == blobSetId).FirstOrDefault();

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

            long?blobId = GetBlobId(photo, blobLabel);

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

            return(await _storageService.ReadBlobContentAsync(tenantId, blobId.Value, string.Format(AlbumImagePath, elementId)));
        }
Example #2
0
        public async Task <IElementView <AlbumElementSettings, AlbumElementContent> > ReadElementViewAsync(long tenantId, long elementId, IPageContext context)
        {
            // Get element settings
            AlbumElementSettings settings = await _elementRepository.ReadElementSettingsAsync(tenantId, elementId);

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

            // Get details of thumbnail and preview images
            IEnumerable <long> thumbnailImageBlobIds = settings.Photos.Select(p => p.ThumbnailImageBlobId);
            IEnumerable <long> previewImageBlobIds   = settings.Photos.Select(p => p.PreviewImageBlobId);
            IEnumerable <Blob> thumbnailImageBlobs   = await _storageService.ListBlobsAsync(tenantId, thumbnailImageBlobIds);

            IEnumerable <Blob> previewImageBlobs = await _storageService.ListBlobsAsync(tenantId, previewImageBlobIds);

            IDictionary <long, BlobImage> thumbnailImageBlobsById = thumbnailImageBlobs.ToDictionary(b => b.BlobId, b => (BlobImage)b);
            IDictionary <long, BlobImage> previewImageBlobsById   = previewImageBlobs.ToDictionary(b => b.BlobId, b => (BlobImage)b);

            // Construct list of photos for album content
            IDictionary <long, AlbumContentPhoto> photos = settings
                                                           .Photos
                                                           .Where(p => thumbnailImageBlobsById.ContainsKey(p.ThumbnailImageBlobId) && previewImageBlobsById.ContainsKey(p.PreviewImageBlobId))
                                                           .Select(p => new AlbumContentPhoto
            {
                BlobSetId       = p.BlobSetId,
                ThumbnailWidth  = thumbnailImageBlobsById[p.ThumbnailImageBlobId].Width,
                ThumbnailHeight = thumbnailImageBlobsById[p.ThumbnailImageBlobId].Height,
                PreviewWidth    = previewImageBlobsById[p.PreviewImageBlobId].Width,
                PreviewHeight   = previewImageBlobsById[p.PreviewImageBlobId].Height
            })
                                                           .ToDictionary(p => p.BlobSetId, p => p);

            // Construct element content
            AlbumElementContent content = new AlbumElementContent
            {
                Photos = photos
            };

            // Return element view
            return(new ElementView <AlbumElementSettings, AlbumElementContent>
            {
                Settings = settings,
                Content = content
            });
        }