public void TestBuscarCaminosDivisasQueFaltan() { var origen = "EUR"; var destino = "AUD"; var hayConversionDirecta = DatosPruebas.listaDivisas.Where(m => m.From == origen && m.To == destino).ToList().Count() == 1; List <Divisa> listaFinalConversion = new List <Divisa>(); if (hayConversionDirecta == false) { listaFinalConversion = HelperAlgoritmo.BuscarRecorridoDivisas(origen, destino, listaFinalConversion, DatosPruebas.listaDivisas); Assert.Equal(2, listaFinalConversion.Count()); } else { listaFinalConversion.Add(DatosPruebas.listaDivisas.Where(m => m.From == origen && m.To == destino).FirstOrDefault()); Assert.True(hayConversionDirecta); Assert.Single(listaFinalConversion); } }
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()); }