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); }
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); }
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 } }
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); }
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
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); }
public ContaController( IConta contaRepositorio, IUsuario usuarioRepositorio ) { _contaRepositorio = contaRepositorio; _usuarioRepositorio = usuarioRepositorio; }
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()); }
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(); }
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); }
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(); }
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); }
public void FecharConta(int numeroConta) { try { IConta conta = RepositorioContas.Instance.RetornaConta(numeroConta); VerificarDisponibilidadeConta(conta); AlteraStatusConta(conta, StatusConta.Fechada); } catch { throw; } }
public AluguelController( IUsuario usuarioRepositorio, IConta contaRepositorio, IAluguel aluguelRepositorio, IEmail email ) { _usuarioRepositorio = usuarioRepositorio; _contaRepositorio = contaRepositorio; _aluguelRepositorio = aluguelRepositorio; _email = email; }
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); }
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(); }
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(); }
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"); } }
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."); } }
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); }); }
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); }
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); }
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); }
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); }
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); }
public void GeraExtrato(IConta c) { Console.WriteLine("\n EXTRATO "); Console.WriteLine(" SALDO : R$" + c.Saldo.ToString("F2")); }