예제 #1
0
        public ValidationResult Lancamento(TransacaoEntity entrada)
        {
            var transacaoValidation = new TransacaoValidation().Valid(entrada);

            if (transacaoValidation.IsValid)
            {
                var contasLancamento = new Transacao().TransacaoAdapters(entrada);

                var clienteContaOrigem = new TransacaoRepository().ConsultarInformacaoCliente(contasLancamento.Conta);

                if (clienteContaOrigem != null)
                {
                    var saldoOrigem = new TransacaoRepository().AtualizarSaldoCliente(entrada.ContaOrigem, (clienteContaOrigem.SALDO - entrada.ContaDestinoValorTransacao));

                    var clienteContaDestino = new TransacaoRepository().ConsultarInformacaoCliente(contasLancamento.ContaDestino);

                    if (clienteContaDestino != null)
                    {
                        var saldodestino = new TransacaoRepository().AtualizarSaldoCliente(entrada.ContaDestino, (clienteContaDestino.SALDO + entrada.ContaDestinoValorTransacao));

                        if (saldoOrigem == 1 && saldodestino == 1)
                        {
                            var logtransacao = new TransacaoRepository().InserirLogTransacao(entrada, (clienteContaOrigem.SALDO - entrada.ContaDestinoValorTransacao), (clienteContaDestino.SALDO + entrada.ContaDestinoValorTransacao));

                            transacaoValidation.Success = true;
                        }
                    }
                }
            }
            else
            {
                transacaoValidation.Errors.ToList().ForEach(item => entrada.AdicionarResultadoDeValidacao(item));
            }
            return(transacaoValidation);
        }
예제 #2
0
 public Cliente TransacaoAdapters(TransacaoEntity entrada)
 {
     return(new Cliente()
     {
         Conta = entrada.ContaOrigem,
         ContaDestino = entrada.ContaDestino,
         Valor = entrada.ContaDestinoValorTransacao
     });
 }
예제 #3
0
        public ClienteEntity InserirLogTransacao(TransacaoEntity transacao, decimal contaOrigemSaldoAtual, decimal contaDestinoSaldoAtual)
        {
            const string proc                            = "SP_Inserir_Transacao_Cliente";
            var          paramContaOrigem                = DataHelperParameters.CreateParameter("@ContaOrigem", transacao.ContaOrigem);
            var          paramContaDestino               = DataHelperParameters.CreateParameter("@ContaDestino", transacao.ContaDestino);
            var          paramContaOrigemSaldoAtual      = DataHelperParameters.CreateParameter("@ContaOrigemSaldoAtual", contaOrigemSaldoAtual);
            var          paramContaDestinoSaldoAtual     = DataHelperParameters.CreateParameter("@ContaDestinoSaldoAtual", contaDestinoSaldoAtual);
            var          paramContaDestinoValorTransacao = DataHelperParameters.CreateParameter("@ContaDestinoValorTransacao", transacao.ContaDestinoValorTransacao);

            return(_unidadeDeTrabalho.Get <ClienteEntity>(proc, paramContaOrigem, paramContaDestino, paramContaOrigemSaldoAtual, paramContaDestinoSaldoAtual, paramContaDestinoValorTransacao));
        }
예제 #4
0
        public IActionResult Post([FromBody] TransacaoEntity data)
        {
            var lancamento = new TransacaoApp().Lancamento(data);

            if (lancamento.Success)
            {
                return(Ok());
            }
            else if (lancamento.Errors.Any())
            {
                return(NoContent());
            }
            return(NotFound());
        }
예제 #5
0
 public bool TestPost()
 {
     using (var client = new HttpClient())
     {
         client.BaseAddress = new Uri("http://localhost:5000/api/Superdigital");
         var obj = new TransacaoEntity()
         {
             ContaOrigem = "1234567", ContaDestino = "76543210", ContaDestinoValorTransacao = 500
         };
         string        jsonLancamento = JsonConvert.SerializeObject(obj);
         StringContent ctLancamento   = new StringContent(jsonLancamento);
         ctLancamento.Headers.ContentType = new MediaTypeHeaderValue("application/json");
         HttpResponseMessage retorno = client.PostAsync("", ctLancamento).Result;
         return(retorno.IsSuccessStatusCode);
     }
 }