예제 #1
0
        public void CalcularSaldoDeListaDeMovimentacoes()
        {
            var listaMovimentacoes     = new List <Movimentacao>();
            var numeroDeDepositos      = 5;
            var numeroDeSaques         = 3;
            var numeroDeTransferencias = 4;

            var deposito = new Deposito(500.50);

            for (var i = 0; i < numeroDeDepositos; i++)
            {
                listaMovimentacoes.Add(deposito);
            }

            var saque = new Saque(10.82);

            for (var i = 0; i < numeroDeSaques; i++)
            {
                listaMovimentacoes.Add(saque);
            }

            var transferencia = new Transferencia(50.32, "000.000.000-00");

            for (var i = 0; i < numeroDeTransferencias; i++)
            {
                listaMovimentacoes.Add(transferencia);
            }

            var valorSaldoTeste =
                (deposito.Valor - deposito.CustoTaxaDeMovimentacao) * numeroDeDepositos +
                (-1 * (saque.Valor + saque.CustoTaxaDeMovimentacao)) * numeroDeSaques +
                (-1 * (transferencia.Valor + transferencia.CustoTaxaDeMovimentacao)) * numeroDeTransferencias;

            Assert.AreEqual(new CalculadoraSaldo(listaMovimentacoes).ObterSaldo(), valorSaldoTeste);
        }
        public ProviderTransacoesBancarias()
        {
            var ccN = new ContaCorrenteNormal();

            ccN.Numero = "123";
            var ccE = new ContaCorrenteEspecial();

            ccE.Numero = "321";
            var tra1 = new Deposito(ccN, 100);

            tra1._dataOperacao = Convert.ToDateTime("10/10/2012");
            var tra2 = new Deposito(ccE, 150);

            tra2._dataOperacao = Convert.ToDateTime("10/10/2012");
            var tra3 = new Saque(ccN, 250);

            tra3._dataOperacao = Convert.ToDateTime("10/10/2012");
            var tra4 = new Saque(ccE, 250);

            tra4._dataOperacao = Convert.ToDateTime("10/10/2012");

            _session = new List <TransacoesBancarias>();
            _session.Add(tra1);
            _session.Add(tra2);
            _session.Add(tra3);
            _session.Add(tra4);
        }
예제 #3
0
        public void FazerOperacaoCorretamente()
        {
            var movimentacao = new Saque(100);

            Assert.AreEqual(movimentacao.Valor, 100);
            Assert.AreEqual(movimentacao.TipoEvento, TipoMovimentacao.Saque);
        }
예제 #4
0
        public async Task <Caixa> SaqueAsync(Saque saqueDomain, Caixa caixa, string _correlationId)
        {
            try
            {
                Caixa result = null;
                var   Query  = _querySaqueBuilder.Update().Sets(caixa).WheresUpdates(caixa).Builder();

                using (var con = new SqlConnection(ConnectionString))
                {
                    await con.OpenAsync();

                    var rows = await con.ExecuteAsync(sql : Query.Sql.ToString(),
                                                      param : Query.Parameters,
                                                      commandTimeout : 140,
                                                      commandType : CommandType.Text);

                    Query.Sql.Clear();

                    if (rows > 0)
                    {
                        result = caixa;
                    }

                    //log

                    return(result);
                }
            }
            catch (Exception ex)
            {
                //log

                throw;
            }
        }
예제 #5
0
        private void btnSacar_Click(object sender, EventArgs e)
        {
            if (_cliente.Saldo < txtSaque.Text.ToString().ToDecimal())
            {
                MessageBox.Show("Saldo insuficiente para saque.");
                return;
            }
            var Saque = new Saque();

            Saque.IdCliente = _cliente.Id;
            Saque.Valor     = txtSaque.Text.ToString().ToDecimal();

            var enviado = MeuBancoService.PostSaque(Saque);

            if (enviado)
            {
                _cliente        = MeuBancoService.GetCliente(_cliente.Cpf);
                _cliente.Saldo -= Saque.Valor;
                MeuBancoService.PutCliente(_cliente);

                MessageBox.Show("Saque efetuado com sucesso!");
            }
            else
            {
                MessageBox.Show("Erro ao efetuar depósito!");
            }
            Close();
        }
