using Microsoft.AspNetCore.Authorization; using System; using System.Collections.Generic; using System.Threading.Tasks; using Volo.Abp.Application.Dtos; using Volo.Abp.GlobalFeatures; using Volo.CmsKit.Blogs; using Volo.CmsKit.GlobalFeatures; using Volo.CmsKit.Permissions; namespace Volo.CmsKit.Admin.Blogs { [RequiresGlobalFeature(typeof(BlogsFeature))] [Authorize(CmsKitAdminPermissions.Blogs.Default)] public class BlogAdminAppService : CmsKitAdminAppServiceBase, IBlogAdminAppService { protected IBlogRepository BlogRepository { get; } protected BlogManager BlogManager { get; } public BlogAdminAppService(IBlogRepository blogRepository, BlogManager blogManager) { BlogRepository = blogRepository; BlogManager = blogManager; } public virtual async Task GetAsync(Guid id) { var blog = await BlogRepository.GetAsync(id); return ObjectMapper.Map(blog); } public virtual async Task> GetListAsync(BlogGetListInput input) { var totalCount = await BlogRepository.GetCountAsync(input.Filter); var blogs = await BlogRepository.GetListAsync( input.Filter, input.Sorting, input.MaxResultCount, input.SkipCount); return new PagedResultDto(totalCount, ObjectMapper.Map, List>(blogs)); } [Authorize(CmsKitAdminPermissions.Blogs.Create)] public virtual async Task CreateAsync(CreateBlogDto input) { var blog = await BlogManager.CreateAsync(input.Name, input.Slug); await BlogRepository.InsertAsync(blog); return ObjectMapper.Map(blog); } [Authorize(CmsKitAdminPermissions.Blogs.Update)] public virtual async Task UpdateAsync(Guid id, UpdateBlogDto input) { var blog = await BlogRepository.GetAsync(id); blog = await BlogManager.UpdateAsync(blog, input.Name, input.Slug); await BlogRepository.UpdateAsync(blog); return ObjectMapper.Map(blog); } [Authorize(CmsKitAdminPermissions.Blogs.Delete)] public virtual Task DeleteAsync(Guid id) { return BlogRepository.DeleteAsync(id); } } }