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 Converte_ConversaoFuncionaComoEsperado(double valor = 1000) { Moeda moedaOrigem = new Moeda("BRL", "Real Brasileiro", 3.7302); Moeda moedaDestino = new Moeda("EUR", "Euro", 0.85721); Moeda moedaDolar = new Moeda("USD", "Dólar Americano", 1); MoedaDomain moeda = new MoedaDomain(); ResponseConversao response = moeda.Converte(moedaOrigem, moedaDestino, valor); Debug.WriteLine($"====> {valor}"); Assert.AreEqual(response.Resultado, Is.GreaterThan(0)); }
public ResponseConversao Converte(Moeda moedaOrigem, Moeda moedaDestino, double valor) { double resultado = double.MinValue; if (ValidaMoedasIguals(moedaOrigem, moedaDestino)) { resultado = valor; } else { double origemConversao = CalculaConversaoParaDolar(moedaOrigem, valor); resultado = CalculaConversaoParaMoedaDestino(moedaDestino, origemConversao); } ResponseConversao response = new ResponseConversao(moedaOrigem, moedaDestino, valor, resultado); return(response); }