//Сохранение изменённого вопроса в объект проекта private bool saveEditQuestionInCurrentProject(int idQuestion) { if (questField.Text != string.Empty) { Question refCurrentQuection = Program.CurrentProject.Questions.FirstOrDefault(i => i.id == idQuestion); Question editedQuestion = new Question(); editedQuestion.Text = questField.Text; editedQuestion.Answers.Clear(); #region InsertAnswersToRefCurrentQuestion #region newAnswer1 if (answer1Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 1, Text = answer1Text.Text, Trueness = answer1Bool.IsChecked != null ? (bool)(answer1Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #region newAnswer2 if (answer2Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 2, Text = answer2Text.Text, Trueness = answer2Bool.IsChecked != null ? (bool)(answer2Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #region newAnswer3 if (answer3Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 3, Text = answer3Text.Text, Trueness = answer3Bool.IsChecked != null ? (bool)(answer3Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #region newAnswer4 if (answer4Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 4, Text = answer4Text.Text, Trueness = answer4Bool.IsChecked != null ? (bool)(answer4Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #region newAnswer5 if (answer5Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 5, Text = answer5Text.Text, Trueness = answer5Bool.IsChecked != null ? (bool)(answer5Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #region newAnswer6 if (answer6Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 6, Text = answer6Text.Text, Trueness = answer6Bool.IsChecked != null ? (bool)(answer6Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #region newAnswer7 if (answer7Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 7, Text = answer7Text.Text, Trueness = answer7Bool.IsChecked != null ? (bool)(answer7Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #region newAnswer8 if (answer8Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 8, Text = answer8Text.Text, Trueness = answer8Bool.IsChecked != null ? (bool)(answer8Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #region newAnswer9 if (answer9Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 9, Text = answer9Text.Text, Trueness = answer9Bool.IsChecked != null ? (bool)(answer9Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #region newAnswer10 if (answer10Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 10, Text = answer10Text.Text, Trueness = answer10Bool.IsChecked != null ? (bool)(answer10Bool.IsChecked) : false }; editedQuestion.Answers.Add(newAnswer); } #endregion #endregion if (editedQuestion.Answers.Count > 1) { //хотя бы один ответ правельный #region isOneTrue bool isOneTruness = false; foreach (Answer c in editedQuestion.Answers) { if (c.Trueness == true) { isOneTruness = true; break; } } #endregion if (isOneTruness) { editedQuestion.AnswersIdSort(); refCurrentQuection.Answers.Clear(); refCurrentQuection.Text = editedQuestion.Text; foreach (Answer answer in editedQuestion.Answers) { refCurrentQuection.Answers.Add(answer); } return(true); } } return(false); } return(false); }
static bool ParserProject(string[] readinFile, string pathProject) { //вхождение в блок проекта bool inProj = false; string nameProject = ""; Guid guidProj = Guid.Empty; //вхождение в блок вопроса bool inQuestion = false; Question currentQuestion = null; //вхождение в блок текста вопроса bool inQuText = false; string questionText = ""; //входжение в блок ответа bool inAnwer = false; string anwerText = ""; Answer currentAnwer = null; string line = ""; try { foreach (string searchCommand in readinFile) { line += searchCommand; if (line.Contains("<")) { if (line.Contains(">")) { //вырезаем команду из строки line #region delete substring string subStrCommand = line.Substring(line.IndexOf('<'), line.IndexOf('>')); line = line.Remove(line.IndexOf('<'), line.IndexOf('>')); #endregion #region Command string readLine = subStrCommand.Split('<')[1]; string command = readLine.Split('>')[0]; switch (command[0]) { #region command first 'p' case 'p': if (command.Substring(0, 4).CompareTo("proj") == 0) { string valStr = command.Split('(')[1]; string nameProjectAndGuid = valStr.Split(')')[0]; nameProject = nameProjectAndGuid.Split(';')[0]; guidProj = Guid.Parse(nameProjectAndGuid.Split(';')[1]); CurrentProject = new Project(nameProject, pathProject, guidProj, Convert.ToBase64String(KeyCript)); inProj = true; } break; #endregion #region command first 'q' case 'q': if ((inProj) && (command[1] == 'u')) { string valStr = command.Split('(')[1]; string idQuestion = valStr.Split(')')[0]; currentQuestion = new Question(); currentQuestion.id = Convert.ToInt32(idQuestion); inQuestion = true; } else if ((inQuestion) && (command[1] == 't')) { inQuText = true; } break; #endregion #region command first 'a' case 'a': if ((inQuestion) && (inProj) && (command[1] == 'n')) { string valStr = command.Split('(')[1]; string numAndTrueness = valStr.Split(')')[0]; string num = numAndTrueness.Split(';')[0]; string Trueness = numAndTrueness.Split(';')[1]; currentAnwer = new Answer(); currentAnwer.id = Convert.ToInt32(num); if (Trueness[0] == 't') { currentAnwer.Trueness = true; } if (Trueness[0] == 'f') { currentAnwer.Trueness = false; } inAnwer = true; } break; #endregion #region command first '/' case '/': if (command[1] == 'a') { inAnwer = false; currentAnwer.Text = anwerText; currentQuestion.Answers.Add(currentAnwer); } else if (command[1] == 'q') { if (command[2] == 't') { inQuText = false; currentQuestion.Text = questionText; } else if (command[2] == 'u') { inQuestion = false; CurrentProject.Questions.Add(currentQuestion); } } else if (command[1] == 'p') { inProj = false; return(true); } break; #endregion } #endregion } else { //добавляем новую строку в line для поиска конца команды '>' continue; } } #region writeText if ((inProj) && (inQuestion)) { if (inQuText) { questionText = line; } if (inAnwer) { anwerText = line; } } #endregion line = ""; } } catch (Exception) { WindowMsgError errorFileNotExist = new WindowMsgError("Ошибка", "Ошибка при чтении теста"); errorFileNotExist.ShowDialog(); return(false); } WindowMsgError errorFileNotExist2 = new WindowMsgError("Ошибка", "Ошибка при чтении теста"); errorFileNotExist2.ShowDialog(); return(false); }
//Сохранение вопроса в объект проекта private bool insertQuestionInCurrentProject() { if (questField.Text != string.Empty) { Question newQuest = new Question() { id = currentNumQuest, Text = questField.Text }; #region InsertAnswersToNewQuestion #region newAnswer1 if (answer1Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 1, Text = answer1Text.Text, Trueness = answer1Bool.IsChecked != null ? (bool)(answer1Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #region newAnswer2 if (answer2Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 2, Text = answer2Text.Text, Trueness = answer2Bool.IsChecked != null ? (bool)(answer2Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #region newAnswer3 if (answer3Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 3, Text = answer3Text.Text, Trueness = answer3Bool.IsChecked != null ? (bool)(answer3Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #region newAnswer4 if (answer4Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 4, Text = answer4Text.Text, Trueness = answer4Bool.IsChecked != null ? (bool)(answer4Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #region newAnswer5 if (answer5Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 5, Text = answer5Text.Text, Trueness = answer5Bool.IsChecked != null ? (bool)(answer5Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #region newAnswer6 if (answer6Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 6, Text = answer6Text.Text, Trueness = answer6Bool.IsChecked != null ? (bool)(answer6Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #region newAnswer7 if (answer7Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 7, Text = answer7Text.Text, Trueness = answer7Bool.IsChecked != null ? (bool)(answer7Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #region newAnswer8 if (answer8Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 8, Text = answer8Text.Text, Trueness = answer8Bool.IsChecked != null ? (bool)(answer8Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #region newAnswer9 if (answer9Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 9, Text = answer9Text.Text, Trueness = answer9Bool.IsChecked != null ? (bool)(answer9Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #region newAnswer10 if (answer10Text.Text != string.Empty) { Answer newAnswer = new Answer() { id = 10, Text = answer10Text.Text, Trueness = answer10Bool.IsChecked != null ? (bool)(answer10Bool.IsChecked) : false }; newQuest.Answers.Add(newAnswer); } #endregion #endregion if (newQuest.Answers.Count > 1) { //хотя бы один ответ правельный #region isOneTrue bool isOneTruness = false; foreach (Answer c in newQuest.Answers) { if (c.Trueness == true) { isOneTruness = true; break; } } #endregion if (isOneTruness) { newQuest.AnswersIdSort(); Program.CurrentProject.Questions.Add(newQuest); return(true); } return(false); } return(false); } return(false); }