Exemple #1
0
        public Extrato(IConta conta, DateTime inicio, DateTime fim) : base(conta)
        {
            this.Inicio = inicio;
            this.Fim    = fim;

            RepositorioOperacoes.Instance.Adiciona(this);
        }
 public Lancamento(IConta conta, TipoDeLancamento tipo, Decimal valor, DateTime dataDoLancamento, IDateTimeProvider timeProvider) : base(Guid.NewGuid(), timeProvider)
 {
     this.Tipo             = tipo;
     this.ContaId          = conta.Id;
     this.DataDoLancamento = dataDoLancamento;
     this.DefinirValor(valor);
 }
        public Deposito(IConta conta, double valor)
            : base(conta)
        {
            this.Valor = valor;

            RepositorioOperacoes.Instance.Adiciona(this);
        }
Exemple #4
0
        private void CriarLancamentoNaContaDestino(IConta conta, decimal valor, IDateTimeProvider timeProvider)
        {
            var lancamento = new Lancamento(conta, TipoDeLancamento.Credito, valor, this.CreatedAt, timeProvider);

            conta.AdicionarLancamento(lancamento);
            Lancamentos.Add(lancamento);
        }
Exemple #5
0
        public Deposito(IConta conta, double valor)
            : base(conta)
        {
            this.Valor = valor;

            RepositorioOperacoes.Instance.Adiciona(this);
        }
Exemple #6
0
        public void CadastrarConta(IConta conta)
        {
            var insertUsuario = @"
INSERT INTO [dbo].[Cliente]
           ([Nome]
           ,[Sobrenome]
           ,[Cpf]
           ,[Rg]
           ,[DataNascimento])
     VALUES
           (@nome
           ,@sobrenome
           ,@cpf
           ,@rg
           ,@dataNascimento)

select scope_identity()

";
            var insertConta   = @"
INSERT INTO [dbo].[Conta]
           ([IdCliente]
           ,[DataAbertura]
           ,[DataEncerramento]
           ,[Saldo]
           ,[TipoConta]
           ,[NumeroConta])
     VALUES
           (@idCliente,
           ,@dataAbertura
           ,@dataEncerramento
           ,@saldo
           ,@tipoConta
           ,@numeroConta)

";

            try
            {
                using (var tr = new TransactionScope())
                    using (var conn = new SqlConnection(_connString))
                    {
                        conn.Open();
                        long idUsuario = conn.Query <long>(insertUsuario, conta.cliente).FirstOrDefault();
                        conta.IdCliente = idUsuario;
                        conn.Execute(insertConta, conta);
                        tr.Complete();
                    }
            }
            catch (SqlException)
            {
                //Logar no application insight
                //tratar excessao aqui
            }
            catch (Exception e)
            {
                //tratar excessao aqui
            }
        }
Exemple #7
0
        public IOperacaoBancaria[] RetornaOperacoes(IConta conta, Type type)
        {
            var res = from op in RetornaOperacoes(conta)
                      where op.GetType().Name == type.Name
                      select op;

            return(res.ToArray());
        }
        public Extrato(IConta conta, DateTime inicio,DateTime fim)
            : base(conta)
        {
            this.Inicio = inicio;
            this.Fim = fim;

            RepositorioOperacoes.Instance.Adiciona(this);
        }
Exemple #9
0
        public void imprimeExtratoBasico(IConta c)
        {
            DateTime agora   = DateTime.Now;
            string   horario = String.Format(" {0: d/M/yyyy HH:mm:ss}", agora);

            Console.WriteLine(" DATA : " + horario);
            Console.WriteLine(" SALDO : " + c.Saldo);
        } //fim imprimeExtrato
Exemple #10
0
 public void GeraExtrato(IConta c)
 {
     Console.WriteLine();
     Console.WriteLine("EXTRATO");
     Console.WriteLine("Numero Conta .: " + c.Numero);
     Console.WriteLine("SALDO ........: " + c.Saldo);
     Console.WriteLine();
 }
        public Transferencia(IConta contaOrigem, IConta contaDestino, double valor)
            : base(contaOrigem)
        {
            this.ContaDestino = contaDestino;
            this.Valor        = valor;

            RepositorioOperacoes.Instance.Adiciona(this);
        }
Exemple #12
0
 public ContaController(
     IConta contaRepositorio,
     IUsuario usuarioRepositorio
     )
 {
     _contaRepositorio   = contaRepositorio;
     _usuarioRepositorio = usuarioRepositorio;
 }
