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);
            }
        }
Exemple #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;
        }
        public TestView CreateTestView(Question question)
        {
            var testView = new TestView()
            {
                Quiz     = question.Quiz,
                Question = question,
                Model    = XmlBase.Deserialize(question.XmlObject, question.TypeName)
            };

            return(testView);
        }
Exemple #4
0
        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));
        }