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