Exemplo n.º 1
0
        public async Task <IActionResult> RandomTest(RandomTestViewModel model)
        {
            if (User.Identity.IsAuthenticated)
            {
                var user = await _userManager.GetUserAsync(User);

                ViewBag.Name = user.Name;
            }
            var subject = _subjectService.GetSubject(model.SubjectId);

            ViewBag.Subject = subject.Name;
            if (ModelState.IsValid)
            {
                return(RedirectToAction("Answers", "Subject", new AnswerViewModel {
                    Answers = model.Answers, ProblemIds = model.ProblemIds, SubjectId = model.SubjectId
                }));
            }

            return(View(model));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> RandomTest(int subjectId)
        {
            try
            {
                if (User.Identity.IsAuthenticated)
                {
                    var user = await _userManager.GetUserAsync(User);

                    ViewBag.Name = user.Name;
                }
                var subject = _subjectService.GetSubject(subjectId);
                ViewBag.Subject = subject.Name;
                var model             = new RandomTestViewModel();
                var problemsOfSubject = _problemService.GetProblemsBySubjectId(subjectId);
                for (int i = 1; i <= subject.MaxNumberInTest; i++)
                {
                    var problemsOfNumber = problemsOfSubject.Where(p => p.Number == i).ToList();
                    if (problemsOfNumber.Count > 0)
                    {
                        var problem = problemsOfNumber[new Random().Next(0, problemsOfNumber.Count)];
                        model.ProblemIds.Add(problem.Id);
                        model.Pictures.AddRange(_pictureService.GetPicturesByProblemId(problem.Id));
                        model.Problems.Add(problem);
                        model.SubjectId = subjectId;
                    }
                }
                model.Answers = new string[model.ProblemIds.Count];
                return(View(model));
            }
            catch (Exception exc)
            {
                return(base.RedirectToAction("Error", "Home", new ErrorViewModel {
                    Message = exc.Message
                }));
            }
        }