예제 #6
0
 public SaqueTest()
 {
     //
     // TODO: Add constructor logic here
     //
     saque = new Saque();
 }
예제 #7
0
        public void testar_saque()
        {
            var conta = new ContaCorrente();

            conta.Credita(1000);
            conta.Numero = 123;

            TransacaoBancaria saque = new Saque(conta, 500);

            saque.Executa();

            Comprovante comprovante = saque.Comprovante;

            RepositorioTransacaoBancaria.LimparRepositorio();

            RepositorioTransacaoBancaria.Adicionar(saque);

            Assert.Contains(saque, RepositorioTransacaoBancaria.Listar());

            Saque recuperado = RepositorioTransacaoBancaria.Listar().Cast <Saque>().FirstOrDefault();

            List <Saque> saques = RepositorioTransacaoBancaria.Listar()
                                  .Where(t => t.GetType().Name == typeof(Saque).Name)
                                  .Cast <Saque>()
                                  .ToList();


            Assert.AreEqual(saque, recuperado);
        }
예제 #8
0
        public void Testesaquecontapremium()
        {
            Saque  saque = new Saque();
            string teste;

            //teste dos limites diarios
            Assert.AreEqual(5000, dados.getLimiteDiario(7777, "Sunday"));
            Assert.AreEqual(5000, dados.getLimiteDiario(7777, "Saturday"));
            Assert.AreEqual(3000, dados.getLimiteDiario(7777, "Monday"));
            Assert.AreEqual(3000, dados.getLimiteDiario(7777, "Tuesday"));
            Assert.AreEqual(3000, dados.getLimiteDiario(7777, "Wednesday"));
            Assert.AreEqual(3000, dados.getLimiteDiario(7777, "Thursday"));
            Assert.AreEqual(3000, dados.getLimiteDiario(7777, "Friday"));

            //teste de saque de valor negativo
            teste = saque.EfetuarSaque(7777, dados, -200, compartimentoDeSaque);
            Assert.AreEqual("Valor inválido", teste);

            //teste de saque de zero
            teste = saque.EfetuarSaque(7777, dados, 0, compartimentoDeSaque);
            Assert.AreEqual("Valor inválido", teste);

            //teste de saque de valor superior ao limite diario
            teste = saque.EfetuarSaque(7777, dados, 6000, compartimentoDeSaque);
            Assert.AreEqual("Você não possui saldo suficiente em sua conta.\n\nPor favor, escolha um valor menor.", teste);

            //teste de saque do dentro do limite diario
            teste = saque.EfetuarSaque(7777, dados, 3000, compartimentoDeSaque);
            Assert.AreEqual("Transação realizada.\nPor favor, retire seu dinheiro.", teste);

            //teste de saque apos ultrapassar o limite diario
            teste = saque.EfetuarSaque(7777, dados, 3000, compartimentoDeSaque);
            Assert.AreEqual("Valor excede o limite diário conforme o seu tipo de conta.", teste);
        }
        public void GravarDados(int valor, int conta)
        {
            try
            {
                var conexao = ConexaoMysql.getConexao();
                InsertSaque = "INSERT INTO `saque`(`VALOR`, `CONTA`, `DATAHORA`, `AUTORIZADO`) VALUES (@VALOR, @CONTA, now(), true)";

                var comando = new MySqlCommand("", conexao);
                comando.CommandText = InsertSaque;


#pragma warning disable CS0618 // Type or member is obsolete
                comando.Parameters.Add("@VALOR", valor);
                comando.Parameters.Add("@CONTA", conta);
#pragma warning restore CS0618 // Type or member is obsolete

                var ExecutaSaque = comando.ExecuteReader();

                var SaqueEfetuado = new Saque();


            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                ConexaoMysql.fecharConexao();
            }
        }
