public async Task <WordTranslationFullModel> GetWordFullInformationAsync(string word, int originalLangId, int translationLangId)
        {
            WordTranslationFullModel infoWord = new WordTranslationFullModel
            {
                OriginalWord = word
            };

            using (var uow = unitOfWorkFactory.GetUnitOfWork())
            {
                Word origWord = await uow.WordRepository.GetAll()
                                .Where(w => w.Value == word && w.LanguageId == originalLangId)
                                .FirstOrDefaultAsync();

                infoWord.Id             = origWord.Id;
                infoWord.Description    = origWord.Description;
                infoWord.Transcription  = origWord.Transcription;
                infoWord.PartOfSpeechId = origWord.PartOfSpeechId;
                infoWord.Comment        = origWord.Comment;

                if (await GetAmountOfTranslations(origWord.Id, translationLangId) > 0)
                {
                    List <Word> translations = await uow.WordTranslationRepository.GetAll()
                                               .Where(x => x.OriginalWord.Value == word && x.OriginalWord.LanguageId == originalLangId &&
                                                      x.TranslationWord.LanguageId == translationLangId)
                                               .Select(x => x.TranslationWord)
                                               .ToListAsync();

                    infoWord.Translations = translations.Select(x => wordMapper.ToValueModel(x)).ToList();
                }
                if (await GetAmountOfTranslations(origWord.Id, originalLangId) > 0)
                {
                    List <Word> synonims = await uow.WordTranslationRepository.GetAll()
                                           .Where(x => x.OriginalWord.Value == word && x.OriginalWord.LanguageId == originalLangId &&
                                                  x.TranslationWord.LanguageId == originalLangId)
                                           .Select(x => x.TranslationWord)
                                           .ToListAsync();

                    infoWord.Synonims = synonims.Select(x => wordMapper.ToValueModel(x)).ToList();
                }
                if (origWord.Tags.Count > 0)
                {
                    List <Tag> tags = origWord.Tags.ToList();
                    infoWord.Tags = tags.Select(x => tagMapper.Map(x)).ToList();
                }
            }
            return(infoWord);
        }