Example #1
0
        /// <summary>
        /// Get information for publishing quiz
        /// </summary>
        /// <param name="idAnswer"></param>
        /// <returns></returns>
        public PublishedQuiz GetPublishedQuiz(int idAnswer)
        {
            using (IRepository repository = Repository.Repository.CreateRepository())
            {
                Domain.Answer answer = repository.GetAnswer(idAnswer);

                if (answer != null && answer.User.Id == currentUserId)
                {
                    return(CreatePublishedQuiz(answer.Quiz));
                }
            }

            return(null);
        }
        public List <Cholestabetes.Domain.Question> GetQuestionList(int screenID)
        {
            int lastQID = -1;

            bool addQuestion = false;

            List <Cholestabetes.Domain.Question> questionLst = new List <Domain.Question>();

            foreach (sp_GetQuestionsAnswersByScreen_Result item in Entites.sp_GetQuestionsAnswersByScreen(screenID).ToList())
            {
                Domain.Question question = null;

                if (lastQID != item.QuestionID)
                {
                    question = new Domain.Question();

                    question.ID       = item.QuestionID;
                    question.Required = item.QuestionRequired;
                    question.Sequence = item.QuestionSequence;
                    question.Text     = item.QuestionText;
                    question.Type     = item.QuestionType;
                    question.Screen   = item.Screen.Value;

                    addQuestion = true;
                }
                else
                {
                    question = questionLst[questionLst.Count - 1] as Domain.Question;

                    addQuestion = false;
                }

                //getting answers
                Domain.Answer ans = new Domain.Answer();
                ans.ID   = item.AnswerID;
                ans.QID  = item.AnswerQuestionID;
                ans.Text = item.AnswerText;

                question.Answers.Add(ans);

                if (addQuestion)
                {
                    questionLst.Add(question);
                }

                lastQID = item.QuestionID;
            }

            return(questionLst);
        }
Example #3
0
        /// <summary>
        /// Implements the default behavior for saving an answer, such as checking
        /// the ownership of that quiz, identifying the parameters and etc.
        /// At the end of the execution, this method will delegate the operation to
        /// one of the functions sent as parameter, depending on the results encontered here.
        /// </summary>
        /// <param name="answer">The answer to be persisted</param>
        /// <param name="insert">The instructions for including a new value</param>
        /// <param name="update">The instructions for updating a item that is already in the database</param>
        /// <returns></returns>
        protected ResultOperation SaveAnswer(AnswerModelViewBase answer,
                                             Func <IRepository, AnswerQuestionOption> insert,
                                             Func <IRepository, AnswerQuestionOption, bool> update)
        {
            try
            {
                // Disposing repository to avoid overloading the data context
                using (IRepository repository = Repository.Repository.CreateRepository())
                {
                    // Loading the quiz from the database
                    Domain.Quiz quiz = repository.GetQuiz(answer.Question.IdQuiz);

                    // Loading the answer for that qu iz and for that user
                    Domain.Answer savedAnswer = repository.GetAnswer(quiz.Id, userId);

                    if (savedAnswer.Id == answer.Id)
                    {
                        // If there is no answer, it might mean that someone is trying to send bad data.
                        // We also will allow only changes to quizes that are open and have not been evaluated
                        if (savedAnswer != null && savedAnswer.IsOpen && !savedAnswer.Evaluated)
                        {
                            // Making sure that the question received belongs to that quiz
                            var question = quiz.Questions.FirstOrDefault(r => r.Id == answer.Question.Id);
                            if (question != null)
                            {
                                SaveAnswer(savedAnswer, answer, repository, question, insert, update);
                            }
                        }
                        else
                        {
                            messages.Add("There is no quiz active for this question!");
                        }
                    }
                    else
                    {
                        messages.Add("There is no quiz active for this question!");
                    }
                }
            }
            catch (Exception ex)
            {
                LogException(ex);
                messages.Add(DefaultErrorMessage());
            }

            return(messages);
        }
Example #4
0
        /// <summary>
        /// Return the answer for a question. But it returns for the creator of this quiz.
        /// </summary>
        /// <param name="idAnswer"></param>
        /// <param name="idQuestion"></param>
        /// <returns></returns>
        public AnswerModelViewBase GetAnswerReport(int idAnswer, int idQuestion)
        {
            using (IRepository repository = Repository.Repository.CreateRepository())
            {
                Domain.Answer answer = repository.GetAnswer(idAnswer);

                if (answer != null)
                {
                    if (answer.Quiz.Creator.Id == userId || answer.User.Id == userId)
                    {
                        return(CreateInfoAnswer(repository, answer, idQuestion));
                    }
                }
            }

            return(null);
        }
 public AnswerVM()
 {
     _answer = new Domain.Answer();
 }
 public AnswerVM(Domain.Answer answer)
 {
     _answer = answer;
 }
Example #7
0
        /// <summary>
        /// Builds the return for GetListOptionsForAnswer
        /// </summary>
        /// <param name="repository"></param>
        /// <param name="answer"></param>
        /// <param name="idQuestion"></param>
        /// <returns></returns>
        private List <ListItem> GetMultipleChoiceFromQuestion(IRepository repository, Domain.Answer answer, int idQuestion)
        {
            List <ListItem> returnedList = new List <ListItem>();

            if (answer.Quiz.Questions.Any(r => r.Id == idQuestion))
            {
                var options = repository.GetMultipleChoiceOptions(idQuestion);

                if (options != null && options.Count > 0)
                {
                    options.ForEach(r =>
                    {
                        returnedList.Add(new ListItem()
                        {
                            Id   = r.Id,
                            Name = r.Content
                        });
                    });
                }
            }

            return(returnedList);
        }