public async Task <IActionResult> QCreate(ClassForQuestionCreatingModel ob) { if (ModelState.IsValid) { var tags = ob.tags.Where(x => x.IsSelected).Select(x => x.Id); /* Пока разрешим создание без тегов * if (tags.Count() == 0) * ModelState.AddModelError(string.Empty, "вы должны указать как минимум один тег"); */ Question obj = new Question(); var StringTags = string.Join(";", tags); var qa = await _context.User.FirstAsync(x => x.UserName == User.Identity.Name); obj.CreationDate = DateTime.Now; obj.UpdateDate = DateTime.Now; obj.Author = User.Identity.Name; obj.TagIds = StringTags; obj.IsPrivate = true; obj.Definition = ob.Definition; obj.Proof = ob.Proof; obj.Title = ob.Title; _context.Add(obj); await _context.SaveChangesAsync(); qa.QuestionSet = string.IsNullOrEmpty(qa.QuestionSet) ? obj.Id + ";" : qa.QuestionSet + obj.Id + ";"; _context.Update(qa); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(ob)); }
public async Task <IActionResult> QEdit(int Id, [Bind("Definition,Title,Proof,tags")] ClassForQuestionCreatingModel ques) { if (Id == 0) { throw new Exception("incorrect data in post QEdit"); } var obj = await _context.Question.AsNoTracking().FirstAsync(x => x.Id == Id); if (ModelState.IsValid) { var tags_check = ques.tags.Where(x => x.IsSelected).Select(x => x.Id); /* * if (tags_check.Count() == 0) * { * ModelState.AddModelError(string.Empty, "вы должны указать как минимум один тег"); * return View(ques); * } * */ try { var qa = await _context.User.FirstAsync(x => x.UserName == User.Identity.Name); Question question = new Question() { Title = ques.Title, TagIds = string.Join(";", tags_check), Proof = ques.Proof, Definition = ques.Definition, CreationDate = DateTime.Now, UpdateDate = DateTime.Now, Author = User.Identity.Name, IsPrivate = true }; _context.Question.Add(question); await _context.SaveChangesAsync(); if (question.Id == 0) { throw new Exception("smth went wrong with adding to BD"); } qa.QuestionSet = qa.QuestionSet.Replace(Id.ToString(), ""); qa.QuestionSet = string.IsNullOrEmpty(qa.QuestionSet) ? question.Id + ";" : qa.QuestionSet + question.Id + ";"; _context.Update(qa); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!QuestionExists(ques.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(ques)); }