Example #1
0
        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));
        }
Example #3
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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
            }
        }