public bool Transferir(TransferenciaBancariaDTO dadosTransferencia)
        {
            try
            {
                Transacao.ExecutarEmTransacao(() =>
                {
                    Lancamento lancamento = new Lancamento(dadosTransferencia);

                    ContaCorrente origem  = _contaRepositorio.Buscar(dadosTransferencia.ContaOrigem);
                    ContaCorrente destino = _contaRepositorio.Buscar(dadosTransferencia.ContaDestino);

                    if (origem == null || destino == null)
                    {
                        throw new ArgumentNullException(ValidationResource.ContaNaoExistente);
                    }

                    origem.Lancamentos  = new List <Lancamento>();
                    destino.Lancamentos = new List <Lancamento>();

                    origem.Debitar(dadosTransferencia.Valor);
                    destino.Creditar(dadosTransferencia.Valor);

                    origem.Lancamentos.Add(lancamento);

                    _contaRepositorio.Salvar(origem);
                    _contaRepositorio.Salvar(destino);

                    _lancamentoRepositorio.Adicionar(lancamento);
                });

                return(true);
            }
            catch (Exception e)
            {
                throw e;
            }
        }