/// <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); }
/// <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); }
/// <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; }
/// <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); }