public void Executar() { if ((_contaSaque.Saldo >= _valor) && (_contaSaque.Situacao != ContaCorrenteEstado.Bloqueada) && (_contaDeposito.Situacao != ContaCorrenteEstado.Bloqueada)) { var repositorioDeTransacoesBancarias = new TransacoesBancariasRepository(); Saque saque = new Saque(_contaSaque, _valor); _contaSaque.Debitar(_valor); Deposito deposito = new Deposito(_contaDeposito, _valor); repositorioDeTransacoesBancarias.Gravar(saque); repositorioDeTransacoesBancarias.Gravar(deposito); _contaDeposito.Creditar(_valor); } else { if (_contaSaque.Saldo <= 0) { throw new Exception("Saldo insuficiente para a transferência"); } if (_contaSaque.Situacao == ContaCorrenteEstado.Bloqueada) { throw new Exception("Conta Corrente bloqueada judicialmente, transferência não será possível"); } if (_contaDeposito.Situacao == ContaCorrenteEstado.Bloqueada) { throw new Exception("Conta do favorecido bloqueada judicialmente, transferência não será possível"); } } }
private void Sacar() { var repositoryTransacoesBancarias = new TransacoesBancariasRepository(); var saque = new Saque(_conta, _valor); repositoryTransacoesBancarias.Gravar(saque); _conta.Debitar(_valor); }