private async void HacerBusqueda(Busqueda parametrosBusqueda)
        {
            Mensaje = "Realizando búsqueda";
            Lanzar(nameof(Mensaje));

            List <PokemonInfo> pokemonesTemp = new List <PokemonInfo>();

            try
            {
                if (!String.IsNullOrEmpty(parametrosBusqueda.nombreBuscado))
                {
                    var result = await client.GetAsync($"pokemon/{parametrosBusqueda.nombreBuscado.ToLower()}");

                    if (result.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        var json = await result.Content.ReadAsStringAsync();

                        PokemonInfo p = JsonConvert.DeserializeObject <PokemonInfo>(json);
                        pokemonesTemp.Add(p);
                        Mensaje = "La espera está por terminar";
                        Lanzar(nameof(Mensaje));
                    }
                    else
                    {
                        Pokemones = pokemonesTemp;
                    }
                }
                //Busca los de la habilidad
                if (parametrosBusqueda.habilidadBuscada != "--Abilities--" && parametrosBusqueda.habilidadBuscada != null)
                {
                    var resultHabilidad = await client.GetAsync($"ability/{parametrosBusqueda.habilidadBuscada}");

                    var jsonHabilidad = await resultHabilidad.Content.ReadAsStringAsync();

                    HabilidadCompletaInfo habilidadObtenida = JsonConvert.DeserializeObject <HabilidadCompletaInfo>(jsonHabilidad);
                    Mensaje = "La espera está por terminar";
                    Lanzar(nameof(Mensaje));

                    foreach (var p in habilidadObtenida.pokemon)
                    {
                        var poke = await client.GetAsync($"pokemon/{p.pokemon.name}");

                        var jsonPoke = await poke.Content.ReadAsStringAsync();

                        PokemonInfo poke2 = JsonConvert.DeserializeObject <PokemonInfo>(jsonPoke);
                        pokemonesTemp.Add(poke2);
                    }
                }
                //Buscar por tipos
                if (parametrosBusqueda.tipoBuscado != "--Types--" && parametrosBusqueda.tipoBuscado != null)
                {
                    var resultTipo = await client.GetAsync($"type/{parametrosBusqueda.tipoBuscado }");

                    var jsonTipo = await resultTipo.Content.ReadAsStringAsync();

                    TipoCompletoInfo tipoObtenido = JsonConvert.DeserializeObject <TipoCompletoInfo>(jsonTipo);
                    Mensaje = "La espera está por terminar";
                    Lanzar(nameof(Mensaje));
                    foreach (var p in tipoObtenido.pokemon)
                    {
                        var poke = await client.GetAsync($"pokemon/{p.pokemon.name}");

                        var jsonPoke = await poke.Content.ReadAsStringAsync();

                        PokemonInfo poke2 = JsonConvert.DeserializeObject <PokemonInfo>(jsonPoke);
                        pokemonesTemp.Add(poke2);
                    }
                }
            }
            catch (Exception e)
            {
                Mensaje = e.ToString();
                Lanzar(nameof(Mensaje));
            }

            Pokemones = BuscadorHelper.FiltrarLista(pokemonesTemp, parametrosBusqueda.nombreBuscado, parametrosBusqueda.habilidadBuscada, parametrosBusqueda.tipoBuscado).ToList();
            Mensaje   = $"Se han encontrado {Pokemones.Count()} resultados que coinciden con su búsqueda";
            Lanzar();
        }
示例#2
0
        public async Task <IActionResult> Index(string texto, string habilidad, string tipo)
        {
            IndexViewModel     vm        = new IndexViewModel();
            List <PokemonInfo> pokemones = new List <PokemonInfo>();

            try
            {
                cliente = Factory.CreateClient("Pokemones");
                //Buscadores

                var habilidades = await cliente.GetAsync("ability?limit=327");

                var tipos = await cliente.GetAsync("type");

                if (habilidades.IsSuccessStatusCode && tipos.IsSuccessStatusCode)
                {
                    var jsonHabilidades = await habilidades.Content.ReadAsStringAsync();

                    var jsonTipos = await tipos.Content.ReadAsStringAsync();

                    vm.Habilidades = JsonConvert.DeserializeObject <abilityInfo>(jsonHabilidades);
                    vm.Tipos       = JsonConvert.DeserializeObject <TypesInfo>(jsonTipos);
                }

                //Resultados
                //Buscar por Nombre
                if (!String.IsNullOrEmpty(texto))
                {
                    var result = await cliente.GetAsync($"pokemon/{texto.ToLower()}");

                    if (result.StatusCode == System.Net.HttpStatusCode.OK)
                    {
                        var json = await result.Content.ReadAsStringAsync();

                        PokemonInfo p = JsonConvert.DeserializeObject <PokemonInfo>(json);
                        pokemones.Add(p);
                    }
                    else
                    {
                        vm.Pokemones = pokemones;
                    }
                }
                //Busca los de la habilidad
                if (habilidad != "--Abilities--")
                {
                    var resultHabilidad = await cliente.GetAsync($"ability/{habilidad}");

                    var jsonHabilidad = await resultHabilidad.Content.ReadAsStringAsync();

                    HabilidadCompletaInfo habilidadObtenida = JsonConvert.DeserializeObject <HabilidadCompletaInfo>(jsonHabilidad);

                    foreach (var p in habilidadObtenida.pokemon)
                    {
                        var poke = await cliente.GetAsync($"pokemon/{p.pokemon.name}");

                        var jsonPoke = await poke.Content.ReadAsStringAsync();

                        PokemonInfo poke2 = JsonConvert.DeserializeObject <PokemonInfo>(jsonPoke);
                        pokemones.Add(poke2);
                    }
                }
                //Buscar por tipos
                if (tipo != "--Types--")
                {
                    var resultTipo = await cliente.GetAsync($"type/{tipo}");

                    var jsonTipo = await resultTipo.Content.ReadAsStringAsync();

                    TipoCompletoInfo tipoObtenido = JsonConvert.DeserializeObject <TipoCompletoInfo>(jsonTipo);

                    foreach (var p in tipoObtenido.pokemon)
                    {
                        var poke = await cliente.GetAsync($"pokemon/{p.pokemon.name}");

                        var jsonPoke = await poke.Content.ReadAsStringAsync();

                        PokemonInfo poke2 = JsonConvert.DeserializeObject <PokemonInfo>(jsonPoke);
                        pokemones.Add(poke2);
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
            }
            vm.Pokemones = BuscadorHelper.FiltrarLista(pokemones, texto, habilidad, tipo);
            return(View(vm));
        }