コード例 #1
0
        private async Task ImportWord(DbTranslatedWord word, Language language)
        {
            if (await TryUseExisting(word, language))
            {
                return;
            }

            if (await TryAddTranslation(word, language))
            {
                return;
            }

            word.Validate();

            var newWord = new DbWord {
                Cefr         = word.Cefr,
                PartOfSpeech = word.PartOfSpeech,
                PictureId    = word.PictureId,
                Translations = new Dictionary <string, DbTranslation>
                {
                    { language, word.Translation ! }
                }
            };

            var importedWord = await _words.Add(newWord);

            word.Id = importedWord.Id;
        }
コード例 #2
0
        private async Task <bool> TryAddTranslation(DbTranslatedWord word, Language language)
        {
            var existing = await _words.Get(word.Id);

            if (existing != null && !existing.Translations !.ContainsKey(language))
            {
                existing.Translations.Add(language, word.Translation !);
                await _words.Replace(existing);

                return(true);
            }

            return(false);
        }
コード例 #3
0
        private async Task <bool> TryUseExisting(DbTranslatedWord word, Language language)
        {
            var existing = await _wordTranslator.Translate(word.Id, language);

            if (existing != null)
            {
                word.Cefr         = existing.Word.Cefr;
                word.PartOfSpeech = existing.Word.PartOfSpeech;
                word.PictureId    = existing.Word.PictureId;
                word.Translation  = new DbTranslation {
                    Native  = existing.Native,
                    Spoken  = existing.Spoken,
                    AudioId = existing.AudioId
                };

                return(true);
            }

            return(false);
        }