private ComparisonRuleForUser GetComparisonRuleForUser(XElement xRule) { string description = GetChildElementValue(xRule, "description"); var rule = new ComparisonRuleForUser(TextFormatter.FirstUpperCharAndTrim(description)); XElement xExamples = GetChildElement(xRule, "examples"); foreach (XElement xExample in GetChildElements(xExamples, "example")) { ComparisonRuleExampleForUser example = GetComparisonExampleForUser(xExample); rule.AddExample(example); } return(rule); }
private bool CreateExamples(IEnumerable <ComparisonRuleExampleForUser> ruleExamples, ComparisonRuleForUser newComparisonRuleForUser, StudyLanguageContext c) { bool result = true; int orderRuleExample = 1; foreach (ComparisonRuleExampleForUser ruleExample in ruleExamples) { SourceWithTranslation example = ruleExample.Example; SourceWithTranslation sentenceWithTranslation = _sentencesQuery.GetOrCreate(SentenceType.ComparisonExample, example.Source, example.Translation, null); long sentenceTranslationId = sentenceWithTranslation.Id; if (IdValidator.IsInvalid(sentenceTranslationId)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "ComparisonsQuery.GetOrCreate не удалось создать предложения примера! " + "Предложение: {0}, перевод предложения {1}", sentenceWithTranslation.Source.Text, sentenceWithTranslation.Translation.Text); result = false; continue; } long ruleId = newComparisonRuleForUser.Id; ComparisonRuleExample comparisonRuleExample = GetOrCreateComparisonRuleExample(ruleId, sentenceTranslationId, ruleExample.Description, orderRuleExample++, c); if (IdValidator.IsInvalid(comparisonRuleExample.Id)) { LoggerWrapper.LogTo(LoggerName.Errors).ErrorFormat( "ComparisonsQuery.GetOrCreate не удалось создать пример для правила сравнения! " + "Id примера: {0}, sentenceWithTranslationId {1}", ruleId, sentenceTranslationId); result = false; continue; } var exampleForUser = new ComparisonRuleExampleForUser(comparisonRuleExample, sentenceWithTranslation); newComparisonRuleForUser.AddExample(exampleForUser); } return(result); }