public async Task <NewsPost> CreatePostAsync(NewsPost post, string postUrl,
                                                     bool publish = false)
        {
            VerifyManagementPermission();

            post.Title   = post.Title.Trim();
            post.Content = post.Content.Trim();
            if (publish)
            {
                post.PublishedAt = _dateTimeProvider.Now;
                await _newsCategoryRepository.SetLastPostDate(post.CategoryId, _dateTimeProvider.Now);
            }

            var addedPost = await _newsPostRepository
                            .AddSaveAsync(GetClaimId(ClaimType.UserId), post);

            if (publish)
            {
                addedPost.CategoryName =
                    (await _newsCategoryRepository.GetByIdAsync(addedPost.CategoryId)).Name;
                await SendSubscriptionEmailsAsync(addedPost, postUrl);
            }

            if (publish)
            {
                _cache.Remove($"s{GetClaimId(ClaimType.SiteId)}.{CacheKey.LatestNewsPostId}");
            }

            return(addedPost);
        }
        public async Task <NewsPost> CreatePostAsync(NewsPost post, bool publish)
        {
            VerifyManagementPermission();

            if (post == null)
            {
                throw new GraException("Could not add post: post was empty.");
            }

            post.Title        = post.Title.Trim();
            post.Content      = post.Content.Trim();
            post.EmailSummary = post.EmailSummary?.Trim();

            if (publish)
            {
                post.PublishedAt = _dateTimeProvider.Now;
                await _newsCategoryRepository.SetLastPostDate(post.CategoryId, _dateTimeProvider.Now);
            }

            var addedPost = await _newsPostRepository
                            .AddSaveAsync(GetClaimId(ClaimType.UserId), post);

            if (publish)
            {
                var category = await _newsCategoryRepository.GetByIdAsync(addedPost.CategoryId);

                addedPost.CategoryName = category.Name;

                await _cache.RemoveAsync($"s{GetClaimId(ClaimType.SiteId)}.{CacheKey.LatestNewsPostId}");
            }

            return(addedPost);
        }