Skip to content

carmenMarchesi/dElasBank

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dElasBank

Projeto final do bootcamp #ElasTech, promovido pela PagSeguro/PagBank.


Cartão dElasBank

💻 1. Proposta do Projeto

Criar um sistema para um banco fictício que seja capaz de gerenciar clientes e as transações realizadas.
O sistema deve permitir cadastro de novos clientes, incluindo dados pessoais e dados para contato.
O cliente deve estar atrelado a uma conta bancária com um valor inicial de saldo. Deve ser possível fazer transferência de um cliente para outro e esse histórico de transações entre as contas deve ser registrado.

💻 2. Regras de Negócio

Regras de negócio definidas pelos membros do grupo.

  • Cliente - O cliente terá as seguintes funcionalidades:

    • Cadastro;
    • Edição;
      • Somente o nome, telefone, email e endereço poderão ser alterados.
    • Listar os Clientes;
      • Buscar todas os cliente;
      • Buscar cliente por Id.
    • Deletar Cliente.

  • Conta - A conta deverá ter as seguintes funcionalidades:

    • Cadastro;
    • Edição;
      • Somente os campos referentes ao número da conta e agência poderão ser editados.
    • Lista das Contas;
      • Buscar todas as contas;
      • Buscar conta por Id.

  • Transferência - A transferência deverá ter as seguintes funcionalidades:
    • Realizar transferência;
      • Caso o saldo do cliente seja menor do que o valor a transferir, a transferência não será realizada.
    • Listar as transferências realizadas.

📋 3. Modelagem ER


diagrama


📌 4. Tarefas:

  • Criar contas no Git
  • Criar projeto no Spring Initializr
  • Construir o modelo de objetos
  • Codificar as classes de modelo
  • Subir a estrutura inicial do projeto no GitHub
  • Criar a camada de Controller para Cliente
  • Criar a camada de Controller para Conta
  • Criar a camada de Controller para Tranferência
  • Implementar os métodos do Controller de Cliente
  • Implementar os métodos do Controller de Conta
  • Implementar os métodos do Controller de Transferência
  • Colocar as annotations adequadas nas classes Controller
  • Criar a camada de Serviço para Cliente
  • Criar a camada de Serviço para Conta
  • Criar a camada de Serviço para Transferência
  • Criar a interface Repository para Cliente
  • Criar a interface Repository para Conta
  • Criar a interface Repository para Tranferência
  • Incluir o Spring Data JPA no projeto
  • Definir a ferramenta de Teste (Postman, Insomnia, Curl)
  • Editar o método de editar Conta
  • Executar o sistema com o banco de dados H2
  • Executar o sistema com o banco de dados MySQL
  • Fazer o método para editar alguns dados do Cliente
  • Construir o README
  • Executar os últimos testes

⚙ 5. Como executar o projeto:

5.1 Clonando o projeto

Primeiro, clone o repositório para o seu ambiente:

> git clone https://github.com/carmenMarchesi/dElasBank.git

5.2 Executando no IntelliJ

Ao abrir o projeto no IntelliJ, ir em src > main > resources > "application.properties" e colocar a sua senha de acesso ao seu MySQL.


Senha Banco


Ir em src > main > java > delasbank > "Delasbank.application" e executar o projeto.
Após o IntelliJ confirmar que a aplicação foi iniciada, realizar as inserções e os testes no Postman.

Aplicação Iniciada


🔎 5.3 Testando a aplicação no Postman

Criar Cliente:

POST - localhost:8080/cliente/novo

Criar cliente

{
        "nome": "Nome Cliente",
        "telefone": "912345-1234",
        "dtNascimento": "1992-03-25",
        "sexo": "f",
        "cpf": "123.123.123-45",
        "email": "cliente@gmail.com",
        "endereco": {
            "cep": "21000-800",
            "rua": "Rua A",
            "numero": 80,
            "complemento": "Próximo ao mercado Mundial",
            "bairro": "Bairro A",
            "cidade": "Rio de Janeiro",
            "estado": "RJ"
        }
    }

Listar Clientes:

GET - localhost:8080/cliente/todos

Listar clientes


Listar Cliente por Id:

GET - localhost:8080/cliente/id_cliente

Listar cliente por Id


Editar Cliente:

PUT - localhost:8080/cliente/alterar

Colocar os dados que deseja alterar, lembrando que cliente só poderá alterar o nome, telefone, email e os dados de endereço.

