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)); } }
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 }