Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 internal ComparisonRuleExampleForUser(ComparisonRuleExample ruleExample, SourceWithTranslation example)
     : this(example, ruleExample.Description)
 {
     Id = ruleExample.Id;
 }