示例#1
0
        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);
            }
        }
示例#2
0
        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());
        }