public bool Transferir(TransferenciaBancariaDTO dadosTransferencia)
        {
            try
            {
                Transacao.ExecutarEmTransacao(() =>
                {
                    Lancamentos lancamento = new Lancamentos(dadosTransferencia.ContaOrigem, dadosTransferencia.contaDestino, dadosTransferencia.Valor);

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

                    ContaCorrente destino = _contaRepositorio.Buscar(dadosTransferencia.contaDestino);

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

                    origem.Debitar(dadosTransferencia.Valor);

                    origem.Lancamentos.Add(lancamento);

                    destino.Creditar(dadosTransferencia.Valor);

                    _contaRepositorio.Salvar(origem);

                    _contaRepositorio.Salvar(destino);
                });

                return(true);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Ejemplo n.º 2
0
 public void Salvar(Conta entidade)
 {
     using (var uow = UoWFactory.Create())
     {
         contaRepositorio.Salvar(entidade);
         uow.Commit();
     }
 }