Example #1
0
        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);
            }
        }
Example #2
0
        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;
        }
Example #3
0
        /// <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);
            }
        }
Example #4
0
        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;
            }
        }