Пример #1
0
 public Lancamento EncapsularRequestParaModel(LancamentoTransferenciaPostRequest request)
 {
     return(new Lancamento()
     {
         contaDestino = request.contaDestino,
         contaOrigem = request.contaOrigem,
         valorTransacao = request.valorTransacao,
         DataLancamento = DateTime.Now
     });
 }
Пример #2
0
        public async Task <bool> OrigemDestinoIguais(LancamentoTransferenciaPostRequest request)
        {
            var result = true;

            if (request.contaDestino == request.contaOrigem)
            {
                result = false;
            }

            return(result);
        }
Пример #3
0
        public bool ValidarParametroTransferencia(LancamentoTransferenciaPostRequest lancamento)
        {
            var result = true;

            if (lancamento.valorTransacao <= 0 ||
                string.IsNullOrEmpty(lancamento.contaOrigem) ||
                string.IsNullOrEmpty(lancamento.contaDestino))
            {
                result = false;
            }

            return(result);
        }
Пример #4
0
        public async Task <Result> Adicionar(LancamentoTransferenciaPostRequest request)
        {
            var parametroValidos = ValidarParametroTransferencia(request);

            if (!parametroValidos)
            {
                return(Error(new MetaError(ListaErros.ParametrosNaoPodemSerVazio, StatusCode.Conflict)));
            }

            if (await OrigemDestinoIguais(request))
            {
                return(Error(new MetaError(ListaErros.OrigemDestinoNaoPodemSerIguais, StatusCode.Conflict)));
            }


            var contaOrigemExistente = await ProcurarContaCorrente(request.contaOrigem);

            if (contaOrigemExistente == null)
            {
                return(Error(new MetaError(ListaErros.ContaOrigemNaoEncontrada, StatusCode.Conflict)));
            }

            var contaDestinoExistente = await ProcurarContaCorrente(request.contaDestino);

            if (contaDestinoExistente == null)
            {
                return(Error(new MetaError(ListaErros.ContaDestinoNaoEncontrada, StatusCode.Conflict)));
            }

            if (contaOrigemExistente.saldo < request.valorTransacao)
            {
                return(Error(new MetaError(ListaErros.SaldoInsuficiente, StatusCode.Conflict)));
            }

            await EfetivarLancamento(request);

            await AtualizarSaldosContas(contaOrigemExistente, contaDestinoExistente, request.valorTransacao);

            return(Success());
        }
Пример #5
0
        public async Task <IActionResult> AddLancamento([FromBody] LancamentoTransferenciaPostRequest request)
        {
            var result = await this.lancamentoService.Adicionar(request);

            return(HttpHelper.Convert(result));
        }
Пример #6
0
        public async Task EfetivarLancamento(LancamentoTransferenciaPostRequest request)
        {
            var lancamento = EncapsularRequestParaModel(request);

            await this.lancamentoRepository.Adicionar(lancamento);
        }
Пример #7
0
 public LancamentoTestes()
 {
     request = Contrucao_LancamentoTransferenciaPostRequest();
 }