예제 #1
0
        public IEnumerable <Conta> Consultar(string numeroConta)
        {
            if (string.IsNullOrEmpty(numeroConta))
            {
                throw new Exception("Número da Conta deve ser preenchido");
            }

            return(_contaRepository.Buscar(x => x.NumeroConta == numeroConta));
        }
        public async Task <bool> Handle(DeletarContaCommand request, CancellationToken cancellationToken)
        {
            if (_contaRepository.Buscar(c => c.Id == request.Id).Result.Any())
            {
                Notificar("Conta não encontrada");
                return(false);
            }

            var baseConta = _contaRepository.ObterTitularDaContaPorIdConta(request.Id).Result;

            if (baseConta != null)
            {
                Notificar("Existe um titular nessa conta, não foi possível realizar operação");
                return(false);
            }

            await _contaRepository.Remover(request.Id);

            return(true);
        }
        public void Executar()
        {
            if (Conta != null)
            {
                if (Conta.Valor != 0)
                {
                    var lConta = _contaRepository.Buscar(x => x.NumeroConta == Conta.NumeroConta).First();
                    if (lConta != null)
                    {
                        lConta.Valor += Conta.Valor;

                        _contaRepository.Atualizar(lConta);

                        var lHistorico = new HistoricoTransacao
                        {
                            Conta        = _contaRepository.ObterPorId(Conta.ID),
                            TipoOperacao = ETipoOperacao.Deposito,
                        };

                        _historicoTransacaoRepository.Adicionar(lHistorico);
                    }
                    else
                    {
                        throw new Exception("Conta informada não existe.");
                    }
                }
                else
                {
                    throw new Exception("Valor de deposito precisar ser mais que R$ 0.00");
                }
            }
            else
            {
                throw new Exception("Conta inválida.");
            }
        }
예제 #4
0
 public IEnumerable <Conta> Buscar(Expression <Func <Conta, bool> > predicado)
 {
     return(_contaRepository.Buscar(predicado));
 }
예제 #5
0
        public void Transferir(TransferenciaDTO transferenciaDTO)
        {
            var notificacoes = transferenciaDTO.Validar();

            if (notificacoes.Any())
            {
                NotificarErroNegocio(notificacoes);
                return;
            }

            var contaOrigem = _contaRepository.Buscar
                              (
                transferenciaDTO.BancoOrigem,
                transferenciaDTO.ContaOrigem,
                transferenciaDTO.AgenciaOrigem
                              );

            if (contaOrigem == null)
            {
                NotificarErroNegocio("Conta de origem não encontrada");
                return;
            }

            var contaDestino = _contaRepository.Buscar
                               (
                transferenciaDTO.BancoDestino,
                transferenciaDTO.ContaDestino,
                transferenciaDTO.AgenciaDestino
                               );

            if (contaDestino == null)
            {
                NotificarErroNegocio("Conta de Destino não encontrada");
                return;
            }

            if (!contaOrigem.Debitar(transferenciaDTO.Valor))
            {
                NotificarErroNegocio("Saldo insuficiente para completar a operação");
                return;
            }

            contaDestino.Creditar(transferenciaDTO.Valor);

            var lancamento = new Lancamento
            {
                ContaDestino = contaDestino,
                ContaOrigem  = contaOrigem,
                Data         = DateTime.Now,
                Valor        = transferenciaDTO.Valor
            };

            _contaRepository.Atualizar(contaOrigem);
            _contaRepository.Atualizar(contaDestino);
            _contaRepository.AdicionarLancamento(lancamento);

            try
            {
                _unitOfWork.Commit();
            }
            catch (Exception ex)
            {
                NotificarErroInterno(ex.Message);
            }
        }