public async Task <IActionResult> Create(AdminArticleViewModel model) { if (ModelState.IsValid) { var userId = userManager.GetUserId(User); var article = new Article(); article.Title = model.Title; article.Content = model.Content; article.IsVisible = model.IsVisible; article.AuthorId = userId; article.PublicationDate = DateTime.Now; article.Tags = new List <ArticleTag>(); // Add tags if (!string.IsNullOrEmpty(model.Tags)) { var tags = model.Tags.Split(',', StringSplitOptions.RemoveEmptyEntries); if (tags.Any()) { foreach (var tag in tags) { var dbTag = _context.Tags.FirstOrDefault(t => t.Name.ToLower() == tag.ToLower()); if (dbTag == null) { // Tag does not exist, create it dbTag = new Tag(); dbTag.Name = tag; _context.Tags.Add(dbTag); } var articleTag = new ArticleTag(); articleTag.Article = article; articleTag.Tag = dbTag; article.Tags.Add(articleTag); } } } _context.Add(article); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(model)); }
public async Task <IActionResult> Edit(int id, AdminArticleViewModel model) { if (id != model.Id) { return(NotFound()); } if (ModelState.IsValid) { try { var DBArticle = _context.Articles.Find(id); DBArticle.Title = model.Title; DBArticle.Content = model.Content; DBArticle.IsVisible = model.IsVisible; // Add tags DBArticle.Tags.Clear(); if (!string.IsNullOrEmpty(model.Tags)) { var tags = model.Tags.Split(',', StringSplitOptions.RemoveEmptyEntries); if (tags.Any()) { foreach (var tag in tags) { var dbTag = _context.Tags.FirstOrDefault(t => t.Name.ToLower() == tag.ToLower()); if (dbTag == null) { // Tag does not exist, create it dbTag = new Tag(); dbTag.Name = tag; _context.Tags.Add(dbTag); } var articleTag = new ArticleTag(); articleTag.Article = DBArticle; articleTag.Tag = dbTag; DBArticle.Tags.Add(articleTag); } } } _context.Update(DBArticle); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ArticleExists(model.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(model)); }