diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs index a3392ec36c..fbe4e38e40 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Authorization; using System; +using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; @@ -17,16 +18,9 @@ namespace Volo.CmsKit.Admin.Blogs { [RequiresGlobalFeature(typeof(BlogsFeature))] [Authorize(CmsKitAdminPermissions.BlogPosts.Default)] - public class BlogPostAdminAppService - : CrudAppService< - BlogPost, - BlogPostDto, - Guid, - PagedAndSortedResultRequestDto, - CreateBlogPostDto, - UpdateBlogPostDto> - , IBlogPostAdminAppService + public class BlogPostAdminAppService: CmsKitAppServiceBase, IBlogPostAdminAppService { + protected IRepository Repository { get; } protected IBlogPostManager BlogPostManager { get; } protected IBlogPostRepository BlogPostRepository { get; } protected IBlogRepository BlogRepository { get; } @@ -39,23 +33,19 @@ namespace Volo.CmsKit.Admin.Blogs IBlogPostRepository blogPostRepository, IBlogRepository blogRepository, IBlobContainer blobContainer, - ICmsUserLookupService userLookupService) : base(repository) + ICmsUserLookupService userLookupService) { + Repository = repository; BlogPostManager = blogPostManager; BlogPostRepository = blogPostRepository; BlogRepository = blogRepository; BlobContainer = blobContainer; UserLookupService = userLookupService; - GetListPolicyName = CmsKitAdminPermissions.BlogPosts.Default; - GetPolicyName = CmsKitAdminPermissions.BlogPosts.Default; - CreatePolicyName = CmsKitAdminPermissions.BlogPosts.Create; - UpdatePolicyName = CmsKitAdminPermissions.BlogPosts.Update; - DeletePolicyName = CmsKitAdminPermissions.BlogPosts.Delete; } [Authorize(CmsKitAdminPermissions.BlogPosts.Create)] - public override async Task CreateAsync(CreateBlogPostDto input) + public virtual async Task CreateAsync(CreateBlogPostDto input) { var author = await UserLookupService.GetByIdAsync(CurrentUser.GetId()); @@ -71,11 +61,11 @@ namespace Volo.CmsKit.Admin.Blogs await Repository.InsertAsync(blogPost); - return await MapToGetOutputDtoAsync(blogPost); + return ObjectMapper.Map(blogPost); } [Authorize(CmsKitAdminPermissions.BlogPosts.Update)] - public override async Task UpdateAsync(Guid id, UpdateBlogPostDto input) + public virtual async Task UpdateAsync(Guid id, UpdateBlogPostDto input) { var blogPost = await BlogPostRepository.GetAsync(id); @@ -89,9 +79,10 @@ namespace Volo.CmsKit.Admin.Blogs await BlogPostManager.UpdateAsync(blogPost); - return await MapToGetOutputDtoAsync(blogPost); + return ObjectMapper.Map(blogPost); } + [Authorize(CmsKitAdminPermissions.BlogPosts.Update)] public virtual async Task SetCoverImageAsync(Guid id, RemoteStreamContent streamContent) { await Repository.GetAsync(id); @@ -102,11 +93,43 @@ namespace Volo.CmsKit.Admin.Blogs } } + [Authorize(CmsKitAdminPermissions.BlogPosts.Default)] public virtual async Task GetCoverImageAsync(Guid id) { var stream = await BlobContainer.GetAsync(id.ToString()); return new RemoteStreamContent(stream); } + + [Authorize(CmsKitAdminPermissions.BlogPosts.Default)] + public virtual async Task GetAsync(Guid id) + { + var blogPost = await Repository.GetAsync(id); + + return ObjectMapper.Map(blogPost); + } + + [Authorize(CmsKitAdminPermissions.BlogPosts.Default)] + public virtual async Task> GetListAsync(PagedAndSortedResultRequestDto input) + { + if (input.Sorting.IsNullOrEmpty()) + { + input.Sorting = nameof(BlogPost.CreationTime) + " desc"; + } + + var blogPosts = await Repository.GetPagedListAsync(input.SkipCount, input.MaxResultCount, input.Sorting, includeDetails: true); + + var count = await Repository.GetCountAsync(); + + return new PagedResultDto( + count, + ObjectMapper.Map, List>(blogPosts)); + } + + [Authorize(CmsKitAdminPermissions.BlogPosts.Delete)] + public virtual async Task DeleteAsync(Guid id) + { + await Repository.DeleteAsync(id); + } } }