public async Task <PostEntity> CreateAsync(UpdatePostRequest request) { var abs = ContentProcessor.GetPostAbstract( string.IsNullOrEmpty(request.Abstract) ? request.EditorContent : request.Abstract.Trim(), _settings.PostAbstractWords, _settings.Editor == EditorChoice.Markdown); var post = new PostEntity { CommentEnabled = request.EnableComment, Id = Guid.NewGuid(), PostContent = request.EditorContent, ContentAbstract = abs, CreateTimeUtc = DateTime.UtcNow, LastModifiedUtc = DateTime.UtcNow, // Fix draft orders Slug = request.Slug.ToLower().Trim(), Author = request.Author?.Trim(), Title = request.Title.Trim(), ContentLanguageCode = request.ContentLanguageCode, ExposedToSiteMap = request.ExposedToSiteMap, IsFeedIncluded = request.IsFeedIncluded, PubDateUtc = request.IsPublished ? DateTime.UtcNow : null, IsDeleted = false, IsPublished = request.IsPublished, IsFeatured = request.IsFeatured, IsOriginal = request.IsOriginal, OriginLink = string.IsNullOrWhiteSpace(request.OriginLink) ? null : Helper.SterilizeLink(request.OriginLink), HeroImageUrl = string.IsNullOrWhiteSpace(request.HeroImageUrl) ? null : Helper.SterilizeLink(request.HeroImageUrl), PostExtension = new() { Hits = 0, Likes = 0 } }; // check if exist same slug under the same day var todayUtc = DateTime.UtcNow.Date; if (_postRepo.Any(new PostSpec(post.Slug, todayUtc))) { var uid = Guid.NewGuid(); post.Slug += $"-{uid.ToString().ToLower()[..8]}";
public async Task <PostEntity> CreateAsync(UpdatePostRequest request) { var abs = ContentProcessor.GetPostAbstract( request.EditorContent, _settings.PostAbstractWords, _settings.Editor == EditorChoice.Markdown); var post = new PostEntity { CommentEnabled = request.EnableComment, Id = Guid.NewGuid(), PostContent = request.EditorContent, ContentAbstract = abs, CreateTimeUtc = DateTime.UtcNow, Slug = request.Slug.ToLower().Trim(), Title = request.Title.Trim(), ContentLanguageCode = request.ContentLanguageCode, ExposedToSiteMap = request.ExposedToSiteMap, IsFeedIncluded = request.IsFeedIncluded, PubDateUtc = request.IsPublished ? DateTime.UtcNow : (DateTime?)null, IsDeleted = false, IsPublished = request.IsPublished, PostExtension = new() { Hits = 0, Likes = 0 } }; // check if exist same slug under the same day var todayUtc = DateTime.UtcNow.Date; if (_postRepo.Any(new PostSpec(post.Slug, todayUtc))) { var uid = Guid.NewGuid(); post.Slug += $"-{uid.ToString().ToLower().Substring(0, 8)}"; _logger.LogInformation($"Found conflict for post slug, generated new slug: {post.Slug}"); } // add categories if (request.CategoryIds is not null and { Length : > 0 })