private static ComparisonRuleExample GetOrCreateComparisonRuleExample(long comparisonRuleId, long sentenceTranslationId, string description, int order, StudyLanguageContext c) { ComparisonRuleExample comparisonRuleExample = c.ComparisonRuleExample.FirstOrDefault( e => e.ComparisonRuleId == comparisonRuleId && e.SentenceTranslationId == sentenceTranslationId); if (comparisonRuleExample == null) { comparisonRuleExample = new ComparisonRuleExample { ComparisonRuleId = comparisonRuleId, SentenceTranslationId = sentenceTranslationId }; c.ComparisonRuleExample.Add(comparisonRuleExample); } comparisonRuleExample.Description = description; comparisonRuleExample.Order = order; c.SaveChanges(); return(comparisonRuleExample); }
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); }
internal ComparisonRuleExampleForUser(ComparisonRuleExample ruleExample, SourceWithTranslation example) : this(example, ruleExample.Description) { Id = ruleExample.Id; }