Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
 public ActionResult NewSession(NewSessionViewModel model)
 {
     return(HandleHttpPostRequest(
                currentSessionShouldNotExist: true,
                tryExecute: () =>
     {
         _currentSessionOfExpertsService.StartNewSession(model.BaseNotion);
         return RedirectToAction("CurrentSession");
     },
                andIfErrorReturn: RedirectToAction("CurrentSession"),
                viewWithProcessedForm: View("NewSession", model)));
 }
Ejemplo n.º 7
0
        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"]);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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)));
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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();
        }