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()); }
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); }
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)); }