public Lancamento EncapsularRequestParaModel(LancamentoTransferenciaPostRequest request) { return(new Lancamento() { contaDestino = request.contaDestino, contaOrigem = request.contaOrigem, valorTransacao = request.valorTransacao, DataLancamento = DateTime.Now }); }
public async Task <bool> OrigemDestinoIguais(LancamentoTransferenciaPostRequest request) { var result = true; if (request.contaDestino == request.contaOrigem) { result = false; } return(result); }
public bool ValidarParametroTransferencia(LancamentoTransferenciaPostRequest lancamento) { var result = true; if (lancamento.valorTransacao <= 0 || string.IsNullOrEmpty(lancamento.contaOrigem) || string.IsNullOrEmpty(lancamento.contaDestino)) { result = false; } return(result); }
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()); }
public async Task <IActionResult> AddLancamento([FromBody] LancamentoTransferenciaPostRequest request) { var result = await this.lancamentoService.Adicionar(request); return(HttpHelper.Convert(result)); }
public async Task EfetivarLancamento(LancamentoTransferenciaPostRequest request) { var lancamento = EncapsularRequestParaModel(request); await this.lancamentoRepository.Adicionar(lancamento); }
public LancamentoTestes() { request = Contrucao_LancamentoTransferenciaPostRequest(); }