예제 #1
0
        public async Task <IActionResult> Clone(int id)
        {
            if (ModelState.IsValid)
            {
                ViewData["QuestionId"] = new SelectList(_context.Questions, "Id", "Question");
                if (id > 0)
                {
                    string guid = GuidHelper.GetShortGuid;
                    while (await _context.Questionnaries.Where(a => a.Code == guid).CountAsync() > 0)
                    {
                        guid = GuidHelper.GetShortGuid;
                    }
                    var item = await _context.Questionnaries.Where(a => a.Id == id).FirstOrDefaultAsync();

                    var newItem = new Questionnaries
                    {
                        Active      = true,
                        Code        = guid,
                        MaxAnswers  = item.MaxAnswers,
                        Description = item.Description,
                        Name        = item.Name + "_kopia"
                    };
                    _context.Add(newItem);
                    await _context.SaveChangesAsync();

                    var questions = await _context.QuestionnariesQuestion.Include(q => q.Question).Where(a => a.QuestionnarieId == id).OrderBy(a => a.QuestionNumber).ToListAsync();

                    foreach (var question in questions)
                    {
                        question.QuestionnarieId = newItem.Id;
                        _context.Add(question);
                    }
                    _context.SaveChanges();
                }
                var model = _context.Questionnaries
                            .Include(q => q.QuestionnariesQuestion)
                            .ThenInclude(q => q.Question)
                            .OrderByDescending(a => a.Id);
                return(PartialView("_Questionnaries", await model.ToListAsync()));
            }
            return(Content("Wypełnij wszystkie wymagane pola"));
        }