private async Task<PagedQueryResult<BlogPostSummary>> MapBlogPostsAsync( PagedQueryResult<CustomEntityRenderSummary> customEntityResult, PublishStatusQuery ambientEntityPublishStatusQuery) { var blogPosts = new List<BlogPostSummary>(); var imageAssetIds = customEntityResult .Items .Select(i => (BlogPostDataModel)i.Model) .Where(m => m.ThumbnailImageAssetId != null) .Select(m => m.ThumbnailImageAssetId.Value) .Distinct(); var imageLookup = await _contentRepository .ImageAssets() .GetByIdRange(imageAssetIds) .AsRenderDetails() .ExecuteAsync(); foreach (var customEntity in customEntityResult.Items) { var model = (BlogPostDataModel)customEntity.Model; var blogPost = new BlogPostSummary(); blogPost.Title = customEntity.Title; blogPost.ShortDescription = model.ShortDescription; blogPost.ThumbnailImageAsset = imageLookup.GetOrDefault(model.ThumbnailImageAssetId); blogPost.FullPath = customEntity.PageUrls.FirstOrDefault(); blogPost.PostDate = customEntity.PublishDate; blogPosts.Add(blogPost); } return customEntityResult.ChangeType(blogPosts); }
public void GetBlogPost(Guid blogPostId) { var blogPost = _blogDbContext .BlogPosts .Select(b => new BlogPostEntity { Id = b.Id, Title = b.Title, Body = b.Body, CreatedAt = b.CreatedAt, Tags = b.Tags, Comments = b.Comments }) .SingleOrDefault(b => b.Id == blogPostId); BlogPost = new BlogPostSummary(blogPost.Id, blogPost.CreatedAt, blogPost.Title, blogPost.Body, blogPost.Tags); Comments = blogPost.Comments.ToList(); }