Ejemplo n.º 1
0
        public ThemeViewModel Get(int?id)
        {
            Theme          theme    = Database.Themes.Get(id.Value);
            ThemeViewModel themeDTO = MapperFromDB.Map <ThemeViewModel>(theme);

            return(themeDTO);
        }
Ejemplo n.º 2
0
 public List <ResultFullViewModel> GetLastResults()
 {
     return(MapperFromDB.Map <IEnumerable <Result>, List <ResultFullViewModel> >
                (Database.Results.GetAll().
                OrderByDescending(x => x.CreateDate).
                Take(5)));
 }
Ejemplo n.º 3
0
        public OperationDetails TestPassing(QuestionViewModel question)
        {
            TimerModule currentTimer = (TimerModule)HttpContext.Current.Application["Timer" + HttpContext.Current.User.Identity.Name];

            TempResult tempResult = Database.TempResults.GetAll().
                                    Where(x => x.UserName == HttpContext.Current.User.Identity.Name).
                                    SingleOrDefault();
            bool isPass = PassedQuestion(question, ref tempResult);

            if (currentTimer.StopWatch.IsRunning && !String.IsNullOrWhiteSpace(tempResult.QuestionPassing))
            {
                if (isPass)
                {
                    QuestionViewModel nextQuestion = MapperFromDB.Map <Question, QuestionViewModel>
                                                         (Database.Questions.Get(tempResult.QuestionPassing.StringStirrer().FirstOrDefault()));
                    HttpContext.Current.Application["Test" + HttpContext.Current.User.Identity.Name] = nextQuestion.IdQuestion;
                    return(new OperationDetails(true, nextQuestion));
                }
                return(new OperationDetails(true, question));
            }

            else
            {
                EndTestPassing(tempResult);
                return(new OperationDetails(false, null));
            }
        }
Ejemplo n.º 4
0
        public OperationDetails GetCurrentTestState(int IdQuestion)
        {
            TempResult tempResult = Database.TempResults.
                                    Find(x => x.UserName == HttpContext.Current.User.Identity.Name).
                                    SingleOrDefault();

            int currentId = Int32.Parse(
                HttpContext.Current.Application["Test" + HttpContext.Current.User.Identity.Name].ToString());

            TimerModule timer = (TimerModule)
                                HttpContext.Current.Application["Timer" + HttpContext.Current.User.Identity.Name];

            if (tempResult != null)
            {
                if (String.IsNullOrWhiteSpace(tempResult.QuestionsPassed))
                {
                    QuestionViewModel question = MapperFromDB.Map <Question, QuestionViewModel>
                                                     (Database.Questions.Get(currentId));
                    foreach (AnswerViewModel answer in question.Answers)
                    {
                        answer.Correct = false;
                    }

                    return(new OperationDetails(Math.Round(timer.CurrentInterval().TotalSeconds).ToString(),
                                                question));
                }
                if (tempResult.QuestionPassing.StringStirrer().
                    Contains(currentId))
                {
                    QuestionViewModel question = MapperFromDB.Map <Question, QuestionViewModel>
                                                     (Database.Questions.Get(currentId));
                    foreach (AnswerViewModel answer in question.Answers)
                    {
                        answer.Correct = false;
                    }

                    return(new OperationDetails(Math.Round(timer.CurrentInterval().TotalSeconds).ToString(),
                                                question));
                }
                else
                {
                    QuestionViewModel question = MapperFromDB.Map <Question, QuestionViewModel>
                                                     (Database.Questions.Get(IdQuestion));
                    foreach (AnswerViewModel answer in question.Answers)
                    {
                        answer.Correct = false;
                    }

                    return(new OperationDetails(
                               Math.Round(timer.CurrentInterval().TotalSeconds).ToString(),
                               question));
                }
            }
            else
            {
                return(new OperationDetails(false, ""));
            }
        }
Ejemplo n.º 5
0
 public ResultFullViewModel GetResult(int?id)
 {
     try
     {
         return(MapperFromDB.Map <Result, ResultFullViewModel>(Database.Results.Get(id.Value)));
     }
     catch (Exception e)
     {
         return(null);
     }
 }
Ejemplo n.º 6
0
        public QuestionViewModel GetQuestion(int?id)
        {
            Question question = Database.Questions.Get(id.Value);

            if (question != null)
            {
                return(MapperFromDB.Map <Question, QuestionViewModel>(Database.Questions.Get(id.Value)));
            }
            else
            {
                return(null);
            }
        }
Ejemplo n.º 7
0
 public TestViewModel GetTest(int?id)
 {
     try
     {
         Test          test    = Database.Tests.Get(id.Value);
         TestViewModel testDTO = MapperFromDB.Map <TestViewModel>(test);
         return(testDTO);
     }
     catch (Exception e)
     {
         return(null);
     }
 }
Ejemplo n.º 8
0
 public QuestionCreateViewModel GetCreationModel(int?id)
 {
     if (!id.HasValue)
     {
         QuestionCreateViewModel newQuestion = new QuestionCreateViewModel();
         newQuestion.Theme   = new SelectList(Database.Themes.GetAll(), "IdTheme", "ThemeName");
         newQuestion.Answers = new List <AnswerViewModel>();
         for (int i = 0; i < 5; i++)
         {
             newQuestion.Answers.Add(new AnswerViewModel());
         }
         return(newQuestion);
     }
     else
     {
         if (Database.Questions.Get(id.Value) != null)
         {
             Question question = Database.Questions.Get(id.Value);
             QuestionCreateViewModel updateQuestion = new QuestionCreateViewModel
             {
                 selectedDifficult = question.Difficult,
                 QuestionText      = question.QuestionText,
                 Answers           = MapperFromDB.Map <IEnumerable <Answer>, List <AnswerViewModel> >(question.Answers),
                 IdQuestion        = question.IdQuestion,
                 ImageMimeType     = question.ImageMimeType,
                 QuestionImage     = question.QuestionImage
             };
             if (question.Theme == null)
             {
                 updateQuestion.selectedTheme = "no theme";
             }
             else
             {
                 updateQuestion.selectedTheme = question.Theme.ThemeName;
             }
             updateQuestion.Theme = new SelectList(Database.Themes.GetAll(), "IdTheme", "ThemeName");
             return(updateQuestion);
         }
         else
         {
             return(null);
         }
     }
 }
Ejemplo n.º 9
0
 public IEnumerable <ThemeViewModel> GetAll()
 {
     return(MapperFromDB.Map <IEnumerable <Theme>, List <ThemeViewModel> >(Database.Themes.GetAll()));
 }
Ejemplo n.º 10
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);
            }
        }