public Task AddQuestionsToQuiz(PostQuizQuestionRequestModel quizQuestionRequest)
        {
            var questions = _context.Questions.Where(x => quizQuestionRequest.QuestionIds.Contains(x.Id));


            using (DbContextTransaction dbTran = _context.Database.BeginTransaction())
            {
                try
                {
                    foreach (var question in questions)
                    {
                        var optionsData = _context.Questions.FirstOrDefault(x => x.Id == question.Id)?.Options;

                        var quest = new Question {
                            Name     = question.Name,
                            QuizId   = quizQuestionRequest.QuizId,
                            IsActive = question.IsActive
                        };

                        _context.Questions.Add(quest);
                        _context.SaveChanges();

                        var options = optionsData.ToList()?.Select(x => { x.QuestionId = quest.Id; return(x); });

                        _context.Options.AddRange(options);
                        _context.SaveChanges();
                    }
                    dbTran.Commit();
                }
                catch (DbEntityValidationException ex)
                {
                    dbTran.Rollback();
                    throw;
                }
            }
            return(Task.FromResult(0));
        }
Example #2
0
        public IHttpActionResult AddQuestionsToQuiz([FromBody] PostQuizQuestionRequestModel quizQuestionRequest)
        {
            var response = _questionQueryServices.AddQuestionsToQuiz(quizQuestionRequest);

            return(Ok(response));
        }