public async Task <IActionResult> SaveArticleAsync(SaveArticleDto model) { if (!authorizationManager.IsAdmin()) { return(Unauthorized()); } await articleService.SaveArticleAsync(model); return(Ok()); }
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)); }
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); }