public override void Execute(object @object) { if (!Enabled) { return; } var q = new CorrespondenceQuestion(); if (Warehouse.Warehouse.Instance.CourseTree.CurrentNode is TestModule) { var tm = Warehouse.Warehouse.Instance.CourseTree.CurrentNode as TestModule; q.Text = string.Concat("Вопрос ", tm.Questions.Count + 1); } if (Warehouse.Warehouse.Instance.CourseTree.CurrentNode is Group) { var g = Warehouse.Warehouse.Instance.CourseTree.CurrentNode as Group; q.Text = string.Concat("Вопрос ", g.Questions.Count + 1); } Warehouse.Warehouse.Instance.CourseTree.CurrentNode.Nodes.Add(q); if (!Warehouse.Warehouse.Instance.CourseTree.CurrentNode.IsExpanded) { Warehouse.Warehouse.Instance.CourseTree.CurrentNode.Toggle(); } Warehouse.Warehouse.Instance.CourseTree.CurrentNode = q; PreviewObserver.AddDocument(q.QuestionDocument); Warehouse.Warehouse.IsProjectModified = true; }
public static Question Clone(Question question) { Question newQuestion = null; #region Инициализация вопроса if (question is ChoiceQuestion) { newQuestion = new ChoiceQuestion(); } else if (question is MultichoiceQuestion) { newQuestion = new MultichoiceQuestion(); } else if (question is InteractiveQuestion) { newQuestion = new InteractiveQuestion(); } else if (question is OrderingQuestion) { newQuestion = new OrderingQuestion(); } else if (question is OpenQuestion) { newQuestion = new OpenQuestion(); } else if (question is CorrespondenceQuestion) { newQuestion = new CorrespondenceQuestion(); } else if (question is OuterQuestion) { newQuestion = new OuterQuestion(); (newQuestion as OuterQuestion).TaskId = (question as OuterQuestion).TaskId; (newQuestion as OuterQuestion).TaskName = (question as OuterQuestion).TaskName; (newQuestion as OuterQuestion).TestName = (question as OuterQuestion).TestName; (newQuestion as OuterQuestion).SubjectName = (question as OuterQuestion).SubjectName; (newQuestion as OuterQuestion).Declaration = (question as OuterQuestion).Declaration; (newQuestion as OuterQuestion).Url = (question as OuterQuestion).Url; } #endregion newQuestion.LowerBound = question.LowerBound; newQuestion.Cardinality = question.Cardinality; newQuestion.Text = question.Text; newQuestion.Id = Guid.NewGuid(); newQuestion.DocumentHtml = string.Copy(question.DocumentHtml); newQuestion.TimeRestriction = question.TimeRestriction; newQuestion.Profile = question.Profile; newQuestion.Marks = question.Marks; newQuestion.Hint = question.Hint; newQuestion.NextQuestion = question.NextQuestion; newQuestion.IsAdaptive = question.IsAdaptive; newQuestion.BaseType = question.BaseType; newQuestion.DefaultValue = question.DefaultValue; //newQuestion.Mark = question.Mark; newQuestion.IsShuffle = question.IsShuffle; newQuestion.MaxChoices = question.MaxChoices; // newQuestion.timeRestriction = question.timeRestriction; newQuestion.identifier = question.identifier; // идентификатор вопроса ("VE-" + questionNumber + questionType) foreach (var questionResponse in question.Responses) { var response = Response.Clone(questionResponse); newQuestion.Nodes.Add(response); } foreach (ResponseVariant questionResponseVariant in question.ResponseVariants) { var responseVariant = new ResponseVariant(question); if (!(question is OrderingQuestion) && !(question is OpenQuestion)) { foreach (Response response in questionResponseVariant.Responses) { for (var i = 0; i < question.Responses.Count; i++) { if ((question.Responses[i]).Text.Equals(response.Text)) { responseVariant.Responses.Add(question.Responses[i]); break; } } } } else { for (var i = 0; i < questionResponseVariant.Responses.Count; i++) { responseVariant.Responses.Add(questionResponseVariant.Responses[i]); } } responseVariant.Weight = questionResponseVariant.Weight; responseVariant.Hint = questionResponseVariant.Hint; responseVariant.NextQuestion = questionResponseVariant.NextQuestion; // моё newQuestion.ResponseVariants.Add(responseVariant); } return newQuestion; }