public PartialViewResult NextQuestion(int SessionId, int SeqNumber) { NewSessionViewModel vm = new NewSessionViewModel(); Answer nextQuestion = db.Answer.Include(x => x.Question).Where(x => x.QuizSessionId == SessionId && x.SeqNumber == (SeqNumber + 1)).FirstOrDefault(); if (nextQuestion == null) { return(null); } vm.SessionId = SessionId; vm.CurrentQuestion.Id = nextQuestion.QuestionId; var lastAnswer = db.Answer.Where(x => x.QuizSessionId == SessionId).ToList().Last(); vm.CurrentQuestion.IsLastQuestion = lastAnswer.QuestionId == nextQuestion.QuestionId ? true : false; vm.CurrentQuestion.SeqNumber = nextQuestion.SeqNumber; vm.CurrentQuestion.Text = nextQuestion.Question.Text; vm.CurrentQuestion.PossibleAnswers = db.QuestionOptions.Where(qo => qo.QuestionId == nextQuestion.QuestionId).Select(x => new NewSessionViewModel.QuestionInfo.OptionInfo { Id = x.Id, Text = x.Text }).ToList(); vm.CurrentQuestion.ChosenAnswerId = nextQuestion.QuestionOptionId; return(PartialView("_QuizQuestionPrevNextPartial", vm)); }
// GET: /Session/Create public ActionResult Create(int?courseID) { ApplicationUser user = UserManager.FindById(User.Identity.GetUserId()); if (user == null) { return(HttpNotFound()); } if (courseID == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Course course = db.Courses.Find(courseID); if (user.UserType != ApplicationUser.UserTypes.Teacher) { return(RedirectToAction("Index", "Sessions", new { courseID = courseID })); } NewSessionViewModel view = new NewSessionViewModel(); view.CourseID = (int)courseID; view.CourseName = course.Name; return(View(view)); }
public ActionResult Create(NewSessionViewModel view) { if (ModelState.IsValid) { var oldSessions = from s in db.Sessions.Include(s => s.Course) where (s.CourseID == view.CourseID) && (s.Ended == false) select s; foreach (Session s in oldSessions) { s.Ended = true; db.Entry(s).State = EntityState.Modified; } Session session = new Session() { CourseID = view.CourseID, Name = view.Name, DateStarted = System.DateTime.Now, Ended = false }; db.Sessions.Add(session); db.SaveChanges(); // Want to change the default below to redirect to Question list for session? return(RedirectToAction("Index", "Questions", new { sessionID = session.ID })); } return(View(view)); }
public PartialViewResult StartQuiz(int QuizvId) { NewSessionViewModel vm = new NewSessionViewModel(); Quiz q = db.Quizes.Include(x => x.Teacher).Include(x => x.Questions).Where(x => x.vId == QuizvId).FirstOrDefault(); vm.vId = q.vId; vm.Teacher = q.Teacher.Name; vm.Name = q.Name; vm.CreatedAt = q.CreatedAt; QuizSession session = new QuizSession(); session.QuizId = q.Id; session.StartedAt = DateTime.Now; session.UserId = Autentifikacija.GetLogiraniKorisnik(HttpContext).Id; session.WrongAnswers = 0; session.CorrectAnswers = 0; db.QuizSessions.Add(session); db.SaveChanges(); vm.SessionId = session.Id; int i = 1; foreach (var question in q.Questions) { session.PupilAnswers.Add(new Answer { AndsweredCorrectly = null, QuestionId = question.Id, QuestionOptionId = null, QuizSessionId = session.Id, SeqNumber = i }); i++; } db.SaveChanges(); vm.CurrentQuestion = q.Questions.Where(qu => qu.Id == session.PupilAnswers.Where(pa => pa.SeqNumber == 1).First().QuestionId) .Select(x => new NewSessionViewModel.QuestionInfo { Id = x.Id, PossibleAnswers = db.QuestionOptions.Where(qo => qo.QuestionId == x.Id).Select(y => new NewSessionViewModel.QuestionInfo.OptionInfo { Id = y.Id, Text = y.Text }).ToList(), Text = x.Text, SeqNumber = 1, IsLastQuestion = false }).FirstOrDefault(); return(PartialView("_QuizQuestionPartial", vm)); }
public ActionResult NewSession(int Id) //Id === vId { NewSessionViewModel vm = new NewSessionViewModel(); Quiz q = db.Quizes.Include(x => x.Teacher).Where(x => x.vId == Id).FirstOrDefault(); vm.vId = q.vId; vm.Teacher = q.Teacher.Name; vm.Name = q.Name; vm.CreatedAt = q.CreatedAt; return(View(vm)); }
public ActionResult NewSession(NewSessionViewModel model) { return(HandleHttpPostRequest( currentSessionShouldNotExist: true, tryExecute: () => { _currentSessionOfExpertsService.StartNewSession(model.BaseNotion); return RedirectToAction("CurrentSession"); }, andIfErrorReturn: RedirectToAction("CurrentSession"), viewWithProcessedForm: View("NewSession", model))); }
public void NewSession_SessionDoesNotExistAndModelIsValid_StartNewSessionAndRedirectToCurrentSession() { var controllerUnderTest = CreateControllerUnderTest(); var sessionViewModel = new NewSessionViewModel { BaseNotion = "baseNotion" }; var result = (RedirectToRouteResult)controllerUnderTest.NewSession(sessionViewModel); _fakeAdminCurrentSessionOfExpertsService.Received().StartNewSession(Arg.Is("baseNotion")); Assert.AreEqual("CurrentSession", result.RouteValues["action"]); }
public void NewSession_SessionDoesNotExistAndModelIsNotValid_DisplayView() { var controllerUnderTest = CreateControllerUnderTest(); var sessionViewModel = new NewSessionViewModel { BaseNotion = "testNotion" }; controllerUnderTest.ModelState.AddModelError("test", "test error"); var result = (ViewResult)controllerUnderTest.NewSession(sessionViewModel); Assert.AreEqual("NewSession", result.ViewName); Assert.IsInstanceOf <NewSessionViewModel>(result.Model); }
public async Task <IActionResult> Index(NewSessionViewModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } else { await _sessionRepository.AddAsync(new BrainstormSession() { DateCreated = DateTimeOffset.Now, Name = model.SessionName }); } return(RedirectToAction(actionName: nameof(Index))); }
public async Task IndexPost_ReturnsBadRequestResult_WhenModelStateIsInvalid() { var mockRepo = new Mock <IBrainstormSessionRepository>(); mockRepo.Setup(repo => repo.ListAsync()).ReturnsAsync(GetTestSessions()); var homeController = new HomeController(mockRepo.Object); homeController.ModelState.AddModelError("SessionName", "Required"); var seesion = new NewSessionViewModel(); //Act var result = await homeController.Index(seesion); // Assert var badRequestResult = Assert.IsType <BadRequestObjectResult>(result); Assert.IsType <SerializableError>(badRequestResult.Value); }
public async Task IndexPost_ReturnsARedirectAndAddsSession_WhenModelStateIsValid() { // Arrange var mockRepo = new Mock <IBrainstormSessionRepository>(); mockRepo.Setup(repo => repo.AddAsync(It.IsAny <BrainstormSession>())) .Returns(Task.CompletedTask) .Verifiable(); var controller = new HomeController(mockRepo.Object); var newSession = new NewSessionViewModel { SessionName = "Test Name" }; // Act var result = await controller.Index(newSession); // Assert var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result); Assert.Null(redirectToActionResult.ControllerName); Assert.Equal("Index", redirectToActionResult.ActionName); mockRepo.Verify(); }