コード例 #1
0
        public IActionResult CalcularValores([FromBody] DadosTransacaoViewModel dadosTransacaoViewModel)
        {
            try
            {
                var valorTransacao = dadosTransacaoViewModel.ValorCartao;

                var transacaoFactory = new TransacaoFactory(valorTransacao);
                var transacao        = transacaoFactory.Criar();

                RegisterLog.Log(TipoLog.Info, "Consulta para Obter Taxa por Bandeira e Adquirente");
                var taxa = _taxaRepository.ObterPorAdquirenteBandeira(dadosTransacaoViewModel.IdBandeira, dadosTransacaoViewModel.IdAdquirente);

                if (taxa == null)
                {
                    throw new Exception("Taxa não encontrada");
                }

                transacao.CriarItem(taxa,
                                    dadosTransacaoViewModel.NumeroCartao,
                                    dadosTransacaoViewModel.ValidadeCartao,
                                    dadosTransacaoViewModel.CvvCartao,
                                    dadosTransacaoViewModel.ValorCartao);

                RegisterLog.Log(TipoLog.Info, "Gravação da Transação.");

                _transacaoRepository.Gravar(transacao);
                _uow.Commit();

                var itemTransacao = transacao.Transacoes.FirstOrDefault();

                RegisterLog.Log(TipoLog.Info, "Sucesso ao calcular valores.");
                return(Ok(itemTransacao.DescricaoRetorno));
            }
            catch (Exception e)
            {
                RegisterLog.Log(TipoLog.Error, "Erro na execução do cálculo de valores");
                return(BadRequest(e.Message));
            }
        }
コード例 #2
0
        public void CalcularTaxaUmCartao()
        {
            var bandeira   = _repositoryBandeira.Obter(b => b.Nome.Contains("Visa")).FirstOrDefault();
            var adquirente = _repositoryAdquirente.Obter(b => b.Nome.Contains("Cielo")).FirstOrDefault();

            var taxa = _repositoryTaxa.ObterPorAdquirenteBandeira(bandeira.Id, adquirente.Id);

            taxa.Percentual = 0.0007;

            #region =================== Implementação do teste ==========================

            var transacaoFactory = new TransacaoFactory(180);
            var transacao        = transacaoFactory.Criar();

            transacao.CriarItem(taxa,
                                "1234123412341234",
                                "09/22",
                                "782",
                                180);

            var itemTransacao = transacao.Transacoes.FirstOrDefault();

            Assert.Equal("Cartão: 1234123412341234; Valor Lojista: R$ 179,87; Valor Adquirente: R$ 0,13.",
                         itemTransacao.DescricaoRetorno);

            _repositoryTransacao.Gravar(transacao);
            _uow.Commit();

            // Verificando se gravou corretamente na base de dados
            var transacaoGravada = _repositoryTransacao.ObterPorId(transacao.Id);
            Assert.Equal(transacao.Id, transacaoGravada.Id);
            Assert.Equal(transacao.Valor, transacaoGravada.Valor);
            Assert.Equal(transacao.Data, transacaoGravada.Data);
            Assert.Equal(180, transacaoGravada.Transacoes.Sum(x => x.Valor));

            #endregion
        }