|
|
|
@ -39,7 +39,7 @@ namespace Volo.Blogging.Posts |
|
|
|
public async Task<ListResultDto<PostWithDetailsDto>> GetListByBlogIdAndTagName(Guid id, string tagName) |
|
|
|
{ |
|
|
|
var posts = _postRepository.GetPostsByBlogId(id); |
|
|
|
var tag = tagName.IsNullOrWhiteSpace()? null: await _tagRepository.GetByNameAsync(tagName); |
|
|
|
var tag = tagName.IsNullOrWhiteSpace() ? null : await _tagRepository.GetByNameAsync(tagName); |
|
|
|
var userDictionary = new Dictionary<Guid, BlogUserDto>(); |
|
|
|
var postDtos = new List<PostWithDetailsDto>(ObjectMapper.Map<List<Post>, List<PostWithDetailsDto>>(posts)); |
|
|
|
|
|
|
|
@ -68,7 +68,7 @@ namespace Volo.Blogging.Posts |
|
|
|
|
|
|
|
foreach (var postDto in postDtos) |
|
|
|
{ |
|
|
|
if (postDto.CreatorId.HasValue && userDictionary.ContainsKey((Guid) postDto.CreatorId)) |
|
|
|
if (postDto.CreatorId.HasValue && userDictionary.ContainsKey((Guid)postDto.CreatorId)) |
|
|
|
{ |
|
|
|
postDto.Writer = userDictionary[(Guid)postDto.CreatorId]; |
|
|
|
} |
|
|
|
@ -139,7 +139,7 @@ namespace Volo.Blogging.Posts |
|
|
|
await AuthorizationService.CheckAsync(post, CommonOperations.Delete); |
|
|
|
|
|
|
|
var tags = await GetTagsOfPost(id); |
|
|
|
_tagRepository.DecreaseUsageCountOfTags(tags.Select(t=>t.Id).ToList()); |
|
|
|
_tagRepository.DecreaseUsageCountOfTags(tags.Select(t => t.Id).ToList()); |
|
|
|
_postTagRepository.DeleteOfPost(id); |
|
|
|
_commentRepository.DeleteOfPost(id); |
|
|
|
|
|
|
|
@ -151,6 +151,8 @@ namespace Volo.Blogging.Posts |
|
|
|
{ |
|
|
|
var post = await _postRepository.GetAsync(id); |
|
|
|
|
|
|
|
input.Url = await RenameUrlIfItAlreadyExistAsync(input.BlogId, input.Url, post); |
|
|
|
|
|
|
|
await AuthorizationService.CheckAsync(post, CommonOperations.Update); |
|
|
|
|
|
|
|
post.SetTitle(input.Title); |
|
|
|
@ -169,6 +171,8 @@ namespace Volo.Blogging.Posts |
|
|
|
[Authorize(BloggingPermissions.Posts.Create)] |
|
|
|
public async Task<PostWithDetailsDto> CreateAsync(CreatePostDto input) |
|
|
|
{ |
|
|
|
input.Url = await RenameUrlIfItAlreadyExistAsync(input.BlogId, input.Url); |
|
|
|
|
|
|
|
var post = new Post( |
|
|
|
id: GuidGenerator.Create(), |
|
|
|
blogId: input.BlogId, |
|
|
|
@ -176,7 +180,8 @@ namespace Volo.Blogging.Posts |
|
|
|
title: input.Title, |
|
|
|
coverImage: input.CoverImage, |
|
|
|
url: input.Url |
|
|
|
) {Content = input.Content}; |
|
|
|
) |
|
|
|
{ Content = input.Content }; |
|
|
|
|
|
|
|
await _postRepository.InsertAsync(post); |
|
|
|
|
|
|
|
@ -186,6 +191,18 @@ namespace Volo.Blogging.Posts |
|
|
|
return ObjectMapper.Map<Post, PostWithDetailsDto>(post); |
|
|
|
} |
|
|
|
|
|
|
|
private async Task<string> RenameUrlIfItAlreadyExistAsync(Guid blogId, string url, Post existingPost = null) |
|
|
|
{ |
|
|
|
var postList = await _postRepository.GetListAsync(); |
|
|
|
|
|
|
|
if (postList.Where(p => p.Url == url).WhereIf(existingPost != null, p => existingPost.Id != p.Id).Any()) |
|
|
|
{ |
|
|
|
return url + "-" + Guid.NewGuid().ToString().Substring(0, 5); |
|
|
|
} |
|
|
|
|
|
|
|
return url; |
|
|
|
} |
|
|
|
|
|
|
|
private async Task SaveTags(List<String> newTags, Post post) |
|
|
|
{ |
|
|
|
|
|
|
|
@ -255,7 +272,7 @@ namespace Volo.Blogging.Posts |
|
|
|
{ |
|
|
|
return new List<string>(); |
|
|
|
} |
|
|
|
return new List<string>(tags.Split(",").Select(t=>t.Trim())); |
|
|
|
return new List<string>(tags.Split(",").Select(t => t.Trim())); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|