Exemple #13
0
        public IOperacaoBancaria[] RetornaOperacoes(IConta conta)
        {
            var res = from op in RetornaTodos()
                      where op.Conta.Agencia == conta.Agencia &&
                      op.Conta.NumeroConta == conta.NumeroConta
                      select op;

            return(res.ToArray());
        }
Exemple #14
0
        public IOperacaoBancaria[] RetornaOperacoes(IConta conta, DateTime dataInicio, DateTime dataFim)
        {
            var res = from op in RetornaOperacoes(conta)
                      where op.Data.Date >= dataInicio.Date &&
                      op.Data.Date <= dataFim.Date
                      select op;

            return(res.ToArray());
        }
        public IOperacaoBancaria(IConta conta)
        {
            if (conta.Status == Enums.StatusConta.Bloqueada)
                throw new SistBancario.Excecoes.OperacaoNaoEfetuadaEx("Operação não pôde ser efetuada. Conta Bloqueada.");
            else if(conta.Status == Enums.StatusConta.Fechada)
                throw new SistBancario.Excecoes.OperacaoNaoEfetuadaEx("Operação não pôde ser efetuada. Conta Fechada.");

            this.Conta = conta;
            this.Data = DateTime.Now;
            this.ID = Guid.NewGuid();
        }
Exemple #16
0
        public void Transferir(IConta destino, double valor)
        {
            if (valor + (valor * TAXA_TRASFERENCIA) > _saldo)
            {
                Console.WriteLine("Saldo insuficiente para realizar a transferencia de " + valor + " reais + tarifas");
                return;
            }

            _saldo -= valor + (valor * TAXA_TRASFERENCIA);
            destino.Depositar(valor);
        }
Exemple #17
0
        private void CalculaResultado()
        {
            while (ops.Count > 0)
            {
                int indexOperacao = 0;

                if (ops.Where(c => c == 'x' || c == '/').Count() > 0)
                {
                    indexOperacao = ops.FindIndex(c => c == 'x' || c == '/');
                }

                else
                {
                    indexOperacao = ops.FindIndex(c => c == '+' || c == '-');
                }

                int indexNum1 = indexOperacao;
                int indexNum2 = indexNum1 + 1;

                IConta conta = null;

                switch (ops[indexOperacao])
                {
                case '+':
                    conta = new ContaSoma();
                    break;

                case '-':
                    conta = new ContaSubtracao();
                    break;

                case 'x':
                    conta = new ContaMulti();
                    break;

                case '/':
                    conta = new ContaDivisao();
                    break;

                default:
                    conta = new ContaDefault();
                    break;
                }

                Nums[indexNum1] = conta.Calcula(Nums[indexNum1], Nums[indexNum2]);

                ops.RemoveAt(indexOperacao);
                Nums.RemoveAt(indexNum2);
            }
            txtVisor.Text = "=" + Nums[0];

            Nums.Clear();
            ops.Clear();
        }
Exemple #18
0
        public void RetornaContaTest()
        {
            Agencia ag = Fabrica.CriaAgencia();

            Cliente cliente = Fabrica.CriaCliente(true);

            int numConta = ag.CriarConta(new Cliente[] { cliente });

            IConta conta = ag.RetornaConta(numConta);

            Assert.AreEqual(numConta, conta.NumeroConta);
        }
Exemple #19
0
        public void FecharConta(int numeroConta)
        {
            try
            {
                IConta conta = RepositorioContas.Instance.RetornaConta(numeroConta);

                VerificarDisponibilidadeConta(conta);

                AlteraStatusConta(conta, StatusConta.Fechada);
            }
            catch { throw; }
        }
Exemple #20
0
 public AluguelController(
     IUsuario usuarioRepositorio,
     IConta contaRepositorio,
     IAluguel aluguelRepositorio,
     IEmail email
     )
 {
     _usuarioRepositorio = usuarioRepositorio;
     _contaRepositorio   = contaRepositorio;
     _aluguelRepositorio = aluguelRepositorio;
     _email = email;
 }
Exemple #21
0
 public ATMFacade(string numeroCartao)
 {
     _cartao = new Cartao();
     if (_cartao.ValidarCartao(numeroCartao))
     {
         _correntista = _cartao.ObterCorrentista();
         _conta       = new Conta(_correntista);
     }
     _deposito   = new Deposito(_conta);
     _emprestimo = new Emprestimo(_conta);
     _pagamento  = new Pagamento(_conta);
     _saque      = new Saque(_conta);
 }
