public async Task <List <SearchResultModel> > GetSearchResult(string query, string locale, SearchResultModel.EntityType queryType = SearchResultModel.EntityType.Unknown)
        {
            var results            = new List <SearchResultModel>();
            var answerSearchResult = await GetAnswerSearchResult(query, locale);

            if (answerSearchResult != null)
            {
                results.Add(answerSearchResult);
                return(results);
            }

            var entitySearchResult = await GetEntitySearchResult(query);

            var webSearchResult = await GetWebSearchResult(query);

            if (entitySearchResult != null)
            {
                foreach (var entity in entitySearchResult.Value)
                {
                    results.Add(new SearchResultModel(entity));
                }
            }

            if (webSearchResult != null && webSearchResult.WebPages != null)
            {
                foreach (var webResult in webSearchResult.WebPages.Value)
                {
                    results.Add(new SearchResultModel(webResult.Url));
                }
            }

            var personResults = new List <SearchResultModel>();
            var movieResults  = new List <SearchResultModel>();

            foreach (var result in results)
            {
                if (result.Type == SearchResultModel.EntityType.Person)
                {
                    personResults.Add(result);
                }
                else if (result.Type == SearchResultModel.EntityType.Movie)
                {
                    movieResults.Add(result);
                }
            }

            switch (queryType)
            {
            case SearchResultModel.EntityType.Person:
                return(personResults);

            case SearchResultModel.EntityType.Movie:
                return(movieResults);

            default:
                if (personResults.Any())
                {
                    return(personResults);
                }
                else
                {
                    return(movieResults);
                }
            }
        }
Exemplo n.º 2
0
 public void Clear()
 {
     SearchEntityName = string.Empty;
     SearchEntityType = SearchResultModel.EntityType.Unknown;
 }