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 }); }
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") )); }
public override string ToString() { return("Conta: " + NumeroConta.ToString() + ", Títular: " + Nome + ", Saldo: R$ " + Saldo.ToString("F2", CultureInfo.InvariantCulture)); }
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(); }
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 }); }
public void exibirDados() { Console.WriteLine("Conta: " + NumeroConta.ToString() + "," + " Titular Da conta: " + TitularConta.ToString() + "," + " Saldo: " + Saldo.ToString() + "R$\n"); }
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); }
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)); }