public async Task <IActionResult> PCreate(ClassForPackCreatingModel obj) { Pack pack = new Pack(); if (ModelState.IsValid) { var ques = obj.questions.Where(x => x.IsSelected).Select(x => x.Id); var tags = obj.tags.Where(x => x.IsSelected).Select(x => x.Id); /* * Пока разрешим создание без тегов * if (tags.Count() == 0) * ModelState.AddModelError(string.Empty, "вы должны указать как минимум один тег"); */ if (ques.Count() == 0) { ModelState.AddModelError(string.Empty, "вы должны выбрать как минимум 1 вопрос"); return(View(obj)); } var qa = await _context.User.FirstAsync(x => x.UserName == User.Identity.Name); var StringIds = string.Join(';', ques); var TagsIds = string.Join(';', tags); pack.Name = obj.pack_name; pack.UpdateDate = DateTime.Now; pack.CreationDate = DateTime.Now; pack.Author = User.Identity.Name; pack.QuestionSet = StringIds; pack.TagsId = TagsIds; pack.IsPrivate = true; _context.Add(pack); await _context.SaveChangesAsync(); qa.PackSet = string.IsNullOrEmpty(qa.PackSet) ? pack.Id + ";" : qa.PackSet + pack.Id + ";"; _context.Update(qa); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(obj)); }
public async Task <IActionResult> PEdit(int Id, ClassForPackCreatingModel old_pack) { if (old_pack == null) { return(View(old_pack)); } Pack new_pack = new Pack(); if (Id == 0) { throw new Exception("incorrect data in post PEdit"); } if (ModelState.IsValid) { var ques_check = old_pack.questions.Where(x => x.IsSelected).Select(x => x.Id); if (ques_check.Count() == 0) { ModelState.AddModelError(string.Empty, "вы должны выбрать как минимум 1 вопрос"); return(View(old_pack)); } var tags_check = old_pack.tags.Where(x => x.IsSelected).Select(x => x.Id); var obj = await _context.Pack.AsNoTracking().FirstAsync(x => x.Id == Id); var qa = await _context.User.FirstAsync(x => x.UserName == User.Identity.Name); try { var StringIds = string.Join(';', ques_check); var TagsIds = string.Join(';', tags_check); new_pack.Name = old_pack.pack_name; new_pack.UpdateDate = DateTime.Now; new_pack.CreationDate = obj.CreationDate; new_pack.Author = User.Identity.Name; new_pack.QuestionSet = StringIds; new_pack.TagsId = TagsIds; new_pack.IsPrivate = true; _context.Add(new_pack); await _context.SaveChangesAsync(); if (new_pack.Id == 0) { throw new Exception("smth went wrong with adding to BD"); } qa.PackSet = qa.PackSet.Replace(Id.ToString(), new_pack.Id.ToString()); // qa.PackSet = string.IsNullOrEmpty(qa.PackSet) ? pack.Id + ";" : qa.PackSet + pack.Id + ";"; _context.Update(qa); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!PackExists(old_pack.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(old_pack)); }