Beispiel #1
0
        public async Task <AbrirContaResult> Execute(Nome nomeCliente, Cpf cpfCliente, NumeroAgencia numeroAgencia)
        {
            Cliente cliente = await this.clienteRepository.ObterPorCpf(cpfCliente);

            if (cliente != null)
            {
                throw new ClienteJaPossuiContaException(cliente.Nome);
            }

            cliente = new Cliente(nomeCliente, cpfCliente);

            await this.clienteRepository.Salvar(cliente);

            NumeroConta numeroConta = DateTime.Now.Ticks.ToString();        //geração de um novo número de conta
            DigitoConta digitoConta = (new Random()).Next(1, 9).ToString(); //geração do digito verificador

            ContaCorrente conta = new ContaCorrente(cliente.Id, numeroAgencia, numeroConta, digitoConta);

            await this.contaRepository.Salvar(conta);

            return(new AbrirContaResult()
            {
                Cliente = cliente,
                Conta = conta
            });
        }
Beispiel #2
0
 public static bool CriarNumeroContaSeValido(this NumeroConta numeroConta)
 {
     return(GarantirQue.EstaValido(
                ValidarSe.NaoEstaVazioOuNulo(numeroConta.Numero, "Número é obrigatorio"),
                ValidarSe.SaoIguais(6, numeroConta.Numero.Length, "Número da conta deve conter 6 dígitos")
                ));
 }
Beispiel #3
0
 public override string ToString()
 {
     return("Conta: "
            + NumeroConta.ToString()
            + ", Títular: "
            + Nome
            + ", Saldo: R$ "
            + Saldo.ToString("F2", CultureInfo.InvariantCulture));
 }
Beispiel #4
0
 public override string ToString()
 {
     return("Conta "
            + NumeroConta.ToString()
            + ", Titular: "
            + _titular
            + ", Saldo: $ "
            + Saldo.ToString("F2", CultureInfo.InvariantCulture));
 }
 public ContaCorrente(Guid clienteId, NumeroAgencia numeroAgencia, NumeroConta numeroConta, DigitoConta digitoConta)
 {
     this.Id            = Guid.NewGuid();
     this.ClienteId     = clienteId;
     this.NumeroAgencia = numeroAgencia;
     this.NumeroConta   = numeroConta;
     this.DigitoConta   = digitoConta;
     this.transacoes    = new LancamentoCollection();
 }
Beispiel #6
0
        public void Deve_criar_NumeroConta()
        {
            var numeroConta = new NumeroConta(_numero);

            Assert.NotNull(numeroConta);
            Assert.Equal(_numero, numeroConta.Numero);
            Assert.Equal(_numero, numeroConta.ToString());
            Assert.True(numeroConta.EstaValido());
        }
        public void NaoDeveConseguirCriarUmNumeroContaCasoOValorInformadoForNullOuBranco()
        {
            NumeroContaNaoInformadoException ex = Assert.Throws <NumeroContaNaoInformadoException>(() =>
            {
                NumeroConta numeroConta = new NumeroConta(null);
            });

            Assert.Equal("Número da conta é obrigatório.", ex.Message);

            ex = Assert.Throws <NumeroContaNaoInformadoException>(() =>
            {
                NumeroConta numeroConta = new NumeroConta(String.Empty);
            });

            Assert.Equal("Número da conta é obrigatório.", ex.Message);
        }
        private void AbrirConta(Context context, Guid clienteId, Guid contaId, Cpf cpf, Nome nome, Senha senha, NumeroAgencia numeroAgencia, NumeroConta numeroConta, DigitoConta digitoConta, Valor saldoInicial)
        {
            context.Clientes.Add(new Cliente()
            {
                Cpf   = cpf,
                Nome  = nome,
                Senha = new SenhaCriptografada(senha),
                Id    = clienteId
            });

            context.Contas.Add(new ContaCorrente()
            {
                ClienteId     = clienteId,
                DigitoConta   = digitoConta,
                Id            = contaId,
                NumeroAgencia = numeroAgencia,
                NumeroConta   = numeroConta
            });

            context.Creditos.Add(new Credito()
            {
                ContaId       = contaId,
                DataTransacao = DateTime.UtcNow,
                TransacaoId   = Guid.NewGuid(),
                Id            = Guid.NewGuid(),
                Valor         = saldoInicial
            });
        }
