public void UpdateOpen(StudentExamAnswerOpen entity, StudentExamAnswerOpen dbEntity)
 {
     dbEntity.Question    = entity.Question;
     dbEntity.StudentExam = entity.StudentExam;
     dbEntity.Answer      = entity.Answer;
     _eevaContext.SaveChanges();
 }
        //Add a StudentExamAnswer
        public IActionResult Answer(int id)
        {
            try
            {
                int?studentExamId = (int)TempData["studentExamId"];

                StudentExam studentExam = _studentExamManager.Get(studentExamId);
                Question    question    = studentExam.Exam.ExamQuestions.ElementAt(id - 1);

                ExamQuestionViewModel examQuestionViewModel = NewExamQuestionViewModel(studentExam, question, id);


                //Checking which type of question it is
                if (question is QuestionOpen)
                {
                    examQuestionViewModel.QuestionOpen = _questionManager.GetOpen(question.Id);
                    StudentExamAnswerOpen studentExamAnswerOpen = _studentExamAnswerManager.GetByStudentExamAndQuestionOpen(studentExam.Id, question.Id);
                    if (studentExamAnswerOpen != null)
                    {
                        examQuestionViewModel.Answer = studentExamAnswerOpen.Answer;
                    }
                }
                else if (question is QuestionMultipleChoice)
                {
                    examQuestionViewModel.QuestionMultipleChoice = _questionManager.GetMultipleChoice(question.Id);
                    StudentExamAnswerMultipleChoice studentExamAnswer = _studentExamAnswerManager.GetByStudentExamAndQuestionMultiple(studentExam.Id, question.Id);
                    if (studentExamAnswer != null)
                    {
                        List <int> answers = new List <int>();
                        answers.Add(studentExamAnswer.Answer.Id);
                        examQuestionViewModel.Answers = answers;
                    }
                }
                else
                {
                    return(NotFound());
                }

                TempData["studentExamId"] = studentExam.Id;
                return(View(examQuestionViewModel));
            }
            catch (Exception)
            {
                return(NotFound());
            }
        }
        public IActionResult Answer(int id, string submit, [Bind("Question,Answer,Answers")] ExamQuestionViewModel examQuestionViewModel)
        {
            try
            {
                int studentExamId = (int)TempData["studentExamId"];

                StudentExam studentExam = _studentExamManager.Get(studentExamId);
                Question    question    = studentExam.Exam.ExamQuestions.ElementAt(id - 1);

                //Checking which type of question it is
                if (question is QuestionOpen)
                {
                    StudentExamAnswerOpen so = _studentExamAnswerManager.GetByStudentExamAndQuestionOpen(studentExamId, question.Id);
                    StudentExamAnswerOpen studentExamAnswerOpen =
                        new StudentExamAnswerOpen(
                            _questionManager.GetOpen(question.Id),
                            studentExam,
                            examQuestionViewModel.Answer
                            );
                    if (so == null)
                    {
                        _studentExamAnswerManager.Add(studentExamAnswerOpen);
                    }
                    else
                    {
                        _studentExamAnswerManager.UpdateOpen(studentExamAnswerOpen, so);
                    }
                }
                else if (question is QuestionMultipleChoice)
                {
                    StudentExamAnswerMultipleChoice sc = _studentExamAnswerManager.GetByStudentExamAndQuestionMultiple(studentExamId, question.Id);

                    StudentExamAnswerMultipleChoice studentExamAnswerMultipleChoice =
                        new StudentExamAnswerMultipleChoice(
                            _questionManager.GetMultipleChoice(question.Id),
                            studentExam,
                            _answerMultipleChoiceManager.Get(examQuestionViewModel.Answers.FirstOrDefault())
                            );

                    if (sc == null)
                    {
                        _studentExamAnswerManager.Add(studentExamAnswerMultipleChoice);
                    }
                    else
                    {
                        _studentExamAnswerManager.UpdateMultiple(studentExamAnswerMultipleChoice, sc);
                    }
                }
                else
                {
                    return(NotFound());
                }

                TempData["studentExamId"] = studentExam.Id;

                //Checking which type of submit button is used
                switch (submit)
                {
                case "Save and back to list":
                    return(RedirectToAction(nameof(Index)));

                case "Next":
                    int increase = id + 1;
                    return(RedirectToAction("Answer", "ExamQuestion", new { id = increase }));

                case "Previous":
                    int decrease = id - 1;
                    return(RedirectToAction("Answer", "ExamQuestion", new { id = decrease }));

                default:
                    return(NotFound());
                }
            }
            catch (Exception)
            {
                return(NotFound());
            }
        }