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