public async Task TestLecturaDivisasUrl() { HelperLectura.UrlRates = "http://quiet-stone-2094.herokuapp.com/rates.json"; var lista = await HelperLectura.LecturaDivisas(); Assert.Equal(6, lista.Count()); }
public async Task <IActionResult> DameDivisas() { Logger.LogDebug("'{0}' - Inicio", nameof(DameDivisas)); try { var jsonRates = await HelperLectura.LecturaDivisas(); if (jsonRates == null) { using (var unitOfWork = new UnitOfWork(_context, _loggerD, _loggerT)) { var datos = await unitOfWork.RepoDivisa.DameListado(); Logger.LogInformation("Datos obtenidos correctamente"); return(Ok(datos)); } } using (var unitOfWork = new UnitOfWork(_context, _loggerD, _loggerT)) { var datos = await unitOfWork.RepoDivisa.DameListado(); unitOfWork.RepoDivisa.BorraListado(datos); unitOfWork.Save(); List <string> monedas = new List <string> { "EUR", "USD", "AUD", "CAD" }; List <Divisa> listaDivisas = jsonRates.ToList(); List <Divisa> listaBusquedaConversion = new List <Divisa>(); var conversionDirecta = false; for (int i = 0; i < monedas.Count; i++) { conversionDirecta = false; for (int k = 0; k < monedas.Count; k++) { if (monedas[i] != monedas[k]) { conversionDirecta = listaDivisas.Where(m => m.From == monedas[i] && m.To == monedas[k]).ToList().Count == 1; if (!conversionDirecta) { listaDivisas.AddRange(HelperAlgoritmo.BuscarRecorridoDivisas(monedas[i], monedas[k], listaBusquedaConversion, listaDivisas)); } } } } unitOfWork.RepoDivisa.GrabaListado(listaDivisas); unitOfWork.Save(); Logger.LogInformation("Las divisas se han guardado correctamente"); return(Ok(jsonRates)); } } catch (Exception ex) { Logger.LogCritical($"Ha ocurrido un error en '{nameof(DameDivisas)}': {ex}"); } return(BadRequest()); }