{
    "idCliente": 2,
    "nome": "Carmen Marchesi",
    "cpf": "123.000.123-45",
    "email": "carmen@gmail.com",
    "endereco": {
      "cep": "21000-800",
      "rua": "Rua A",
      "numero": 80,
      "complemento": "Próximo ao mercado Mundial",
      "bairro": "Bairro A",
      "cidade": "Rio de Janeiro",
      "estado": "RJ"
    }
}

Deletar Cliente:

DELETE - localhost:8080/cliente/deletar/id-a-deletar

Deletar Cliente


Criar Conta:

POST - localhost:8080/conta/cadastrar

Criar conta

{
    "tipo": "corrente",
    "agencia": "1894",
    "numConta": "54877-6",
    "saldo": 600.0,
    "cod_banco": 341,
    "idCliente": 1
}

Listar Contas:

GET - localhost:8080/conta/todos

Listar contas


Listar Contas por Id:

GET - localhost:8080/conta/dados/id_conta

Listar conta por Id


Editar Conta:

PUT - localhost:8080/conta/alterar

Colocar os dados que deseja alterar, lembrando que na conta só poderá ser alterado o número da conta e a agência.

{
  "idConta": 1,
  "agencia": "1774",
   "numConta": "54877-6"
}

Deletar Conta:

DELETE - localhost:8080/cliente/deletar/id-a-deletar

Deletar Conta


Realizar Transferência:

POST - localhost:8080/transferencia/transferir

{ 
    "valor": 500.0,  
    "dataTransf":"2022-11-27",    
    "idContaOrg":1,
    "idContaDest":2
}

OBSERVAÇÃO:
Caso o saldo do cliente seja menor do que o valor a ser transferido, será apresentado um aviso informando que a transferência não foi realizada.

Transferência não realizada


Listar Transferências:

GET - localhost:8080/transferencia/listar

Lista Transferências


Listar Transferência por Id:

GET - localhost:8080/transferencia/listar/id_transacao

Lista Transferências


💾 5.4 Consultas no Banco

Mostrar os dados dos Clientes:

> SELECT c.id_cliente, c.nome as Nome, c.cpf as CPF, c.dt_nascimento as "Data de Nascimento", c.sexo as Sexo, c.email as "E-mail", 
c.telefone as Contato, c.rua as Rua, c.numero as "", c.complemento as Complemento, c.bairro as Bairro, c.cidade as Cidade, c.estado as Estado,
c.cep as CEP
FROM cliente c;

Mostrar os dados do cliente e a conta associada a ele:

> SELECT c.id_cliente, ct.id_conta, c.nome as Nome, c.cpf as CPF, c.dt_nascimento as "Data de Nascimento", ct.num_conta as Conta, 
ct.agencia as "Agência", ct.cod_banco as Banco, ct.tipo as TipoConta,  ct.saldo as SaldoConta
FROM cliente c
INNER JOIN conta ct ON (c.id_cliente = ct.cliente_id_cliente)
ORDER BY c.id_cliente;

Mostrar as transferências realizadas:

> SELECT t.id_transacao, co.nome as Cliente, cto.id_conta as idContaOrigem, cto.num_conta as ContaOrigem,  t.valor as valorTransferir,  ctd.id_conta as 
idContaDestino, cd.nome as ClienteDestino, ctd.num_conta as ContaDestino, t.data_transf as dataTransferencia
FROM transferencia t
INNER JOIN conta cto ON (cto.cliente_id_cliente = t.id_conta_org)
INNER JOIN conta ctd ON (ctd.cliente_id_cliente = t.id_conta_dest)
INNER JOIN cliente co ON (co.id_cliente = cto.id_cliente)
INNER JOIN cliente cd ON (cd.id_cliente = ctd.id_cliente)
ORDER BY Cliente;

📋 6. Melhorias

Pontos observados que poderiam ter sido feitos de forma diferente ou funcionalidades que gostaríamos de ter adicinado:

  • Funcionalidade de saque;
  • Funcionalidade de depósito;
  • Criar métodos para inativar o cliente, não excluir.
  • Ter tido tempo de integrar a aplicação com o frontend.
  • Excluir o histórico de transações ao excluir uma conta.

🤝 7. Integrantes do Grupo

Carmen Marchesi
Azenaide Fernandes
Nicolle Gianinni
Estefania Carrer
Marly Valentim

About

Projeto Integrador do PagSeguro

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages