public SectionSave(SectionView view, QuizContext cx) { View = view; View.Tests = new List <TestView>(); foreach (var item in view.SectionData) { var question = cx.Questions.Find(item.QuestionId); var testSave = new TestView() { Quiz = question.Quiz, Question = question, Model = XmlBase.Deserialize(question.XmlObject, question.TypeName), Save = item }; //-----------------Is SectionData count equal Test count?------------- View.Tests.Add(testSave); var xmlQuestion = XmlBase.Deserialize(question.XmlObject, question.TypeName); var answerType = XmlBase.GetType(((IAnswerName)xmlQuestion).GetTypeName()); var answerInstance = (XmlBase)Activator.CreateInstance(answerType); ((IParseAnswer)answerInstance).ParseAnswer(item.Answers); Answers.Add(item.QuestionId, answerInstance); } }
public QuestionSave(PerQuestionView view, QuizContext cx) { View = view; var question = cx.Questions.Find(view.Question.Id); QuestionId = question.Id; View.Test = new TestView() { Quiz = question.Quiz, Question = question, Model = XmlBase.Deserialize(question.XmlObject, question.TypeName), Save = view.QuestionData }; var xmlQuestion = XmlBase.Deserialize(question.XmlObject, question.TypeName); var answerType = XmlBase.GetType(((IAnswerName)xmlQuestion).GetTypeName()); var answerInstance = (XmlBase)Activator.CreateInstance(answerType); ((IParseAnswer)answerInstance).ParseAnswer(view.QuestionData.Answers); Answer = answerInstance; }
public TestView CreateTestView(Question question) { var testView = new TestView() { Quiz = question.Quiz, Question = question, Model = XmlBase.Deserialize(question.XmlObject, question.TypeName) }; return(testView); }
public ActionResult GetAttepmt(int?id) { var view = cx.QuizAttempts.Find(id); var quiz = cx.Quizzes.Find(view.Quiz.Id); var model = new QuizAttempView() { Attempt = view, Quiz = quiz, Sections = new List <AttempSectionView>() }; var sections = cx.Sections.Where(x => x.Quiz.Id == quiz.Id).ToList(); foreach (var section in sections) { var sectionAttemp = new AttempSectionView() { Section = section, Tests = new List <AttempTestView>() }; var answers = view.Answers.Where(x => x.Question != null). Where(y => y.Question.Section.Id == section.Id). OrderBy(z => z.Question.OrderNumber).ToList(); foreach (var answer in answers) { var question = answer.Question; var testAttemp = new AttempTestView() { Question = question, Answer = answer, XmlAnswer = XmlBase.Deserialize(answer.XmlObject, answer.TypeName), Model = XmlBase.Deserialize(question.XmlObject, question.TypeName) }; sectionAttemp.Tests.Add(testAttemp); } if (sectionAttemp.Tests.Count != 0) { model.Sections.Add(sectionAttemp); } } ModelState.Clear(); return(View(model)); }
public List <TestView> CreateTestViews(IEnumerable <Question> questions, Quiz quiz) { var testViews = new List <TestView>(); foreach (var question in questions) { var testView = new TestView() { Quiz = quiz, Question = question, Model = XmlBase.Deserialize(question.XmlObject, question.TypeName) }; testViews.Add(testView); } return(testViews); }
public Answer ExamineQuestion(Question question, XmlBase xmlAnswer) { var answer = new Answer() { Question = question, XmlObject = XmlBase.SerializeAbstract(xmlAnswer), }; XmlBase questionXml = XmlBase.Deserialize(question.XmlObject, question.TypeName); if (((IParseAnswer)xmlAnswer).IsValid()) { answer.Mark = ((IXmlTask)questionXml).Compare(xmlAnswer, question.Value); } answer.TypeName = ((IAnswerName)questionXml).GetTypeName(); return(answer); }
public ActionResult ChangeQuestion(RedactorContainerView view) { var question = cx.Questions.Find(view.Question.Id); question.Obligation = view.Question.Obligation; if (view.Question.OrderNumber != question.OrderNumber) { var questions = cx.Questions. Where(x => x.Section.Id == view.Section.Id). OrderBy(y => y.OrderNumber).ToList(); if (view.Question.OrderNumber > questions.Count) { view.Question.OrderNumber = questions.Count; } questions.RemoveAt(question.OrderNumber - 1); questions.Insert(view.Question.OrderNumber - 1, question); int index = 1; foreach (var item in questions) { item.OrderNumber = index; ++index; } } question.Difficulty = view.Question.Difficulty; question.TimeLimit = view.Question.TimeLimit; if (question.Type != null) { ViewBag.Change = true; } if (view.Question.Type != question.Type) { question.Type = view.Question.Type; question.XmlValue = null; question.TypeName = null; } cx.SaveChanges(); RedactorView model = null; if (view.Question.Type != null) { model = RedactorView.GetView((QuestionType)view.Question.Type); model.Question = question; model.Quiz = cx.Quizzes.Find(view.Quiz.Id); model.Section = cx.Sections.Find(view.Section.Id); if (question.XmlValue != null) { model.Model = XmlBase.Deserialize(question.XmlObject, question.TypeName); } } return(PartialView("Redactor", model)); }