public ValidaDados ValidarDados(ConverterMoeda converterMoeda) { var validaDados = new ValidaDados(); var lstErros = new List <string>(); if (converterMoeda == null) { lstErros.Add("Por favor preencher todos os dados."); validaDados.Mensagem = lstErros.Count > 0 ? "Ops! Favor verificar os erros" : ""; validaDados.lstErros = lstErros; return(validaDados); } if (string.IsNullOrEmpty(converterMoeda.MoedaOrigem)) { lstErros.Add("Favor preencher a moeda de origem"); } if (string.IsNullOrEmpty(converterMoeda.MoedaDestino)) { lstErros.Add("Favor preencher a moeda de destino"); } if (converterMoeda.Valor <= 0) { lstErros.Add("Favor preencher o valor a converter"); } validaDados.Mensagem = lstErros.Count > 0 ? "Ops! Favor verificar os erros" : ""; validaDados.lstErros = lstErros; return(validaDados); }
public Task <Response> ConverterMoeda([FromBody] ConverterMoeda converterMoeda) { var validaDados = _conversaoMoedas.ValidarDados(converterMoeda); if (validaDados.lstErros.Count > 0) { _response.DataRetorno = DateTime.Now; _response.Mensagem = validaDados.Mensagem; _response.Sucesso = false; _response.ObjetoRetorno = validaDados.lstErros; return(Task.FromResult(_response)); } var lstCotacoes = _conversaoMoedas.RetornaListaDeCotacaoDasMoedas(string.Concat(UrlCotacoes, ApiAccessKey)); var responseConversao = _conversaoMoedas.RetornaResponseConversao(lstCotacoes, converterMoeda); _response.DataRetorno = DateTime.Now; _response.Mensagem = responseConversao.Sucesso ? "Conversão efetuada com sucesso" : "Ops! erro ao efetuar a conversão"; _response.Sucesso = responseConversao.Sucesso; _response.ObjetoRetorno = responseConversao.Sucesso ? responseConversao : null; return(Task.FromResult(_response)); }
public ResponseConversao RetornaResponseConversao(List <Moeda> lstCotacoes, ConverterMoeda converterMoeda) { var responseConversao = new ResponseConversao(); try { if (lstCotacoes.Count > 0) { float valorRetorno; var moedaOrigem = lstCotacoes.Find(m => m.Sigla == "USD" + converterMoeda.MoedaOrigem.ToUpper()); var moedaDestino = lstCotacoes.Find(m => m.Sigla == "USD" + converterMoeda.MoedaDestino.ToUpper()); /*Em virtude da API de consulta das cotacoes nao permitir da alteracao da moeda de 'source' efetuo o calculo para obter o resultado*/ /*Se a moeda de origem for o USD trabalha com a multiplicacao*/ if (moedaOrigem.Sigla == "USDUSD") { valorRetorno = converterMoeda.Valor * moedaDestino.Valor; } /*Se a moeda de destino for o USD trabalha com a divisao*/ else if ((moedaDestino.Sigla == "USDUSD")) { valorRetorno = converterMoeda.Valor / moedaOrigem.Valor; } /*Se a moeda de origem e destino forem diferentes do dolar faz-se o calculo de conversao ao USD e depois a multiplicacao pela moeda de destino*/ else { valorRetorno = (converterMoeda.Valor / moedaOrigem.Valor) * moedaDestino.Valor; } responseConversao = new ResponseConversao { Sucesso = valorRetorno > 0, MoedaOrigem = converterMoeda.MoedaOrigem.ToUpper(), MoedaDestino = converterMoeda.MoedaDestino.ToUpper(), ValorInformado = converterMoeda.Valor, ValorConvertido = valorRetorno }; } } catch (Exception) { responseConversao = new ResponseConversao { Sucesso = false, MoedaOrigem = converterMoeda.MoedaOrigem.ToUpper(), MoedaDestino = converterMoeda.MoedaDestino.ToUpper(), ValorInformado = converterMoeda.Valor, ValorConvertido = 0 }; } return(responseConversao); }
public void DEVE_RETORNAR_SUCESSO_NA_CONVERSAO() { var converter = new ConverterMoeda { MoedaOrigem = "BRL", MoedaDestino = "USD", Valor = 10 }; var lstCotacoes = _conversaoMoedas.RetornaListaDeCotacaoDasMoedas(string.Concat(UrlCotacoes, ApiAccessKey)); var retorno = _conversaoMoedas.RetornaResponseConversao(lstCotacoes, converter); Assert.AreEqual(true, retorno.Sucesso); }
public void DEVE_CONVERTER_DE_TODAS_AS_MOEDAS_PARA_USD() { var retorno = _conversaoMoedas.ListagemMoedas(); foreach (var item in retorno) { var converter = new ConverterMoeda { MoedaOrigem = item.Key, MoedaDestino = "USD", Valor = 10 }; var resultado = _conversaoMoedas.RetornaResponseConversao(ReturnCotacoes(), converter); Assert.IsTrue(resultado.Sucesso); } }