public async Task <IActionResult> Post(string session, [FromBody] AddItemRequest request) { LoadSession(Guid.Parse(session)); //Get URL from list ListItem listItem = itemProvider.GetList().Where(x => x.Name.ToLower() == request.Name.ToLower()).FirstOrDefault(); //if it's an item, and it already exists in list, add to existing item if (listItem != null && listItem.Type == "Item") { Item existingitem = (Item)inventory.Where(x => x.Name == listItem.Name).FirstOrDefault() ?? null; if (existingitem != null) { existingitem.Count += request.Value; } else { //Make call to get object info string response = await pokeProvider.Get(listItem.Url); JObject obj = JObject.Parse(response); string description = obj["flavor_text_entries"].Where(x => (x["language"]["name"].ToString() == "en")).FirstOrDefault()["text"].ToString(); description = description.Replace('\n', ' ').Replace('\f', ' '); IInventoryItem item = new Item { Id = ++counter, Name = listItem.Name, Url = listItem.Url, Img = obj["sprites"]["default"].ToString(), Count = request.Value, Description = description }; inventory.Add(item); } SetSession(Guid.Parse(session)); return(Ok()); } else if (listItem != null) { //Make call to get object info string response = await pokeProvider.Get(listItem.Url); JObject obj = JObject.Parse(response); //Item is a pokemon //Need to get species string speciesurl = obj["species"]["url"].ToString(); string name = obj["species"]["name"].ToString(); string species = await pokeProvider.Get(speciesurl); JObject specObj = JObject.Parse(species); string description = specObj["flavor_text_entries"].Where(x => (x["version"]["name"].ToString() == "yellow" && x["language"]["name"].ToString() == "en")).First()["flavor_text"].ToString(); description = description.Replace('\n', ' ').Replace('\f', ' '); Pokemon pokemon = new Pokemon { Id = ++counter, Name = listItem.Name, Url = listItem.Url, Img = obj["sprites"]["front_default"].ToString(), Level = request.Value, Description = description, Evolution = await GetPokemonEvolution(specObj, name) }; if (pokemon.Evolution.Count > 0 && pokemon.Evolution[0].Trigger == "level-up" && pokemon.Level >= Convert.ToInt32(pokemon.Evolution[0].Level)) { request.Name = pokemon.Evolution[0].Pokemon; await Post(session, request); SetSession(Guid.Parse(session)); return(Ok()); } inventory.Add(pokemon); SetSession(Guid.Parse(session)); return(Ok()); } else { return(BadRequest()); } }
public ListController(ItemListProvider provider) { items = provider.GetList(); }