Beispiel #1
0
        public TestGenerateViewModel GetGenerateViewModel(TestViewModel test)
        {
            TestGenerateViewModel model = new TestGenerateViewModel
            {
                Theme = new SelectList(Database.Themes.GetAll(), "IdTheme", "ThemeName")
            };

            return(model);
        }
 public ActionResult GenerateTest(TestGenerateViewModel model)
 {
     if (ModelState.IsValid)
     {
         if (!model.Create)
         {
             return(View(_testService.GenerateTest(model)));
         }
         else
         {
             _testService.GenerateTest(model);
             return(RedirectToAction("GetInfoTest", "Test"));
         }
     }
     else
     {
         return(View(model));
     }
 }
Beispiel #3
0
        public TestGenerateViewModel GenerateTest(TestGenerateViewModel model)
        {
            if (model.Create)
            {
                Test generateTest = new Test
                {
                    Difficult       = model.selectedDifficult,
                    IdTheme         = Int32.Parse(model.selectedTheme),
                    TestDescription = model.TestDescription,
                    TestName        = model.TestName,
                    CreateDate      = DateTime.Now,
                    Time            = new TimeSpan(0, model.selectedTime, 0),
                    QuestionsNumber = model.selectedNumber,
                };

                generateTest.Questions = new List <Question>();

                foreach (QuestionViewModel question in model.Questions)
                {
                    generateTest.Questions.Add((Database.Questions.Get(question.IdQuestion)));
                    generateTest.TotalScore += Database.Questions.Get(question.IdQuestion).Score;
                }

                Database.Tests.Add(generateTest);
                Database.Complete();
                return(null);
            }

            else
            {
                model.Questions.Clear();

                Random randomGenerate = new Random();

                var questionsId = Database.Questions.GetAll().
                                  Where(x => x.Difficult == model.selectedDifficult &&
                                        x.IdTheme == Int32.Parse(model.selectedTheme)).
                                  Select(x => x.IdQuestion).
                                  OrderBy(x => randomGenerate.Next()).
                                  Take((int)Math.Round(model.selectedNumber * 0.8));

                List <int> questions_1 = questionsId.ToList();

                var questionsIdAdding = Database.Questions.GetAll().
                                        Where(x => x.Difficult != model.selectedDifficult ||
                                              x.IdTheme != Int32.Parse(model.selectedTheme)).
                                        Select(x => x.IdQuestion).
                                        OrderBy(x => randomGenerate.Next()).
                                        Take(model.selectedNumber - questions_1.Count());


                List <int> questions_2 = questionsIdAdding.ToList();


                foreach (int id in questions_1.Concat(questions_2))
                {
                    model.Questions.Add(MapperFromDB.Map <QuestionViewModel>(Database.Questions.Get(id)));
                }

                model.Theme = new SelectList(Database.Themes.GetAll(), "IdTheme", "ThemeName");

                return(model);
            }
        }