Exemplo n.º 1
0
        public void Executar(TransferenciaRequest request)
        {
            var contaOrigem = _contaCorrenteRepositorio.Obter(request.ContaOrigem);

            if (contaOrigem == null)
            {
                throw new ContaCorrenteInvalidaException(request.ContaOrigem);
            }

            var contaDestino = _contaCorrenteRepositorio.Obter(request.ContaDestino);

            if (contaDestino == null)
            {
                throw new ContaCorrenteInvalidaException(request.ContaDestino);
            }

            var saldoContaOrigem = _contaCorrenteServico.ObterSaldo(contaOrigem.Conta);

            if (saldoContaOrigem < request.Valor)
            {
                throw new SaldoInsuficienteException(request.ContaOrigem, request.Valor);
            }

            contaOrigem.Debitar(request.Valor);
            contaDestino.Creditar(request.Valor);

            //contaCorrenteRepositorio.UnitOfWork.BeginTransaction();
            _contaCorrenteRepositorio.Salvar(contaOrigem);
            _contaCorrenteRepositorio.Salvar(contaDestino);
            //contaCorrenteRepositorio.UnitOfWork.CommitTransaction();
        }
Exemplo n.º 2
0
        public void RealizarTransferencia(ContaCorrente origem, decimal valor)
        {
            var origemBD = _contaCorrenteRepositorio.Recuperar(origem.Banco, origem.Agencia, origem.Numero);

            if (origemBD.Saldo < valor)
            {
                throw new Exception("Saldo insuficiente.");
            }

            origemBD.EnviarTransferencia(valor);

            _contaCorrenteRepositorio.Salvar(origemBD);
        }
        public CadastrarContaCorrenteResult Executar(CadastrarContaCorrenteRequest request)
        {
            if (_contaCorrenteRepositorio.Obter(request.Conta) != null)
            {
                _notificationContext.AddNotification(nameof(request.Conta), "Conta já cadastrada");
                return(new CadastrarContaCorrenteResult());
            }

            ContaCorrente conta = new ContaCorrente(Guid.NewGuid(), request.Agencia, request.Conta);

            if (conta.Invalid)
            {
                _notificationContext.AddNotifications(conta.Notifications);
                return(new CadastrarContaCorrenteResult());
            }

            _contaCorrenteRepositorio.Salvar(conta);
            return(CadastrarContaCorrenteResult.FromDomain(conta));
        }
Exemplo n.º 4
0
        public ContaCorrenteSolicitacao Salvar(ContaCorrenteSolicitacao conta)
        {
            if (_contaCorrenteRepositorio.Obter(conta.Conta) != null)
            {
                _notificacao.AddNotification(nameof(conta.Conta), "Conta cadastrada");

                return(new ContaCorrenteSolicitacao());
            }

            ContaCorrente contaCorrente = new ContaCorrente(Guid.NewGuid(), conta.Conta, conta.Agencia, conta.Correntista, conta.Valor);

            if (contaCorrente.Invalid)
            {
                _notificacao.AddNotifications(contaCorrente.Notifications);

                return(new ContaCorrenteSolicitacao());
            }

            _contaCorrenteRepositorio.Salvar(contaCorrente);



            return(conta);
        }