Пример #1
0
        /// <summary>
        /// Search the personal & national Pokedex given search parameters.
        /// Only search national dex if Pokeball is not selected.
        /// </summary>
        /// <param name="searchViewModel">search parameters to filter on</param>
        /// <returns>filtered search results</returns>
        public async Task <SearchViewModel> Search(SearchViewModel searchViewModel)
        {
            SearchViewModel finalSearchViewModel = await GetSearchForm();

            int?selectedAbilityId  = searchViewModel.SelectedAbilityId;
            int?selectedCategoryId = searchViewModel.SelectedCategoryId;
            int?selectedPokeballId = searchViewModel.SelectedPokeballId;
            int?selectedTypeId     = searchViewModel.SelectedTypeId;

            finalSearchViewModel.SelectedAbilityId  = selectedAbilityId;
            finalSearchViewModel.SelectedCategoryId = selectedCategoryId;
            finalSearchViewModel.SelectedPokeballId = selectedPokeballId;
            finalSearchViewModel.SelectedTypeId     = selectedTypeId;

            finalSearchViewModel.FilteredPokemon = new List <PokemonListingViewModel>();

            List <tblMyPokedex> pokedex = await _pokedexRepository.Search(searchViewModel.SearchString, selectedAbilityId, selectedCategoryId, selectedTypeId, selectedPokeballId);

            _logger.LogInformation(string.Format(Constants.InformationalMessageMappingWithCount, pokedex.Count, Constants.Pokemon, ViewModels));

            List <PokemonListingViewModel> pokemonListingViewModels = _mapper.Map <List <PokemonListingViewModel> >(pokedex);

            finalSearchViewModel.FilteredPokemon.AddRange(pokemonListingViewModels);

            if (!selectedPokeballId.HasValue)
            {
                List <tlkpNationalDex> nationalDex = await _pokedexRepository.Search(searchViewModel.SearchString, selectedAbilityId, selectedCategoryId, selectedTypeId);

                pokemonListingViewModels = MapNationalDexLookupsToListingViewModels(nationalDex);

                finalSearchViewModel.FilteredPokemon.AddRange(pokemonListingViewModels);
            }

            return(finalSearchViewModel);
        }