public ConverterMoedaResult ConverterMoeda(ConverterMoedaRequest converterMoedaRequest) { IConversorACL conversorACL = conversorACLFactory.Create(); IMoeda MoedaOrigem = moedaFactory.Create(converterMoedaRequest.SiglaMoedaOrigem, converterMoedaRequest.ValorParaConversao); IMoeda CotacaoEmDolarMoedaOrigem = conversorACL.GetCotacaoComBaseNoDolar(MoedaOrigem.SiglaMoeda); IMoeda dinhieroOrigemEmDolar = MoedaOrigem.ConverterParaDolar(CotacaoEmDolarMoedaOrigem); IMoeda CotacaoEmDolarMoedaConvertida = conversorACL.GetCotacaoComBaseNoDolar(converterMoedaRequest.MoedaParaConversao); Decimal valorDaConversao = dinhieroOrigemEmDolar.ObterValorDaConversaoDeMoeda(CotacaoEmDolarMoedaConvertida); IMoeda MoedaConvertida = moedaFactory.Create(converterMoedaRequest.MoedaParaConversao, valorDaConversao); ConverterMoedaResult result = new ConverterMoedaResult() { siglaMoeda = MoedaConvertida.SiglaMoeda, valor = MoedaConvertida.Valor }; return(result); }
public List <IMoeda> GetMoedas() { IRedisConnectorHelper redisConnectorHelper = redisConnectorHelperFactory.Create(); String NomeCacheObject = "GetMoedasList"; var cacheValue = redisConnectorHelper.Get <List <IMoeda> >(NomeCacheObject); if (cacheValue == null) { lock (GetMoedasLock) { cacheValue = redisConnectorHelper.Get <List <IMoeda> >(NomeCacheObject); if (cacheValue == null) { HttpClient client = new HttpClient(); client.BaseAddress = new Uri(Configuration.GetSection("BASE_URL")); HttpResponseMessage response = client.GetAsync("list" + Configuration.GetSection("ACCESS_KEY")).Result; if (response.IsSuccessStatusCode) { var retorno = JsonConvert.DeserializeXNode(response.Content.ReadAsStringAsync().Result, "Root"); var resultado = retorno.Root.Element("currencies").Elements().Select(c => moedaFactory.Create(c.Name.ToString(), c.Value)).ToList(); redisConnectorHelper.Set(NomeCacheObject, resultado, 120); return(resultado); } else { throw new Exception("Não foi possivel obter as moedas"); } } } } return(cacheValue); }