public async Task <ContaCorrente> UpdateContaCorrente(ContaCorrente contaCorrente) { var validation = new ContaCorrenteValidator().Validate(contaCorrente); if (!validation.IsValid) { throw new TransacaoException(validation.Errors.Join(" ")); } return(await _contaCorrenteRepository.UpdateContaCorrente(contaCorrente)); }
public Transacao Transferir(ContaCorrente origem, ContaCorrente destino, Valor valor) { ContaCorrenteValidator.ExisteSaldoParaSaque(origem, valor); origem.Debitar(valor); destino.Depositar(valor); var lancamentoSaida = new Lancamento(TipoLancamento.Debito, origem.Id, valor); var lancamentoEntrada = new Lancamento(TipoLancamento.Credito, destino.Id, valor); return(_LancamentoService.RegistrarTransferencia(lancamentoEntrada, lancamentoSaida)); }
public Transacao Sacar(ContaCorrente conta, Valor valor) { ContaCorrenteValidator.ExisteSaldoParaSaque(conta, valor); conta.Debitar(valor); return(_LancamentoService.Registrar(new Lancamento(TipoLancamento.Debito, conta.Id, valor))); }