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