예제 #10
0
        public ActionResult DeleteConfirmed(int id)
        {
            Saque saque = db.Saques.Find(id);

            db.Saques.Remove(saque);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #11
0
        public void CalculaCustoOperacao()
        {
            var valor          = 100.15;
            var taxaOperacao   = 4.00;
            var custoCalculado = new Saque(valor).CalcularCustoOperacao(valor);

            Assert.AreEqual((Math.Round(valor / taxaOperacao, 2)), custoCalculado);
        }
예제 #12
0
        public void SaqueApareceNoExtrato()
        {
            var service      = new MovimentacaoService();
            var movimentacao = new Saque(100.82);

            service.AdicionarMovimentacao(movimentacao);
            Assert.Contains(movimentacao, (service.ObterExtrato().ListaOperacoes).ToList());
        }
        public void Saque_Trinta_Duas_Notas_Vinte_Uma_Nota_Dez()
        {
            var caixaEletronico = CaixaEletronico.New();
            var saque           = caixaEletronico.Sacar(30);

            var saqueEsperado = new Saque(1, 1, 0, 0);

            Assert.AreEqual(saqueEsperado, saque);
        }
        public void Saque_Oitenta_Uma_Nota_Dez_Uma_Nota_Vinte_Uma_Nota_Cinquenta()
        {
            var caixaEletronico = CaixaEletronico.New();
            var saque           = caixaEletronico.Sacar(80);

            var saqueEsperado = new Saque(1, 1, 1, 0);

            Assert.AreEqual(saqueEsperado, saque);
        }
 public void Executar()
 {
     if (_conta.Status != "Bloqueado" && _conta.Saldo >= _valor)
     {
         TransacaoBancaria saque = new Saque(_conta, _valor);
         saque.Executa();
         RepositorioTransacaoBancaria.Adicionar(saque);
     }
 }
예제 #16
0
        public void RetornoDeNotas()
        {
            var saque = new Saque(1, 1, 1, 1);

            Assert.AreEqual(1, saque.NotasDeDez);
            Assert.AreEqual(1, saque.NotasDeVinte);
            Assert.AreEqual(1, saque.NotasDeCinquenta);
            Assert.AreEqual(1, saque.NotasDeCem);
        }
예제 #17
0
 public void Executar()
 {
     if (_conta.Status != "Bloqueado" && _conta.Saldo >= _valor)
     {
         TransacaoBancaria saque = new Saque(_conta, _valor);
         saque.Executa();
         RepositorioTransacaoBancaria.Adicionar(saque);
     }
 }
        public IActionResult Create([FromBody] Saque saque)
        {
            if (saque == null)
            {
                return(BadRequest());
            }

            _saqueRepositorio.AddSaque(saque);
            return(new ObjectResult(_saqueRepositorio.FindByID(saque.idSaque)));
        }
예제 #19
0
 public ActionResult Edit([Bind(Include = "ID,ClienteID,Valor")] Saque saque)
 {
     if (ModelState.IsValid)
     {
         db.Entry(saque).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ClienteID = new SelectList(db.Clientes, "ID", "NomeCompleto", saque.ClienteID);
     return(View(saque));
 }
예제 #20
0
        public void CalcularSaldoComUmSaque()
        {
            var saque = new Saque(100.50);
            var listaMovimentacoes = new List <Movimentacao>();

            listaMovimentacoes.Add(saque);

            var calculadora = new CalculadoraSaldo(listaMovimentacoes);

            Assert.AreEqual(calculadora.ObterSaldo(), (-1 * (saque.Valor + saque.CustoTaxaDeMovimentacao)));
        }
예제 #21
0
        public void TestDeveriaCalcularTarifaCorretamente(decimal value, decimal expected)
        {
            var contaMock = new Mock <IContaCorrente>();

            contaMock.Setup(x => x.Saldo).Returns(100);

            var saque = new Saque(contaMock.Object, DateTime.Now, 0, value, value);

            var tarifa = saque.CalcularTarifa();

            Assert.Equal(expected, tarifa.Valor);
        }
예제 #22
0
        public void SaqueSomadoNoSaldo()
        {
            var valor      = 100.82;
            var service    = new MovimentacaoService();
            var saldoAntes = service.ObterExtrato().Saldo;

            var movimentacao = new Saque(valor);

            service.AdicionarMovimentacao(movimentacao);
            var saldoDepois = service.ObterExtrato().Saldo;

            Assert.AreEqual(Math.Round(saldoDepois, 2), Math.Round((saldoAntes - (movimentacao.Valor + movimentacao.CustoTaxaDeMovimentacao)), 2));
        }
예제 #23
0
        public JsonResult Saque(Saque saque)
        {
            try
            {
                ContaFactory.GetInstance().GetContaService().Saque(saque);

                return(Json(new { message = "Saque efetuado com sucesso!" }));
            }
            catch (Exception ex)
            {
                return(Json(new { message = ex.Message }));
            }
        }
 public void Sacar(string value)
 {
     try
     {
         var service = new MovimentacaoService();
         var evento  = new Saque(this.ToDouble(value));
         service.AdicionarMovimentacao(evento);
     }
     catch (Exception e)
     {
         throw new Exception("Ocorreu um erro. Favor executar a operação novamente.");
     }
 }
예제 #25
0
    //Abre tela de saque de acordo com conta selecionada
    protected void OnBtnSaqueClicked(object sender, EventArgs e)
    {
        if (viewContas.Selection.CountSelectedRows() > 0)
        {
            TreeIter  selectedConta;
            TreeModel model;

            viewContas.Selection.GetSelected(out model, out selectedConta);
            int pos = (int)model.GetValue(selectedConta, 0);

            Saque saq = new Saque(contas[pos]);
            saq.Show();
        }
    }
예제 #26
0
        // GET: Saques/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Saque saque = db.Saques.Find(id);

            if (saque == null)
            {
                return(HttpNotFound());
            }
            return(View(saque));
        }
예제 #27
0
        public void CalcularSaldoParaListaDeSaques()
        {
            var numeroDeOperacoes  = 2;
            var listaMovimentacoes = new List <Movimentacao>();
            var saque = new Saque(100.50);

            for (var i = 0; i < numeroDeOperacoes; i++)
            {
                listaMovimentacoes.Add(saque);
            }

            var calculadora = new CalculadoraSaldo(listaMovimentacoes);

            Assert.AreEqual(calculadora.ObterSaldo(), ((-1 * (saque.Valor + saque.CustoTaxaDeMovimentacao)) * numeroDeOperacoes));
        }
예제 #28
0
        public static bool PostSaque(Saque saque)
        {
            bool ret     = false;
            var  retorno = ApiService.Http.Metodo.POST <Saque, RetornoApi <Deposito> >(saque, ref ret, $"v1/Saque");

            if (retorno != null && retorno.Sucesso)
            {
                return(true);
            }
            else
            {
                MessageBox.Show(retorno != null ? retorno.Mensagem : "Erro");
                return(false);
            }
        }
 public static Saque ExecutarSaque(ContaCorrente conta, decimal valor)
 {
     Saque saque;
     if (conta.Ativa && conta.Saldo >= valor)
     {
         saque = new Saque(conta, valor);
         saque.Executa();
         RepositorioTransacaoBancaria.Adicionar(saque);
     }
     else
     {
         throw new InvalidOperationException("Conta bloqueada ou saldo insuficiente!");
     }
     return saque;
 }
예제 #30
0
        public ContaPessoa GetContaSaque(string Conta, string Agencia, string Senha)
        {
            _Saque = new Saque();

            var contaAcessada = _Saque.GetContaAgenciaSenha(Conta, Agencia, Senha);

            if (contaAcessada.handle <= 0)
            {
                throw new ContaNaoEncontradaException();
            }
            else
            {
                return(contaAcessada);
            }
        }
예제 #31
0
        // GET: Saques/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Saque saque = db.Saques.Find(id);

            if (saque == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ClienteID = new SelectList(db.Clientes, "ID", "NomeCompleto", saque.ClienteID);
            return(View(saque));
        }
예제 #32
0
        public void Saque(ContaCorrente contaOrigem, decimal valor)
        {
            if (contaOrigem.Status.Equals(ContaCorrente.StatusConta.Ativa.ToString()))
            {
                TransacaoBancaria transacao = new Saque(contaOrigem, valor);

                ValidaSaldo(contaOrigem, valor, "Saque");

                transacao.Executa();
            }
            else
            {
                throw new Exception("Conta não está ativa");
            }
        }
 public static void Adicionar(Saque saque)
 {
     saques.Add(saque);
 }