public async Task <ContaCadastradaDto> Add(ContaCadastradaDto contaDto) { var conta = _map.Map <ContaCadastrada>(contaDto); _repo.Add(conta); if (await _repo.SaveChangeAsync()) { return(_map.Map <ContaCadastradaDto>(conta)); } throw new ArgumentException("Erro ao Adicionar!"); }
public async Task <ContaDto> Transferencia(HelperContaDto contaDto) { // CONTA QUE IRA MANDAR A TRANSFERENCIA var contaOrigin = await _repo.GetByAgenciaAndContaCorrente(contaDto.Agencia, contaDto.Conta); // CONTA QUE IRA RECEBER A TRANSFERENCIA var contaDestino = await _repo.GetByAgenciaAndContaCorrente(contaDto.AgenciaDestino, contaDto.ContaDestino); await ExistContaFindByCPF(contaDto); // SE O REGISTRO RETORNA COMO NULL if (contaOrigin == null || contaDestino == null) { throw new NotFoundException("Conta origin nao encontrada e/ou conta destino nao encontrada!"); } else if (contaDto.Quantia > contaOrigin.Saldo) { throw new NotFoundException("Saldo Insuficiente!"); } bool senhaConfere = CompareSenha(contaDto.Senha, contaOrigin.Senha); if (!senhaConfere) { throw new ArgumentException("Senha incorreta!"); } contaOrigin.Saldo -= contaDto.Quantia; contaDestino.Saldo += contaDto.Quantia; List <Conta> contas = new List <Conta>(); contas.Add(contaOrigin); contas.Add(contaDestino); _repo.UpdateRange(contas); if (await _repo.SaveAsync()) { HistoricoDto historicoOriginDto = new HistoricoDto { DataTransacao = DateTime.Now, DescricaoTransacao = "TRANSFERENCIA BANCARIA PARA CONTA CORRENTE", DigitosAgencia = contaOrigin.DigitosAgencia, DigitosConta = contaOrigin.DigitosConta, DigitosAgenciaDestino = contaDestino.DigitosAgencia, DigitosContaDestino = contaDestino.DigitosConta, TipoConta = 0, Valor = contaDto.Quantia, NomeConta = contaOrigin.NomeConta, NomeContaDestino = contaDestino.NomeConta, Operacao = 4 }; var historicoAdd = await _historicoServices.Add(historicoOriginDto); HistoricoDto historicoDestinoDto = new HistoricoDto { DataTransacao = DateTime.Now, DescricaoTransacao = "RECEBIMENTO DE TRANSFERENCIA BANCARIA", DigitosAgencia = contaOrigin.DigitosAgencia, DigitosConta = contaOrigin.DigitosConta, DigitosAgenciaDestino = contaDestino.DigitosAgencia, DigitosContaDestino = contaDestino.DigitosConta, TipoConta = 0, Valor = contaDto.Quantia, NomeConta = contaOrigin.NomeConta, NomeContaDestino = contaDestino.NomeConta, }; var historicoDestinoAdd = await _historicoServices.Add(historicoDestinoDto); HistoricosContasDto historicosContasDestinoDto = new HistoricosContasDto { ContaId = contaDestino.Id, HistoricoId = historicoDestinoAdd.Id, DataCriacao = DateTime.Now }; HistoricosContasDto historicosContasDto = new HistoricosContasDto { ContaId = contaOrigin.Id, HistoricoId = historicoAdd.Id, DataCriacao = DateTime.Now }; var historicosContas = _map.Map <HistoricosContas>(historicosContasDto); var historicosContasDestino = _map.Map <HistoricosContas>(historicosContasDestinoDto); List <HistoricosContas> listHistoricosContas = new List <HistoricosContas>(); listHistoricosContas.Add(historicosContas); listHistoricosContas.Add(historicosContasDestino); _repoHistoricosContas.AddRange(listHistoricosContas); if (await _repoHistoricosContas.SaveAsync()) { bool existeContaCadastrada = await _contaCadastradaService.ExisteContaCadastrada(contaDestino.Id, contaOrigin.PessoaId); if (!existeContaCadastrada) { ContaCadastradaDto contaCadastradaDto = new ContaCadastradaDto { ContaId = contaDestino.Id, PessoaId = contaOrigin.PessoaId }; await _contaCadastradaService.Add(contaCadastradaDto); } return(_map.Map <ContaDto>(contaOrigin)); } } throw new ArgumentException("Erro ao persistir no banco!"); }