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));
        }