Beispiel #9
0
 public void exibirDados()
 {
     Console.WriteLine("Conta: " + NumeroConta.ToString() + "," +
                       " Titular Da conta: " + TitularConta.ToString() + "," +
                       " Saldo: " + Saldo.ToString() + "R$\n");
 }
Beispiel #10
0
 public override string ToString()
 {
     return("Conta Corrente: " + NumeroConta.ToString() + "\n" +
            "Titular: " + Titular + "\n" +
            "Saldo: " + Saldo.ToString("F2") + "\n");
 }
        public void DeveConseguirCriarUmNumerConta()
        {
            NumeroConta numeroConta = new NumeroConta("123");

            Assert.Equal("123", numeroConta.ToString());
        }
        public static ContaCorrente Carregar(Guid id, Guid clienteId, NumeroAgencia numeroAgencia, NumeroConta numeroConta, DigitoConta digitoConta, LancamentoCollection transacoes)
        {
            var conta = new ContaCorrente();

            conta.NumeroAgencia = numeroAgencia;
            conta.NumeroConta   = numeroConta;
            conta.DigitoConta   = digitoConta;
            conta.Id            = id;
            conta.ClienteId     = clienteId;
            conta.transacoes    = transacoes;
            return(conta);
        }
Beispiel #13
0
 public Conta(Banco banco, Saldo saldo)
 {
     Banco         = banco;
     ContaCorrente = new NumeroConta(GerarNumeroConta());
     Saldo         = saldo;
 }
        public async Task <TransferirResult> Execute(NumeroAgencia numeroAgenciaOrigem, NumeroConta numeroContaOrigem, DigitoConta digitoContaOrigem, NumeroAgencia numeroAgenciaDestino, NumeroConta numeroContaDestino, DigitoConta digitoContaDestino, Valor valor)
        {
            if (valor <= 0)
            {
                throw new ValorInvalidoException();
            }

            var contaDebito = await this.contaRepository.Obter(numeroAgenciaOrigem, numeroContaOrigem, digitoContaOrigem);

            if (contaDebito == null)
            {
                throw new ContaNaoEncontradaException(numeroAgenciaOrigem, numeroContaOrigem, digitoContaOrigem);
            }

            if (contaDebito.ClienteId != usuarioAutenticado.Id)
            {
                throw new UsuarioLogadoNaoEhDonoDaContaException(contaDebito.Id);
            }

            var contaCredito = await this.contaRepository.Obter(numeroAgenciaDestino, numeroContaDestino, digitoContaDestino);

            if (contaCredito == null)
            {
                throw new ContaNaoEncontradaException(numeroAgenciaDestino, numeroContaDestino, digitoContaDestino);
            }


            if (contaCredito.Id == contaDebito.Id)
            {
                throw new ContaCreditoIgualContaDebitoException();
            }

            contaDebito.Debitar(valor);

            Guid transacaoId = Guid.NewGuid();

            Debito debito = contaDebito.ObterUltimaTransacao() as Debito;

            debito.AtrelarTransacao(transacaoId);

            await this.contaRepository.SalvarTransacao(contaDebito, debito);

            contaCredito.Creditar(valor);

            Credito credito = contaCredito.ObterUltimaTransacao() as Credito;

            credito.AtrelarTransacao(debito.TransacaoId);

            await this.contaRepository.SalvarTransacao(contaCredito, credito);

            return(new TransferirResult(valor, transacaoId, credito.DataTransacao, contaCredito, contaDebito));
        }