Exemplo n.º 1
0
        // 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));
        }
Exemplo n.º 2
0
        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"));
        }
Exemplo n.º 3
0
        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);
        }