public void TransferirEntreContas(Cliente cliente, int agenciaOrigem, int contaOrigem, int agenciaDestino, int contaDestino, decimal valor)

        {
            var contaCorrenteOrigem  = _contaCorrenteService.Obtem(agenciaOrigem, contaOrigem);
            var contaCorrenteDestino = _contaCorrenteService.Obtem(agenciaDestino, contaDestino);

            if (contaCorrenteOrigem.Cliente.Id != cliente.Id)
            {
                throw new TransferenciaCustomException("A conta de origem não pertece a cliente");
            }

            if (contaCorrenteOrigem.Id == contaCorrenteDestino.Id)
            {
                throw new TransferenciaCustomException("Conta de origem e destino não podem ser iguais");
            }

            if (contaCorrenteOrigem == null)
            {
                throw new TransferenciaCustomException("Conta corrente de origem inexistente");
            }
            if (contaCorrenteDestino == null)
            {
                throw new TransferenciaCustomException("Conta corrente de destino inexistente");
            }


            if (!contaCorrenteOrigem.PossoDebitar(valor))
            {
                throw new TransferenciaCustomException("Saldo em conta corrente indisponivel");
            }

            var lancamentos = CriaListaDeLancamentosDebitoCredito(valor, contaCorrenteOrigem, contaCorrenteDestino);

            _contaCorrenteRepository.GravarLancamentos(lancamentos);
        }