예제 #1
0
        /// <summary>
        /// Executes the default behavior for saving an aswer.
        /// </summary>
        /// <param name="savedAnswer"></param>
        /// <param name="answer"></param>
        /// <param name="repository"></param>
        /// <param name="question"></param>
        /// <param name="insert"></param>
        /// <param name="update"></param>
        private void SaveAnswer(Answer savedAnswer, AnswerModelViewBase answer, IRepository repository, Domain.Question question, Func <IRepository, AnswerQuestionOption> insert, Func <IRepository, AnswerQuestionOption, bool> update)
        {
            // If it came until here, we know that it is likely to be a valid request
            savedAnswer.AnsweredAt = DateTime.Now; //Changing to know the last time the user answered

            // Loading the last option that the user selected
            AnswerQuestionOption answerOption = null;

            if (savedAnswer.Answers != null)
            {
                answerOption = savedAnswer.Answers.FirstOrDefault(r => r.Question.Id == answer.Question.Id);
            }
            else
            {
                savedAnswer.Answers = new List <AnswerQuestionOption>();
            }

            // If it is null, means that the user have not answered the question yet
            if (answerOption == null)
            {
                answerOption          = insert(repository);
                answerOption.Question = question;
                savedAnswer.Answers.Add(answerOption);
            }
            else
            {
                update(repository, answerOption);
            }

            repository.SaveChanges();
        }
예제 #2
0
        /// <summary>
        /// Auxiliar method for getting the persisted answer for a quiz application and determined question.
        /// </summary>
        /// <param name="repository"></param>
        /// <param name="answer"></param>
        /// <param name="idQuestion"></param>
        /// <returns></returns>
        private AnswerModelViewBase CreateInfoAnswer(IRepository repository,
                                                     Answer answer, int idQuestion)
        {
            AnswerQuestionOption infoAnswer = repository.GetAnswerQuestionOptionByQuestioId(answer.Id, idQuestion);

            if (infoAnswer != null)
            {
                AnswerModelViewBase returnAnswer = CreateAnswerModelView(repository, answer, idQuestion, infoAnswer);

                if (returnAnswer != null)
                {
                    returnAnswer.Id = infoAnswer.Id;
                    return(returnAnswer);
                }
            }

            return(null);
        }