Exemplo n.º 1
0
        public ActionResult SelectTest()
        {
            TestSelectionModel model = new TestSelectionModel();

            model.CategoriesList = _db.Categories.Select(c => new SelectListItem
            {
                Text  = c.CategoryName,
                Value = c.Id.ToString()
            }).ToList();
            return(View(model));
        }
Exemplo n.º 2
0
        public ActionResult Enrollment(TestSelectionModel model)
        {
            if (ModelState.IsValid)
            {
                var testSelected = _db.Tests.FirstOrDefault(t => t.Id == model.TestId);

                // Получаем логин пользователя
                var userLogin = User.Identity.Name;

                // ищем Id пользователя
                var userConnected = _db.Users
                                    .FirstOrDefault(u => u.Login == userLogin);

                if (userConnected == null)
                {
                    return(HttpNotFound());
                }

                Enrollment enrollment = _db.Enrollments
                                        .FirstOrDefault(e => e.UserId == userConnected.Id && e.TestId == model.TestId &&
                                                        e.TokenExpirationTime > DateTime.UtcNow);

                if (enrollment != null)
                {
                    this.Session["Token"]           = enrollment.Token;
                    this.Session["TokenExpiration"] = enrollment.TokenExpirationTime;
                }

                if (testSelected != null)
                {
                    Enrollment newEnrollment = new Enrollment()
                    {
                        UserId              = userConnected.Id,
                        EnrollmentDate      = DateTime.UtcNow,
                        TestId              = model.TestId,
                        Token               = Guid.NewGuid(),
                        TokenExpirationTime = DateTime.UtcNow.AddMinutes(testSelected.Duration)
                    };
                    userConnected.Enrollments.Add(newEnrollment);
                    _db.Enrollments.Add(newEnrollment);
                    _db.SaveChanges();

                    this.Session["Token"]           = newEnrollment.Token;
                    this.Session["TokenExpiration"] = newEnrollment.TokenExpirationTime;
                }
                return(RedirectToAction("TestPage", new { Token = Session["Token"] }));
            }
            return(View());
        }
Exemplo n.º 3
0
 public ActionResult TestInstruction(TestSelectionModel model)
 {
     if (ModelState.IsValid)
     {
         var testSelected = _db.Tests.FirstOrDefault(t => t.Id == model.TestId);
         if (testSelected != null)
         {
             ViewBag.TestTitle       = testSelected.TestTitle;
             ViewBag.TestDescription = testSelected.Description;
             ViewBag.QuestionCount   = _db.Questions.Where(q => q.TestId == model.TestId).Count();
             ViewBag.TestDuration    = testSelected.Duration;
         }
     }
     return(View());
 }
Exemplo n.º 4
0
        public ActionResult SelectTest(int?categoryId, int?subcategoryId, int?subSubcategoryId, int?testId)
        {
            TestSelectionModel model = new TestSelectionModel();

            // Выбор темы
            model.CategoriesList = _db.Categories.Select(c => new SelectListItem
            {
                Text  = c.CategoryName,
                Value = c.Id.ToString()
            }).ToList();

            // Выбор подтемы
            if (categoryId.HasValue)
            {
                model.SubcategoriesList = _db.Subcategories
                                          .Where(s => s.CategoryId == categoryId.Value)
                                          .Select(s => new SelectListItem
                {
                    Text  = s.SubcategoryName,
                    Value = s.Id.ToString()
                }).ToList();

                // Выбор подподтемы
                if (subcategoryId.HasValue)
                {
                    model.SubSubcategoriesList = _db.SubSubcategories
                                                 .Where(s => s.SubcategoryId == subcategoryId.Value)
                                                 .Select(s => new SelectListItem
                    {
                        Text  = s.SubSubcategoryName,
                        Value = s.Id.ToString()
                    }).ToList();
                }

                // Выбор теста
                if (subSubcategoryId.HasValue)
                {
                    model.TestsList = _db.Tests
                                      .Where(s => s.SubSubcategoryId == subSubcategoryId.Value)
                                      .Select(s => new SelectListItem
                    {
                        Text  = s.TestTitle,
                        Value = s.Id.ToString()
                    }).ToList();
                }
            }
            if (testId.HasValue)
            {
                var testSelected = _db.Tests.Where(t => t.Id == testId.Value)
                                   .Select(t => new TestSelectionModel
                {
                    TestId          = t.Id,
                    TestTitle       = t.TestTitle,
                    TestDescription = t.Description,
                    QuestionsCount  = t.Questions.Where(q => q.TestId == model.TestId).Count(),
                    TestDuration    = t.Duration
                }).FirstOrDefault();

                if (testSelected != null)
                {
                    // Записываем в состояние сеанса информацию выбранном тесте
                    Session["SelectedTest"] = testSelected;

                    return(RedirectToAction("TestInstruction", "Home"));
                }
            }
            return(View(model));
        }