示例#1
0
 public ContaOperacao Add(ContaOperacao contaOperacao)
 {
     try
     {
         _db.ContaOperacao.Add(contaOperacao);
         _db.SaveChanges();
         return(contaOperacao);
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
         throw ex;
     }
 }
示例#2
0
        public async Task <ContaOperacao> AddAsync(ContaOperacao contaOperacao)
        {
            try
            {
                await _db.ContaOperacao.AddAsync(contaOperacao);

                await _db.SaveChangesAsync();

                return(contaOperacao);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw ex;
            }
        }
示例#3
0
        public async void Saque10SubtraiSaldoConta9188827893()
        {
            var conta      = 9188827893;
            var valorSaque = 95;

            // When
            var contaSaldo = await _contaSaldoRepository.GetAsync(conta);

            Assert.NotNull(contaSaldo);

            Assert.False(contaSaldo.SaldoAtual <= 0);
            Assert.False(contaSaldo.SaldoAtual - valorSaque < 0);

            var valorNovoSaldo = Math.Truncate(contaSaldo.SaldoAtual - valorSaque);

            var objContaOperacao = new ContaOperacao
            {
                IdCliente    = contaSaldo.IdCliente,
                IdConta      = contaSaldo.IdConta,
                DataOperacao = DateTime.Now,
                TipoOperacao = "D",
                Valor        = valorSaque
            };

            var contaOperacao = await _contaOperacaoRepository.AddAsync(objContaOperacao);

            Assert.NotNull(contaOperacao);

            var objContaSaldo = contaSaldo;

            objContaSaldo.SaldoAnterior = objContaSaldo.SaldoAtual;
            objContaSaldo.SaldoAtual    = valorNovoSaldo;

            _contaSaldoRepository.Update(objContaSaldo);

            var contaSaldoAtualizado = await _contaSaldoRepository.GetAsync(conta);

            Assert.NotNull(contaSaldoAtualizado);

            // Then
            Assert.Equal(valorNovoSaldo, contaSaldoAtualizado.SaldoAtual);
        }
示例#4
0
        public async void Deposito10SomaSaldoConta9188827893()
        {
            var conta         = 9188827893;
            var valorDeposito = 10;

            // When
            var contaSaldo = await _contaSaldoRepository.GetAsync(conta);

            Assert.NotNull(contaSaldo);

            var valorNovoSaldo = Math.Truncate(contaSaldo.SaldoAtual + valorDeposito);

            var objContaOperacao = new ContaOperacao
            {
                IdCliente    = contaSaldo.IdCliente,
                IdConta      = contaSaldo.IdConta,
                DataOperacao = DateTime.Now,
                TipoOperacao = "C",
                Valor        = valorDeposito
            };

            var contaOperacao = await _contaOperacaoRepository.AddAsync(objContaOperacao);

            Assert.NotNull(contaOperacao);

            var objContaSaldo = contaSaldo;

            objContaSaldo.SaldoAnterior = objContaSaldo.SaldoAtual;
            objContaSaldo.SaldoAtual    = valorNovoSaldo;

            _contaSaldoRepository.Update(objContaSaldo);

            var contaSaldoAtualizado = await _contaSaldoRepository.GetAsync(conta);

            Assert.NotNull(contaSaldoAtualizado);

            // Then
            Assert.Equal(valorNovoSaldo, contaSaldoAtualizado.SaldoAtual);
        }
示例#5
0
 public Task <ContaOperacao> AddAsync(ContaOperacao contaOperacao)
 {
     _ContaOperacao[0].Valor = _ContaOperacao[0].Valor + contaOperacao.Valor;
     return(Task.FromResult(_ContaOperacao[0]));
 }
示例#6
0
 public ContaOperacao Add(ContaOperacao contaOperacao)
 {
     _ContaOperacao[0].Valor = _ContaOperacao[0].Valor + contaOperacao.Valor;
     return(_ContaOperacao[0]);
 }
