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)); }
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); }
private UserTestResultDto MapToUserTestResultDto(UserTestResult result) { return(new UserTestResultDto { UserId = result.UserId, UserScore = result.UserScore, Username = result.Username, Status = result.Status.ToString(), }); }
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")); }
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); }
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 })); }