public async Task <IActionResult> Create(AdminQuestionViewModel model) { if (ModelState.IsValid) { var question = new Question(); question.Title = model.Title; question.Content = model.Content; question.IsVisible = model.IsVisible; question.Author = await _userManager.GetUserAsync(User); question.PublicationDate = DateTime.Now; question.Tags = new List <QuestionTag>(); // 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 questionTag = new QuestionTag(); questionTag.Question = question; questionTag.Tag = dbTag; question.Tags.Add(questionTag); } } } _context.Add(question); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(model)); }
// GET: Admin/Questions/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var question = await _context.Questions.FindAsync(id); if (question == null) { return(NotFound()); } var model = new AdminQuestionViewModel(); model.Id = question.Id; model.Title = question.Title; model.Content = question.Content; model.IsVisible = question.IsVisible; model.Tags = question.GetTagsAsString(); return(View(model)); }
public async Task <IActionResult> Edit(int id, AdminQuestionViewModel model) { if (id != model.Id) { return(NotFound()); } if (ModelState.IsValid) { try { var DBQuestion = await _context.Questions.FindAsync(id); DBQuestion.Title = model.Title; DBQuestion.Content = model.Content; DBQuestion.IsVisible = model.IsVisible; // Add tags DBQuestion.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 questionTag = new QuestionTag(); questionTag.Question = DBQuestion; questionTag.Tag = dbTag; DBQuestion.Tags.Add(questionTag); } } } _context.Update(DBQuestion); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!QuestionExists(model.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(model)); }