Exemple #22
0
        public void FecharContaTest()
        {
            Agencia ag = Fabrica.CriaAgencia();

            Cliente cliente = Fabrica.CriaCliente(true);

            int numConta = ag.CriarConta(new Cliente[] { cliente });

            ag.FecharConta(numConta);

            IConta conta = ag.RetornaConta(numConta);

            Assert.AreEqual(StatusConta.Fechada, conta.Status);
        }
        public IOperacaoBancaria(IConta conta)
        {
            if (conta.Status == Enums.StatusConta.Bloqueada)
            {
                throw new SistBancario.Excecoes.OperacaoNaoEfetuadaEx("Operação não pôde ser efetuada. Conta Bloqueada.");
            }
            else if (conta.Status == Enums.StatusConta.Fechada)
            {
                throw new SistBancario.Excecoes.OperacaoNaoEfetuadaEx("Operação não pôde ser efetuada. Conta Fechada.");
            }

            this.Conta = conta;
            this.Data  = DateTime.Now;
            this.ID    = Guid.NewGuid();
        }
Exemple #24
0
        static void Main(string[] args)
        {
            //Factory Method
            Console.WriteLine(" ----  Faactory Method ---- ");
            IBanco banco = new BancoBanrisul();
            IConta conta = banco.CriaConta();

            conta.exibirDados();

            IBanco banco2 = new BancoCaixa();
            IConta conta2 = banco2.CriaConta();

            conta2.exibirDados();

            //Proxy Method
            Console.WriteLine(Environment.NewLine + " ----  Proxy Method ---- ");
            Funcionario funcionario  = new Funcionario("Romulo", "Gerente");
            Funcionario funcionario1 = new Funcionario("Daniel", "Atendente de caixa");

            Console.WriteLine(funcionario.getSaldo());
            Console.WriteLine(funcionario1.getSaldo());

            Console.ReadKey();

            //Template Method
            Console.WriteLine(Environment.NewLine + " ----  Template Method ---- ");
            ListarClientes listarClientes = new ListarClientes(ModoDeBusca.porNome);

            listarClientes.addCliente("Romulo");
            listarClientes.addCliente("Ana");
            listarClientes.addCliente("Daniela");

            Console.WriteLine("Listar por nome:");
            listarClientes.exibirClientes();

            Console.WriteLine(Environment.NewLine + "Listar por idade:");
            listarClientes.SetModo(ModoDeBusca.porIdade);
            listarClientes.exibirClientes();

            //Strategy
            Console.WriteLine(Environment.NewLine + " ----  Strategy ---- ");
            Console.WriteLine(funcionario.getNome() + "- salario com imposto: " + funcionario.CalculoSalarioJuros());
            //vai printar saldo 0 pois o ele é um atendente de caixa, e não pode acessar o saldo
            Console.WriteLine(funcionario1.getNome() + "- salario com imposto: " + funcionario1.CalculoSalarioJuros());

            Console.ReadKey();
        }
Exemple #25
0
        private void BtnSalvar_Click(object sender, RoutedEventArgs e)
        {
            var cliente = new Cliente();

            cliente.Cpf            = this.txtCpf.Text;
            cliente.Nome           = this.txtNome.Text;
            cliente.Sobrenome      = this.txtSobrenome.Text;
            cliente.DataNascimento = this.txtDtNascimento.DisplayDate;
            cliente.Rg             = this.txtRg.Text;

            var    tipoConta = this.cbbTipoConta.Text as string;
            IConta conta     = null;

            switch (tipoConta)
            {
            case "Conta Corrente":
                conta         = new ContaCorrente();
                conta.cliente = cliente;
                var ramdom = new Random();
                conta.DataAbertura     = DateTime.Now;
                conta.NumeroConta      = ramdom.Next(1, 100).ToString();
                conta.DataEncerramento = null;
                conta.Saldo            = Convert.ToDecimal(this.txtDepositoInicial.Text);
                break;

            case "Conta Poupança":
                conta         = new ContaPoupanca();
                conta.cliente = cliente;
                break;

            case "Conta Investimento":
                conta         = new ContaInvestimento();
                conta.cliente = cliente;
                break;
            }

            try
            {
                gestorConta.AddNovaConta(conta);
                MessageBox.Show("Cliente salvo com sucesso!");
            }
            catch (Exception exception)
            {
                MessageBox.Show("Ocorreu um erro ao inserir o cliente");
            }
        }
