public async Task <IActionResult> SaveArticleAsync(SaveArticleDto model)
        {
            if (!authorizationManager.IsAdmin())
            {
                return(Unauthorized());
            }

            await articleService.SaveArticleAsync(model);

            return(Ok());
        }
Beispiel #2
0
        public async Task UpdateTagsForArticelAsync(SaveArticleDto model)
        {
            await tagRepository.UpdateTagsForArticle(model.Tags, model.Article.Id);

            await cache.RemoveSaveAsync(CacheKeys.AllDistinctTags.Name);

            await cache.RemoveSaveAsync(CacheKeys.AllPublishedTags.Name);

            await cache.RemoveSaveAsync(CacheKeys.AllDistinctPublishedTags.Name);

            await cache.RemoveSaveAsync(CacheKeys.AllTags.Name);

            await cache.RemoveSaveAsync(CacheKeys.TagsByArticleId.Name(model.Article.Id));
        }
Beispiel #3
0
        public async Task SaveArticleAsync(SaveArticleDto model)
        {
            using var activity = traceActivityDecorator.StartActivity();

            await articleRepository.UpdateAsync(mapper.Map <ArticleModel>(model.Article));

            var oldTags = await tagRepository.FindByArticleIdAsync(model.Article.Id);

            foreach (var tag in model.Tags.Concat(oldTags.Select(x => x.Name)))
            {
                await cache.RemoveSaveAsync(CacheKeys.ArticlesByTag.Name(tag));

                await cache.RemoveSaveAsync(CacheKeys.PublishedArticlesByTag.Name(tag));
            }

            await cache.RemoveSaveAsync(CacheKeys.Article.Name(model.Article.Id));

            await cache.RemoveSaveAsync(CacheKeys.AllArticles.Name);

            await cache.RemoveSaveAsync(CacheKeys.AllPublishedArticles.Name);

            // Careful: referencing TagService here could lead to circular references
            await tagService.UpdateTagsForArticelAsync(model);
        }