示例#7
0
        public OperacaoCaixaMutation(ContextServiceLocator contextServiceLocator)
        {
            Field <ContaOperacaoOutputType>(
                "depositar",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "conta"
            },
                    new QueryArgument <NonNullGraphType <DecimalGraphType> > {
                Name = "valor"
            }
                    ),
                resolve: context =>
            {
                var dtOperacao = DateTime.Now;

                var conta    = context.GetArgument <Int64>("conta");
                var valorDec = context.GetArgument <decimal>("valor");

                var contaCliente = contextServiceLocator.ContaClienteRepository.Get(conta).FirstOrDefault();

                if (contaCliente == null || contaCliente.NumeroConta <= 0)
                {
                    throw new ExecutionError("Conta inválida.");
                }

                if (valorDec <= 0)
                {
                    throw new ExecutionError("Valor inválido.");
                }

                var valor = double.Parse(valorDec.ToString());

                var contaOperacao = new ContaOperacao
                {
                    Id           = ContaOperacao.GetNewId(),
                    IdCliente    = contaCliente.IdCliente,
                    IdConta      = contaCliente.Id,
                    TipoOperacao = "C",     //Crédito
                    Valor        = valor,
                    DataOperacao = dtOperacao,
                    Modificado   = DateTime.Now,
                    StatusRow    = "I",  //Insert
                    IdUserInsert = -1    //Sistema
                };

                contextServiceLocator.ContaOperacaoRepository.Add(contaOperacao);

                var contaSaldo = contextServiceLocator.ContaSaldoRepository.Get(conta);

                contaSaldo.SaldoAnterior = contaSaldo.SaldoAtual;
                contaSaldo.SaldoAtual    = Math.Round(contaSaldo.SaldoAtual + valor, 2);

                contextServiceLocator.ContaSaldoRepository.Update(contaSaldo);

                return(new ContaOperacao {
                    Valor = contaSaldo.SaldoAtual, Conta = new ContaCliente {
                        NumeroConta = conta
                    }
                });
            });

            Field <ContaOperacaoOutputType>(
                "sacar",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "conta"
            },
                    new QueryArgument <NonNullGraphType <DecimalGraphType> > {
                Name = "valor"
            }
                    ),
                resolve: context =>
            {
                var dtOperacao = DateTime.Now;

                var conta    = context.GetArgument <Int64>("conta");
                var valorDec = context.GetArgument <decimal>("valor");

                var contaCliente = contextServiceLocator.ContaClienteRepository.Get(conta).FirstOrDefault();

                if (contaCliente == null || contaCliente.NumeroConta <= 0)
                {
                    throw new ExecutionError("Conta inválida.");
                }

                if (valorDec <= 0)
                {
                    throw new ExecutionError("Valor inválido.");
                }

                var valor = double.Parse(valorDec.ToString());

                var contaOperacao = new ContaOperacao
                {
                    Id           = ContaOperacao.GetNewId(),
                    IdCliente    = contaCliente.IdCliente,
                    IdConta      = contaCliente.Id,
                    TipoOperacao = "D",    //Débito
                    Valor        = valor,
                    DataOperacao = dtOperacao,
                    Modificado   = DateTime.Now,
                    StatusRow    = "I", //Insert
                    IdUserInsert = -1   //Sistema
                };

                var contaSaldo = contextServiceLocator.ContaSaldoRepository.Get(conta);

                if (contaSaldo.SaldoAtual < valor)
                {
                    throw new ExecutionError("Saldo insuficiente.");
                }

                contextServiceLocator.ContaOperacaoRepository.Add(contaOperacao);

                contaSaldo.SaldoAnterior = contaSaldo.SaldoAtual;
                contaSaldo.SaldoAtual    = Math.Round(contaSaldo.SaldoAtual - valor, 2);

                contextServiceLocator.ContaSaldoRepository.Update(contaSaldo);

                return(new ContaOperacao {
                    Valor = contaSaldo.SaldoAtual, Conta = new ContaCliente {
                        NumeroConta = conta
                    }
                });
            });
        }