public Items Optimizar(ItemPrecios inputItems, float amount) { Dictionary <string, float> items = inputItems.items; List <float> preciosArray = new List <float>(); List <string> idsArrayInput = new List <string>(); List <string> idsArrayOutPut = new List <string>(); Items ItemsOutPut = new Items(); Resultado result1 = new Resultado(); Resultado result2 = new Resultado(); Resultado result3 = new Resultado(); Dictionary <string, float> itemsOutput = new Dictionary <string, float>(); result1 = ObtenerMax(preciosArray, idsArrayInput, idsArrayOutPut, items, amount); // resultado items original itemsOutput.Clear(); foreach (KeyValuePair <string, float> kvp in items.OrderByDescending(key => key.Value)) { itemsOutput.Add(kvp.Key, kvp.Value); } result2 = ObtenerMax(preciosArray, idsArrayInput, idsArrayOutPut, itemsOutput, amount); // resultado descendente itemsOutput.Clear(); foreach (KeyValuePair <string, float> kvp in items.OrderBy(key => key.Value)) { itemsOutput.Add(kvp.Key, kvp.Value); } result3 = ObtenerMax(preciosArray, idsArrayInput, idsArrayOutPut, itemsOutput, amount); // resultado Ascendente var maximo = Math.Max(result3.amount, (Math.Max(result1.amount, result2.amount))); if (result1.amount == maximo) { ItemsOutPut.amount = result1.amount; ItemsOutPut.item_ids = result1.ids; } else if (result2.amount == maximo) { ItemsOutPut.amount = result2.amount; ItemsOutPut.item_ids = result3.ids; } else { ItemsOutPut.amount = result3.amount; ItemsOutPut.item_ids = result3.ids; } return(ItemsOutPut); }
public Items Resultado(Items items) { Dictionary <string, float> itemsOptimizar = new Dictionary <string, float>(); HashSet <string> idSinRepetir = new HashSet <string>(); foreach (string idItem in items.item_ids) { idSinRepetir.Add(idItem); } foreach (string id in idSinRepetir) { var client = new RestClient("https://api.mercadolibre.com/items/"); var request = new RestRequest(id, Method.GET); var result = client.Execute(request); if (result.StatusCode.ToString() != "OK" && result.StatusCode.ToString() != "NotFound") { throw new Exception("url resource https://api.mercadolibre.com/items/ unavaliable"); } var producto = JsonConvert.DeserializeObject <Productos>(result.Content); if (producto.id != null && producto.price <= items.amount) { itemsOptimizar.Add(id, producto.price); // Excluye productos inexistentes y con precio mayor al monto posible } } ArrayOptimizado Optimizado = new ArrayOptimizado(); ItemPrecios ItemPrecios = new ItemPrecios(); ItemPrecios.items = itemsOptimizar; ItemPrecios.amount = items.amount; return(Optimizado.Optimizar(ItemPrecios, items.amount)); }