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))); }
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 }); }