Exemple #26
0
        private static void VerificarDisponibilidadeConta(IConta conta)
        {
            if (conta == null)
            {
                throw new OperacaoNaoEfetuadaEx("Operação não pôde ser efetuada. Conta Inexistente.");
            }

            if (conta.Status != StatusConta.Aberta)
            {
                throw new OperacaoNaoEfetuadaEx("Operação não pôde ser efetuada. Conta fechada ou bloqueada.");
            }

            if (conta.ExistePendencias())
            {
                throw new OperacaoNaoEfetuadaEx("Operação não pôde ser efetuada. Existem pendência nessa conta.");
            }
        }
Exemple #27
0
        public Transacao(IUsuario usuario, IConta contaOrigem, List <IConta> contasDestino, decimal valor, IDateTimeProvider timeProvider) : base(Guid.NewGuid(), timeProvider)
        {
            this.Lancamentos          = new List <ILancamento>();
            this.UsuarioResponsavelId = usuario.Id;
            this.UsuarioResponsavel   = usuario;
            this.ContaOrigemId        = contaOrigem.Id;
            this.ContaOrigem          = contaOrigem;
            this.ContasDestinoIds     = contasDestino.Select(c => c.Id).ToList();
            this.ContasDestino        = contasDestino;
            var valorTotal = valor * contasDestino.Count;

            DefinirValor(valorTotal);
            ContasDestino.ForEach(c =>
            {
                CriarLancamentoNaContaOrigem(contaOrigem, valor, timeProvider);
                CriarLancamentoNaContaDestino(c, valor, timeProvider);
            });
        }
Exemple #28
0
        public void DepositoTest()
        {
            Agencia ag = Fabrica.CriaAgencia();

            Cliente cliente = Fabrica.CriaCliente(false);

            int numConta = ag.CriarConta(new Cliente[] { cliente });

            IConta conta = ag.RetornaConta(numConta);

            double saldoEsperado = conta.Saldo + 100;

            Deposito deposito = new Deposito(conta, 100);

            deposito.Executa();

            Assert.AreEqual(saldoEsperado, conta.Saldo);
        }
Exemple #29
0
        public void SaqueTest()
        {
            Agencia ag = Fabrica.CriaAgencia();

            Cliente cliente = Fabrica.CriaCliente(false);

            int numConta = ag.CriarConta(new Cliente[] { cliente });

            IConta conta = ag.RetornaConta(numConta);

            double saldoEsperado = conta.Saldo - 100;

            Saque saque = new Saque(conta, 100);

            saque.Executa();

            Assert.AreEqual(saldoEsperado, conta.Saldo);
        }
Exemple #30
0
        public void TranferenciaTest()
        {
            Agencia ag = Fabrica.CriaAgencia();

            Cliente cliente = Fabrica.CriaCliente(false);

            int numConta1 = ag.CriarConta(new Cliente[] { cliente });
            int numConta2 = ag.CriarConta(new Cliente[] { cliente });

            IConta conta1 = ag.RetornaConta(numConta1);
            IConta conta2 = ag.RetornaConta(numConta2);

            double saldoEsperado1 = conta1.Saldo - 100;

            Transferencia transferencia = new Transferencia(conta1, conta2, 100);

            transferencia.Executa();

            Assert.AreEqual(saldoEsperado1, conta1.Saldo);
        }
Exemple #31
0
        public void ExtratoTest()
        {
            Agencia ag = Fabrica.CriaAgencia();

            Cliente cliente = Fabrica.CriaCliente(false);

            int numConta = ag.CriarConta(new Cliente[] { cliente });

            IConta conta = ag.RetornaConta(numConta);


            Saque saque = new Saque(conta, 100);

            saque.Executa();

            Extrato extrato = new Extrato(conta, DateTime.Now.AddDays(-1), DateTime.Now.AddDays(1));

            extrato.Executa();

            Assert.AreEqual(saque.Data, extrato.Operacoes[0].Data);
        }
Exemple #32
0
        public int CriarConta(Cliente[] clientes)
        {
            double renda = 0;

            foreach (var cliente in clientes)
            {
                if (cliente is PessoaFisica)
                {
                    renda += (cliente as PessoaFisica).Renda;
                }
                else if (cliente is PessoaJuridica)
                {
                    renda += (cliente as PessoaJuridica).Receita;
                }
            }

            IConta conta = CriarContaPorPerfil(clientes, renda);

            AlteraStatusConta(conta, StatusConta.Aberta);

            RepositorioContas.Instance.Adiciona(conta);

            return(ultimoNumeroConta);
        }
Exemple #33
0
 public void GeraExtrato(IConta c)
 {
     Console.WriteLine("\n EXTRATO ");
     Console.WriteLine(" SALDO : R$" + c.Saldo.ToString("F2"));
 }