public async Task <IActionResult> Edit(string id, [Bind("Id,UserId,TestId,PointsCount,Checked")] UserTestResult userTestResult)
        {
            if (id != userTestResult.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(userTestResult);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!UserTestResultExists(userTestResult.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["TestId"] = new SelectList(_context.Tests, "Id", "Id", userTestResult.TestId);
            ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", userTestResult.UserId);
            return(View(userTestResult));
        }
Esempio n. 2
0
        public void GetTestResult_UserHasSentAnswers_ValidResult()
        {
            //arrange
            var dateTimeProdiver = new Mock <IDateTimeProvider>();
            var utcNow           = new DateTime(2020, 9, 5, 14, 8, 58, 0, DateTimeKind.Utc);

            dateTimeProdiver.Setup(x => x.UtcNow).Returns(utcNow);
            int userId        = 2;
            var scheduledTest = new ScheduledTest(1, utcNow.AddDays(-2), utcNow.AddMinutes(-60), utcNow.AddMinutes(-30), 10, new int[] { userId, 3, 4 });
            var userTest      = new UserTest(2, 0);

            userTest.SetStartDate(utcNow.AddMinutes(-50));
            userTest.SetEndDate(utcNow.AddMinutes(-40));
            var   testAnswers = new TestAnswers(scheduledTest, userTest, "UserName", dateTimeProdiver.Object);
            float maxScore    = 3f;
            int   questionId  = 1;

            testAnswers.AddAnswerPair(new WrittenUserAnswer("value", 0, questionId, userId), new WrittenAnswer(questionId, "value", maxScore));
            questionId = 2;
            testAnswers.AddAnswerPair(new WrittenUserAnswer("value2", 0, questionId, userId), new WrittenAnswer(questionId, "value2", maxScore));
            var expectedUserTestResult = new UserTestResult("UserName", 6f, userId, TestStatus.Completed);

            //act
            UserTestResult result = testAnswers.GetTestResult();

            //assert
            result.Should().BeEquivalentTo(expectedUserTestResult);
        }
Esempio n. 3
0
 private UserTestResultDto MapToUserTestResultDto(UserTestResult result)
 {
     return(new UserTestResultDto
     {
         UserId = result.UserId,
         UserScore = result.UserScore,
         Username = result.Username,
         Status = result.Status.ToString(),
     });
 }
Esempio n. 4
0
        private UserResultModel MapModel(UserTestResult result)
        {
            var mappedResult = mapper.Map <UserResultModel>(result);
            var test         = context.Tests.FirstOrDefault(t => t.Id == result.TestId);

            mappedResult.Username = context.Users.FirstOrDefault(u => u.Id == result.ApplicationUserId).Username;
            mappedResult.TestName = test.Name;
            mappedResult.TestType = context.TestTypes.FirstOrDefault(t => t.Id == test.TestTypeId).TypeName;

            return(mappedResult);
        }
        public async Task <IActionResult> Create([Bind("Id,UserId,TestId,PointsCount,Checked")] UserTestResult userTestResult)
        {
            if (ModelState.IsValid)
            {
                _context.Add(userTestResult);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["TestId"] = new SelectList(_context.Tests, "Id", "Id", userTestResult.TestId);
            ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", userTestResult.UserId);
            return(View(userTestResult));
        }
 public ActionResult AddUpdate(UserTestResult model)
 {
     model.Status      = model.ID > 0 ? model.Status : (short)1;
     model.CreatedDate = DateTime.Now;
     if (new SqlUserTestResultDao().Insert(model))
     {
         TempData["success"] = "Cập nhật thành công";
     }
     else
     {
         TempData["error"] = "Cập nhật thất bại";
     }
     return(Redirect("/Admin/UserTestResult"));
 }
Esempio n. 7
0
        public void GetTestResult_UserHasBeenWritingTestFor2Minutes_ValidResult()
        {
            //arrange
            var dateTimeProdiver = new Mock <IDateTimeProvider>();
            var utcNow           = new DateTime(2020, 9, 5, 14, 8, 58, 0, DateTimeKind.Utc);

            dateTimeProdiver.Setup(x => x.UtcNow).Returns(utcNow);
            int userId        = 2;
            var scheduledTest = new ScheduledTest(1, utcNow.AddDays(-2), utcNow.AddMinutes(-5), utcNow.AddMinutes(10), 10, new int[] { userId, 3, 4 });
            var userTest      = new UserTest(2, 0);

            userTest.SetStartDate(utcNow.AddMinutes(-2));
            var testAnswers            = new TestAnswers(scheduledTest, userTest, "UserName", dateTimeProdiver.Object);
            var expectedUserTestResult = new UserTestResult("UserName", null, userId, TestStatus.IsInProcess);

            //act
            UserTestResult result = testAnswers.GetTestResult();

            //assert
            result.Should().BeEquivalentTo(expectedUserTestResult);
        }
Esempio n. 8
0
        public async Task <IActionResult> Check([Bind("TestId,CourseId,Questions")] TestViewModel testViewModel, string courseId, string testId)
        {
            User currentUser = await _userManager.GetUserAsync(User);

            if (!await _userManager.IsInRoleAsync(currentUser, "Student"))
            {
                //return Challenge();
            }
            int  countCorrect   = 0;
            bool noOpenQuestion = true;

            foreach (var question in testViewModel.Questions)
            {
                switch (question.Type)
                {
                case Question.QuestionType.SingleAnswer:
                    int i = 0;
                    while (!question.Answers[i].Correct)
                    {
                        i++;
                    }
                    if (question.SelectedAnswerId == question.Answers[i].AnswerId)
                    {
                        countCorrect++;
                    }
                    break;

                case Question.QuestionType.MultipleAnswer:
                    bool allCorrect = true;
                    foreach (var answer in question.Answers)
                    {
                        if (answer.Correct != answer.Selected)
                        {
                            allCorrect = false;
                        }
                    }
                    if (allCorrect)
                    {
                        countCorrect++;
                    }
                    break;

                case Question.QuestionType.Open:
                    noOpenQuestion = false;
                    OpenQuestionAnswer openAnswer = new OpenQuestionAnswer
                    {
                        Id      = Guid.NewGuid().ToString(),
                        Content = question.OpenAnswer,
                        UserId  = currentUser.Id,
                        //User = currentUser,
                        QuestionId = question.QuestionId,
                        //Question = question,
                        Checked = false
                    };
                    OpenQuestionAnswersController openAnswersController = new OpenQuestionAnswersController(_context, _userManager);
                    await openAnswersController.Create(openAnswer);

                    break;

                default: break;
                }
            }

            UserTestResult testResult = new UserTestResult
            {
                Id     = Guid.NewGuid().ToString(),
                UserId = currentUser.Id,
                //User=
                TestId = testViewModel.TestId,
                //Test=
                PointsCount = countCorrect,
                Checked     = noOpenQuestion
            };
            UserTestResultsController resultsController = new UserTestResultsController(_context);
            await resultsController.Create(testResult);

            return(RedirectToAction("Details", "Courses", new { id = courseId }));
        }