public ActionResult End([Bind(Include = "Id,ParticipantName,QuestionsWithAnswers")] QuizTakingViewModel model)
        {
            if (ModelState.IsValid == false)
            {
                LoadRelationshipProperties(model);
                return(View("InProgress", model));
            }

            var quizTaking = _quizTakingRepository.Get(model.Id);

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

            quizTaking.Ended = DateTime.UtcNow;

            _quizTakingRepository.Update(quizTaking);

            var questionsWithAnswersDataModels = model.QuestionsWithAnswers.Select(
                o => QuestionWithAnswersInputViewModel.MapToDataModel(o, quizTaking.Id)
                );

            questionsWithAnswersDataModels.ForEach(
                quizItemQuestionAnswerDataModel =>
                _quizItemQuestionAnswerRepository.Add(quizItemQuestionAnswerDataModel)
                );

            return(RedirectToAction("QuizCompleted", new { model.Id }));
        }
        private void LoadRelationshipProperties(QuizTakingViewModel model)
        {
            var quizItem = _quizItemRepository.Get(model.QuizItemId);

            model.QuizItemName = quizItem.Name;

            var quizItemQuestions = _quizItemQuestionRepository.GetQuestionsForQuizItem(model.QuizItemId);

            model.QuestionsWithAnswers = quizItemQuestions.Select(QuestionWithAnswersInputViewModel.MapFromDataModel).ToList();
        }
        public ActionResult Start([Bind(Include = "QuizItemId,ParticipantName")] QuizTakingViewModel model)
        {
            if (ModelState.IsValid == false)
            {
                LoadRelationshipProperties(model);
                return(View(model));
            }

            var quizTaking = new QuizTaking
            {
                QuizItemId      = model.QuizItemId,
                Created         = DateTime.UtcNow,
                ParticipantName = model.ParticipantName
            };

            var id = _quizTakingRepository.Add(quizTaking);

            return(RedirectToAction("InProgress", new { id }));
        }
        public ActionResult InProgress(int id)
        {
            if (id == 0)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var quizTaking = _quizTakingRepository.Get(id);

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

            var model = QuizTakingViewModel.MapFromDataModel(quizTaking);

            LoadRelationshipProperties(model);

            return(View("InProgress", model));
        }
        //private readonly IQuizItemQuestionRepository _quizItemQuestionRepository = new SqlDbQuizItemQuestionRepository();

        public ActionResult Start(int quizItemId)
        {
            if (quizItemId == 0)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var quizItem = _quizItemRepository.Get(quizItemId);

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

            var model = new QuizTakingViewModel {
                QuizItemId = quizItemId
            };

            LoadRelationshipProperties(model);

            return(View("Start", model));
        }