|
|
|
@ -45,7 +45,11 @@ namespace Volo.CmsKit.Blogs |
|
|
|
public async Task<List<BlogPost>> GetPagedListAsync(Guid blogId, int skipCount, int maxResultCount, |
|
|
|
string sorting, bool includeDetails = false, CancellationToken cancellationToken = default) |
|
|
|
{ |
|
|
|
var queryable = (await WithDetailsAsync()) |
|
|
|
var dbContext = await GetDbContextAsync(); |
|
|
|
var blogPostsDbSet = dbContext.Set<BlogPost>(); |
|
|
|
var usersDbSet = dbContext.Set<CmsUser>(); |
|
|
|
|
|
|
|
var queryable = blogPostsDbSet |
|
|
|
.Where(x => x.BlogId == blogId); |
|
|
|
|
|
|
|
if (!sorting.IsNullOrWhiteSpace()) |
|
|
|
@ -53,10 +57,21 @@ namespace Volo.CmsKit.Blogs |
|
|
|
queryable = queryable.OrderBy(sorting); |
|
|
|
} |
|
|
|
|
|
|
|
return await queryable |
|
|
|
.Skip(skipCount) |
|
|
|
.Take(maxResultCount) |
|
|
|
.ToListAsync(GetCancellationToken()); |
|
|
|
var combinedResult = await queryable |
|
|
|
.Join( |
|
|
|
usersDbSet, |
|
|
|
o => o.AuthorId, |
|
|
|
i => i.Id, |
|
|
|
(blogPost,user) => new { blogPost, user }) |
|
|
|
.Skip(skipCount) |
|
|
|
.Take(maxResultCount) |
|
|
|
.ToListAsync(); |
|
|
|
|
|
|
|
return combinedResult.Select(s => |
|
|
|
{ |
|
|
|
s.blogPost.Author = s.user; |
|
|
|
return s.blogPost; |
|
|
|
}).ToList(); |
|
|
|
} |
|
|
|
|
|
|
|
public async Task<bool> SlugExistsAsync(Guid blogId, [NotNull] string slug, |
|
|
|
@ -64,22 +79,8 @@ namespace Volo.CmsKit.Blogs |
|
|
|
{ |
|
|
|
Check.NotNullOrEmpty(slug, nameof(slug)); |
|
|
|
|
|
|
|
return await (await WithDetailsAsync()).AnyAsync(x => x.BlogId == blogId && x.Slug.ToLower() == slug, |
|
|
|
return await (await GetDbSetAsync()).AnyAsync(x => x.BlogId == blogId && x.Slug.ToLower() == slug, |
|
|
|
GetCancellationToken(cancellationToken)); |
|
|
|
} |
|
|
|
|
|
|
|
public override async Task<IQueryable<BlogPost>> WithDetailsAsync() |
|
|
|
{ |
|
|
|
var dbContext = await GetDbContextAsync(); |
|
|
|
var blogPosts = await GetDbSetAsync(); |
|
|
|
var users = dbContext.Set<CmsUser>(); |
|
|
|
|
|
|
|
//var query = blogPosts.Join(users, o => o.AuthorId, i => i.Id, (blogPost, user) => new
|
|
|
|
//BlogPost
|
|
|
|
//{
|
|
|
|
|
|
|
|
//});
|
|
|
|
return (await GetDbSetAsync()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |