Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
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);
        }