Browse Source

CmsKit - Add BlogPost Application Services

pull/7596/head
enisn 6 years ago
parent
commit
93d4d441b8
  1. 20
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs
  2. 17
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateUpdateBlogPostDto.cs
  3. 17
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/IBlogPostAdminAppService.cs
  4. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs
  5. 4
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs
  6. 80
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs
  7. 2
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/IBlogPostRepository.cs
  8. 5
      modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Blogs/BlogPostEfCoreRepository.cs
  9. 5
      modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Blogs/BlogPostMongoRepository.cs

20
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs

@ -0,0 +1,20 @@
using System;
using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Admin.Blogs
{
public class BlogPostDto : EntityDto<Guid>
{
public Guid BlogId { get; protected set; }
public string Title { get; protected set; }
public string UrlSlug { get; protected set; }
public string CoverImageUrl { get; set; }
public bool IsPublished { get; protected set; }
public DateTime? PublishDate { get; protected set; }
}
}

17
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateUpdateBlogPostDto.cs

@ -0,0 +1,17 @@
using System;
namespace Volo.CmsKit.Admin.Blogs
{
public class CreateUpdateBlogPostDto
{
public Guid BlogId { get; protected set; }
public string Title { get; protected set; }
public string UrlSlug { get; protected set; }
public string CoverImageUrl { get; set; }
public bool IsPublished { get; protected set; }
}
}

17
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/IBlogPostAdminAppService.cs

@ -0,0 +1,17 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace Volo.CmsKit.Admin.Blogs
{
public interface IBlogPostAdminAppService
: ICrudAppService<
BlogPostDto,
Guid,
PagedAndSortedResultRequestDto,
CreateUpdateBlogPostDto>
{
Task<BlogPostDto> GetByUrlSlugAsync(string urlSlug);
}
}

7
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Permissions/CmsKitAdminPermissions.cs

@ -37,5 +37,12 @@ namespace Volo.CmsKit.Permissions
public const string Update = Default + ".Update"; public const string Update = Default + ".Update";
public const string Delete = Default + ".Delete"; public const string Delete = Default + ".Delete";
} }
public static class BlogPosts
{
public const string Default = GroupName + ".BlogPosts";
public const string Create = Default + ".Create";
public const string Update = Default + ".Update";
public const string Delete = Default + ".Delete";
}
} }
} }

4
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs

@ -1,4 +1,5 @@
using System; using Microsoft.AspNetCore.Authorization;
using System;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.CmsKit.Domain.Volo.CmsKit.Blogs; using Volo.CmsKit.Domain.Volo.CmsKit.Blogs;
@ -6,6 +7,7 @@ using Volo.CmsKit.Permissions;
namespace Volo.CmsKit.Admin.Blogs namespace Volo.CmsKit.Admin.Blogs
{ {
[Authorize(CmsKitAdminPermissions.Blogs.Default)]
public class BlogAdminAppService : CrudAppService<Blog, BlogDto, Guid>, IBlogAdminAppService public class BlogAdminAppService : CrudAppService<Blog, BlogDto, Guid>, IBlogAdminAppService
{ {
public BlogAdminAppService(IRepository<Blog, Guid> repository) : base(repository) public BlogAdminAppService(IRepository<Blog, Guid> repository) : base(repository)

80
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs

@ -0,0 +1,80 @@
using Microsoft.AspNetCore.Authorization;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
using Volo.CmsKit.Domain.Volo.CmsKit.Blogs;
using Volo.CmsKit.Permissions;
namespace Volo.CmsKit.Admin.Blogs
{
[Authorize(CmsKitAdminPermissions.BlogPosts.Default)]
public class BlogPostAdminAppService
: CrudAppService<
BlogPost,
BlogPostDto,
Guid,
PagedAndSortedResultRequestDto,
CreateUpdateBlogPostDto>
, IBlogPostAdminAppService
{
protected readonly IBlogPostManager _blogPostManager;
protected readonly IBlogPostRepository _blogPostRepository;
protected BlogPostAdminAppService(
IRepository<BlogPost, Guid> repository,
IBlogPostManager blogPostManager,
IBlogPostRepository blogPostRepository) : base(repository)
{
_blogPostManager = blogPostManager;
_blogPostRepository = blogPostRepository;
GetListPolicyName = CmsKitAdminPermissions.BlogPosts.Default;
GetPolicyName = CmsKitAdminPermissions.BlogPosts.Default;
CreatePolicyName = CmsKitAdminPermissions.BlogPosts.Create;
UpdatePolicyName = CmsKitAdminPermissions.BlogPosts.Update;
DeletePolicyName = CmsKitAdminPermissions.BlogPosts.Delete;
}
public async Task<BlogPostDto> GetByUrlSlugAsync(string urlSlug)
{
var blogPost = await _blogPostRepository.GetByUrlSlugAsync(urlSlug);
return MapToGetOutputDto(blogPost);
}
[Authorize(CmsKitAdminPermissions.BlogPosts.Create)]
public override async Task<BlogPostDto> CreateAsync(CreateUpdateBlogPostDto input)
{
var entity = await _blogPostManager
.CreateAsync(
new BlogPost(
input.BlogId,
input.Title,
input.UrlSlug,
input.CoverImageUrl,
input.IsPublished));
return MapToGetOutputDto(entity);
}
[Authorize(CmsKitAdminPermissions.BlogPosts.Update)]
public override async Task<BlogPostDto> UpdateAsync(Guid id, CreateUpdateBlogPostDto input)
{
var entity = await _blogPostRepository.GetAsync(id);
entity.SetTitle(input.Title);
entity.SetUrlSlug(input.UrlSlug);
entity.SetIsPublished(input.IsPublished);
MapToEntity(input, entity);
return MapToGetOutputDto(entity);
}
}
}

2
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/IBlogPostRepository.cs

@ -10,5 +10,7 @@ namespace Volo.CmsKit.Domain.Volo.CmsKit.Blogs
public interface IBlogPostRepository : IBasicRepository<BlogPost, Guid> public interface IBlogPostRepository : IBasicRepository<BlogPost, Guid>
{ {
Task<bool> SlugExistsAsync(string slug); Task<bool> SlugExistsAsync(string slug);
Task<BlogPost> GetByUrlSlugAsync(string urlSlug);
} }
} }

5
modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Blogs/BlogPostEfCoreRepository.cs

@ -14,6 +14,11 @@ namespace Volo.CmsKit.Blogs
{ {
} }
public Task<BlogPost> GetByUrlSlugAsync(string urlSlug)
{
return GetAsync(x => x.UrlSlug.ToLower() == urlSlug);
}
public async Task<bool> SlugExistsAsync(string slug) public async Task<bool> SlugExistsAsync(string slug)
{ {
var dbSet = await GetDbSetAsync(); var dbSet = await GetDbSetAsync();

5
modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Blogs/BlogPostMongoRepository.cs

@ -12,6 +12,11 @@ namespace Volo.CmsKit.MongoDB.Blogs
{ {
} }
public Task<BlogPost> GetByUrlSlugAsync(string urlSlug)
{
return GetAsync(x => x.UrlSlug.ToLower() == urlSlug);
}
public async Task<bool> SlugExistsAsync(string slug) public async Task<bool> SlugExistsAsync(string slug)
{ {
var queryable = await GetQueryableAsync(); var queryable = await GetQueryableAsync();

Loading…
Cancel
Save