// TODO: it should be only authors public async Task <ArticleDetailsDto> CreateArticle([FromBody] CreateOrEditArticleDto dto) { Article article = await _articlesService.Create(dto.Title, dto.Description, dto.Body, await _usersService.GetCurrentUserAsync(), dto.Tags); return(ArticleDetailsDto.Build(article)); }
public async Task <IActionResult> UpdateArticle(string slug, [FromBody] CreateOrEditArticleDto dto) { if (!ModelState.IsValid) { return(StatusCodeAndDtoWrapper.BuilBadRequest(ModelState)); } Article article = await _articlesService.UpdateArticle(slug, dto); return(StatusCodeAndDtoWrapper.BuildSuccess(ArticleDetailsDto.Build(article), "Updated successfully")); }
public async Task <Article> UpdateArticle(string slug, CreateOrEditArticleDto dto) { var article = await _context.Articles.Include(a => a.ArticleCategories).Include(a => a.ArticlesTags) .Where(x => x.Slug == slug).FirstOrDefaultAsync(); if (article == null) { throw new ResourceNotFoundException(); } article.Title = dto.Title.Trim(); article.Slug = dto.Title.Trim().Slugify(); article.Body = dto.Body; article.Description = dto.Description; if (dto.Categories != null && dto.Categories.Count() > 0) { foreach (var category in dto.Categories) { Category cat = _context.Categories.Where(c => c.Name.Equals(category.Name)).SingleOrDefault(); if (cat == null) { cat = new Category { Name = category.Name, }; _context.Categories.Add(cat); await _context.SaveChangesAsync(); } // If the article was not yet associated to the category then do it now if (!article.ArticleCategories.Any(ac => ac.Article == article && ac.Category == cat)) { article.ArticleCategories.Add(new ArticleCategory { Article = article, Category = cat }); } } } // if (requestForm != null && requestForm.ContainsKey("categories")) { // var categories = Request.Form["categories"].ToArray(); //.Split(",", StringSplitOptions.RemoveEmptyEntries) // .Select(c => c.Trim()).ToLowerInvariant().ToList(); // article.Categories = categories; } if (_context.ChangeTracker.Entries().First(x => x.Entity == article).State == EntityState.Modified) { article.UpdatedAt = DateTime.UtcNow; } await _context.SaveChangesAsync(); return(article); }