Example #1
0
        public async Task TestLecturaDivisasUrl()
        {
            HelperLectura.UrlRates = "http://quiet-stone-2094.herokuapp.com/rates.json";
            var lista = await HelperLectura.LecturaDivisas();

            Assert.Equal(6, lista.Count());
        }
Example #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());
        }