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; }
/// <summary> /// For default initializing /// </summary> public TestSave(QuizContext context, List <SectionView> sectionViews) { _cx = context; Id = _GenerateId(); foreach (var item in sectionViews) { var sectionSave = new SectionSave() { View = item, Answers = new Dictionary <int, XmlModels.XmlBase>() }; foreach (var test in item.Tests) { var answerName = ((IAnswerName)test.Model).GetTypeName(); var answerInstance = (XmlBase)Activator.CreateInstance(XmlBase.GetType(answerName)); sectionSave.Answers.Add(test.Question.Id, answerInstance); } Saves.Add(item.Section.Id, sectionSave); } }
public TestSave(QuizContext context, List <PerQuestionView> questionViews) { _cx = context; Id = _GenerateId(); foreach (var item in questionViews) { var answerName = ((IAnswerName)item.Test.Model).GetTypeName(); var answerInstance = (XmlBase)Activator.CreateInstance(XmlBase.GetType(answerName)); var emptySave = new QuestionSave() { View = item, QuestionId = item.Question.Id, Answer = answerInstance }; QuestionSaves.Add(item.Question.Id, emptySave); } QuestionOrders = questionViews.Select(x => new { QuestionId = x.Question.Id, SectionOrder = x.Question.Section.Order, QuestionOrder = x.Question.OrderNumber }).ToList(). OrderBy(y => y.SectionOrder + "_" + y.QuestionOrder) .ToList().Select(z => z.QuestionId).ToList(); for (int i = 0; i < QuestionOrders.Count; ++i) { var item = questionViews.Single(x => x.Question.Id == QuestionOrders[i]); item.QuestionOrder = i; } }