public Task <Domain.ContaCorrente.ContaCorrente> Obter(ContaModel conta) { if (conta == null) { return(Task.FromResult <Domain.ContaCorrente.ContaCorrente> (null)); } Domain.ContaCorrente.ContaCorrente fakeConta = null; if (StaticValues.ContaCorrenteInterna(conta.Banco)) { // Gerando dados de saldos, limites, status e etc, devido a aplicação não estar persistindo dados fakeConta = new Domain.ContaCorrente.ContaCorrente() { Agencia = conta.Agencia, Conta = conta.Conta, DigitoConta = conta.DigitoConta, DataAbertura = DateTime.Now, Limite = new Random().Next(0, 30000), Saldo = new Random().Next(-5000, 50000), Status = StatusContaCorrente.ATIVA, Tipo = TipoContaCorrente.PESSOA_FISICA }; } return(Task.FromResult <Domain.ContaCorrente.ContaCorrente> (fakeConta)); }
public async Task <ServiceResult> Transferir(ContaModel ccOrigem, ContaModel ccDestino, decimal valor) { Domain.ContaCorrente.ContaCorrente contaDestino = null; if (valor <= 0) { return(Criticas.Transferencia.ValorInvalido); } var contaOrigem = await this.ContaCorrenteService.Obter(ccOrigem); if (contaOrigem == null) { return(Criticas.ContaCorrente.ContaInvalida); } var contaOrigemAtiva = await this.ContaCorrenteService.ValidarContaAtiva(contaOrigem); if (!contaOrigemAtiva) { return(Criticas.Transferencia.ContaOrigemInvalida); } if (StaticValues.ContaCorrenteInterna(ccDestino.Banco)) { contaDestino = await this.ContaCorrenteService.Obter(ccDestino); if (contaDestino == null) { return(Criticas.ContaCorrente.ContaInvalida); } var contaDestinoAtiva = await this.ContaCorrenteService.ValidarContaAtiva(contaDestino); if (!contaDestinoAtiva) { return(Criticas.Transferencia.ContaDestinoInvalida); } } var debitoResult = await this.ContaCorrenteService.Debitar(contaOrigem, valor); if (!debitoResult.Ok) { return(debitoResult); } if (StaticValues.ContaCorrenteInterna(ccDestino.Banco)) { await this.ContaCorrenteService.Creditar(contaDestino, valor); } else { await this.SPBQueueService.EnviarTransferenciaSPB(ccDestino, valor); } return(ServiceResult.Processado()); }
public Task <bool> ValidarContaAtiva(Domain.ContaCorrente.ContaCorrente conta) { if (conta.Status != StatusContaCorrente.ATIVA) { return(Task.FromResult(false)); } return(Task.FromResult(true)); }
public Task <ServiceResult> InserirLancamento(Domain.ContaCorrente.ContaCorrente conta, LancamentosConta lancamento) { if (conta.Lancamentos == null) { conta.Lancamentos = new List <LancamentosConta> (); } conta.Lancamentos.Add(lancamento); return(ServiceResult.ProcessadoTask()); }
public async Task <ServiceResult> Creditar(Domain.ContaCorrente.ContaCorrente conta, decimal valor) { conta.Saldo += valor; // Persistencia de dados await InserirLancamento(conta, new LancamentosConta() { IdLancamento = Guid.NewGuid(), HorarioLancamento = DateTime.Now, Tipo = TipoLancamento.CREDITO, Valor = valor }); return(ServiceResult.Processado()); }
public async Task <ServiceResult> Debitar(Domain.ContaCorrente.ContaCorrente conta, decimal valor) { if (conta.SaldoComLimite < valor) { return(Criticas.Transferencia.SemSaldo); } conta.Saldo -= valor; // Persistencia de dados await InserirLancamento(conta, new LancamentosConta() { IdLancamento = Guid.NewGuid(), HorarioLancamento = DateTime.Now, Tipo = TipoLancamento.DEBITO, Valor = valor }); return(ServiceResult.Processado()); }