Minhas finanças

Requisitos

  • Java 8+

  • Utilizar Maven ou Gradle

  • Seguir os padrões REST

  • Banco de dados H2

  • Descrever as instruções para rodar o projeto no README.md

  • Utilizar Git

  • Utilizar Springboot versão 2.1.0

Avaliação

  • Clean Code

  • Implementação da especificação

  • README.md bem escrito

  • Commits bem escritos

Importante, nessa ordem:

  • Criar testes automatizados (teste unitário e teste de integração)

  • Fazer uso de bibliotecas auxiliares

  • CircleCI ou TravisCI

  • Documentar a API com Swagger

Especificação

Criar uma API Rest que ira gerenciar as finanças dos seus usuários. A API deve conter endpoints para:

  • Criar um usuário

  • Visualizar todos os usuários

  • Ver detalhes de um usuário

  • Criar um lançamento financeiro

  • Buscar todos os lançamentos de um determinado usuário

  • Buscar um determinado lançamento pelo usuário e pelo id

  • Criar entidades para um usuário

  • Visualizar entidades de um usuário

  • Criar contas para um usuário

  • Visualizar todas as contas de um usuário

  • Visualizar uma determinada conta de um usuário

  • Visualizar todos os lançamento de uma determinada conta de um determinado usuário

  • Baixar uma determinada conta de um determinado usuário

  • Estornar uma determina conta de um determinado usuário

Endpoints

Usuários

Criar usuário

POST http://localhost:8080/financas/usuario

Request Body

Name
Type
Description

object

{ "nome": "Exemplo", "email": "exemplo@exemplo.com", "status": "ATIVO" }

{
    "id": "1",
    "nome": "Usuário exemplo",
    "email": "exemplo@exemplo.com",
    "status": "ATIVO",
    "created_at": "2018-11-01 11:59"
}

Buscar todos os usuários

GET http://localhost:8080/financas/usuario

[
    {
        "id": "1",
        "nome": "Usuário exemplo",
        "email": "exemplo@exemplo.com",
        "status": "ATIVO",
        "created_at": "2018-11-01 11:59"
    },
    {
        "id": "2",
        "nome": "Usuário 02",
        "email": "usu_92@exemplo.com",
        "status": "ATIVO",
        "created_at": "2018-11-01 11:59"
    }
]

Buscar usuário por id

GET http://localhost:8080/financas/usuario/:id

{
    "id": "1",
    "nome": "Usuário exemplo",
    "email": "exemplo@exemplo.com",
    saldo: {
        total: 15365.00
        receber: 3200.00
        pagar: 4000.00
    },
    "status": "ATIVO"
}

Lançamento Financeiro

Um lançamento financeiro pode ser:

  • A Pagar

  • A Receber

Criar um lançamento financeiro

POST http://localhost:8080/financas/usuario/:id/entidade/:id/lancamento

Request Body

Name
Type
Description

object

{ "descricao": "Lanchonete", "observacao": "Esqueci o cartão", "valor": 16.50, "tipo": "RECEBER" }

{
   "usuario_id": 1,
   "id": 1,
   "descricao": "Lanchonete",
   "observacao": "Esqueci o cartão",
   "valor": 16.50,
   "tipo": "RECEBER",
   "baixa": null,
   "status": "ABERTO",
   "created_at": '2018-11-01 11:59'
}

Buscar todos os lançamentos de um usuário

GET http://localhost:8080/financas/usuario/:id/lancamento

Buscar um lançamento por id

GET http://localhost:8080/financas/usuario/:id/lancamento/:id

Entidade

Uma entidade pode ser do tipo:

  • Cliente

  • Fornecedor

Criar uma entidade

POST http://localhost:8080/financas/usuario/:id/entidade

Path Parameters

Name
Type
Description

object

{ "nome": "Advocacia S.A", "tipo": "FORNECEDOR" }

{
    "id": 1,
    "nome": "Advocacia S.A",
    "usuario_id": 1,
    "status": "ATIVO",
    "tipo": "FORNECEDOR",
    "created_at": "2018-11-07 12:05"
}

Buscar todas as entidades de um usuário

GET http://localhost:8080/financas/usuario/:id/entidade

Buscar entidade por id

GET http://localhost:8080/financas/usuario/:id/entidade:id

Conta

Criar uma conta

POST http://localhost:8080/financas/usuario/:id/conta

Request Body

Name
Type
Description

string

{ "nome": "Banco do Brasil" }

{
    "id": 1,
    "saldo": 0.00,
    "status": "ATIVO",
    "created_at": "2018-11-01 11:50"
}

Buscar todos os lançamento de uma conta

GET http://localhost::8080/financas/usuario/:id/conta/:id/lancamentos

Path Parameters

Name
Type
Description

string

Buscar todas as contas de um usuário

GET http://localhost:8080/financas/usuario/:id/conta

Buscar conta por id

GET http://localhost:8080/financas/usuario/:id/conta/:id

{
    "status": 404,
    "message": "Conta não encontrada"
}

Baixar um lançamento

POST http://localhost:8080/financas/usuario/:id/conta/:idconta/:idlancamento?do=baixar

Path Parameters

Name
Type
Description

do

string

Baixar

{
    "status": 200,
    "message: ("Lançamento {} com sucesso", pago, baixado)
}

Estornar um lançamento

POST http://localhost:8080/financas/usuario/:id/conta/:idconta/:idlancamento?do=estornar

Path Parameters

Name
Type
Description

string

{
    "status": 200,
    "message: ("Lançamento {} com sucesso", pago, baixado)
}

Last updated

Was this helpful?