예제 #1
0
        private WordsByPattern GetKeyboardLayoutResult(UserLanguages userLanguages, string query, WordsQuery wordsQuery)
        {
            var           keyboardLayoutConverter = new KeyboardLayoutConverter();
            List <string> convertedQueries        = keyboardLayoutConverter.Convert(query);

            foreach (string convertedQuery in convertedQueries)
            {
                WordsByPattern result = wordsQuery.GetLikeWords(userLanguages, convertedQuery, WordType);
                if (EnumerableValidator.IsNotEmpty(result.Words))
                {
                    result.NewPattern = convertedQuery;
                    return(result);
                }
            }
            return(new WordsByPattern());
        }
예제 #2
0
        public WordsByPattern GetLikeWords(UserLanguages userLanguages, string likePattern, WordType wordType)
        {
            long        sourceLanguageId      = userLanguages.From.Id;
            long        translationLanguageId = userLanguages.To.Id;
            List <Word> words = GetWordsByLanguageIdAndLikePattern(likePattern, sourceLanguageId, translationLanguageId,
                                                                   wordType);
            var result = new WordsByPattern();

            if (words.Count == 0)
            {
                words = GetWordsByLanguageIdAndLikePattern(likePattern, translationLanguageId, sourceLanguageId,
                                                           wordType);
                result.IsChangedLanguage = words.Count > 0;
            }
            result.SetWords(words);
            return(result);
        }
예제 #3
0
        public JsonResult Search(UserLanguages userLanguages, string query)
        {
            if (UserLanguages.IsInvalid(userLanguages))
            {
                return(JsonResultHelper.Error());
            }
            WordsByPattern result;

            if (!string.IsNullOrEmpty(query))
            {
                var wordsQuery = new WordsQuery();
                result = wordsQuery.GetLikeWords(userLanguages, query, WordType);
                if (EnumerableValidator.IsEmpty(result.Words))
                {
                    //попробовать перевести символы из латинских в русские, из русских в латинские
                    result = GetKeyboardLayoutResult(userLanguages, query, wordsQuery);
                }
            }
            else
            {
                result = new WordsByPattern();
            }
            return(Json(result, JsonRequestBehavior.AllowGet));
        }