Skip to content

Rodrigo-Sarmento/API-Pizzaria

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 

Repository files navigation

pizzaria


Tópicos

Descrição do projeto

O projeto consiste em uma API REST de delivery para pizarias.

Funcionalidades do projeto

✔️ Funcionalidade 1: Realizar cadastro de estabelecimentos e consumidores e fazer autenticação.

✔️ Funcionalidade 2: calcular o valor total do pedido com ou sem promoção.

✔️ Funcionalidade 3: Consumidores podem realizar pedidos.

✔️ Funcionalidade 4: Consumidores podem escolher o estabelicemento.

✔️ Funcionalidade 5: Consumidores podem acompanhar o status do seu pedido.

✔️ Funcionalidade 6: Consumidores podem qualificar o estabelecimento.

✔️ Funcionalidade 7: Consumidores podem escolher a melhor forma de pagamento.

✔️ Funcionalidade 8: Estabelecimento pode cadastar funcionário.

✔️ Funcionalidade 9: Estabelecimento pode cadastrar produtos.

✔️ Funcionalidade 10: Estabelecimento pode alterar o status do pedido.

✔️ Funcionalidade 11: Estabelecimento acompanhar as avaliações dadas pelos consumidores do seu estabelecimento.

✔️ Funcionalidade 12: Estabelecimento pode acompanhar um resumo de vendas com informações como: quantidade de pedidos, pedidos cancelados, média de pedidos, produtos mais vendidos, tempo médio de entrega.

✔️ Funcionalidade 13: Armazenar dados, como produtos, consumidores, estabelecimento, funcionários, pedidos, promoção no banco de dados MySQL.

✔️ Funcionalidade 14: Listar pedidos, consumidor, funcionários, produtos, categorias, estabelecimento.

✔️ Funcionalidade 15: Alterar pedidos, consumidor, funcionários, produtos, categorias, estabelecimento.

✔️ Funcionalidade 16: Excluir pedidos, consumidor, funcionários, produtos, categorias, estabelecimento.

Endpoints

  • Estabelecimento
  • Funcionário
  • Categoria
  • Produto
  • Consumidor
  • Pedido

Base URL

http://localhost:8080

🏪 Estabelecimento

Cadastrar Estabelecimento

POST

POST /estabelecimento/cadastrar

Corpo da requisição

{
    "nome": "pizzaria1",
    "cpf": "12345678999",
    "email": "asdasda",
    "telefone": "12345",
    "endereco": "asdasdasd",
    "cnpj": "12345678999999",
    "razao_social": "asdasdadaaaaaa",
    "agencia": "1234",
    "conta_corrente": "1515151",
    "senha":"asdasdasd"
}

Alterar Estabelecimento

PUT

PUT /estabelecimento/{id}/alterar

Corpo da requisição

{
    "nome": "pizzaria1",
    "cpf": "12345678999",
    "email": "asdasda",
    "telefone": "12345",
    "endereco": "asdasdasd",
    "cnpj": "12345678999999",
    "razao_social": "asdasdadaaaaaa",
    "agencia": "1234",
    "conta_corrente": "1515151",
    "senha":"asdasdasd"
}

Listar Estabelecimentos

GET

GET /estabelecimento/lista

Resposta

[
    {
        "id": 1,
        "nome": "Pizzaria 1",
        "cpf": "12345678999",
        "email": "contato@email.com",
        "telefone": "12345",
        "endereco": "Rua A",
        "cnpj": "12345678999999",
        "razao_social": "Pizzaria LTDA",
        "agencia": "1234",
        "conta_corrente": "1515151"
    }
]

Listar Apenas Nome dos Estabelecimentos

GET

GET /estabelecimento/listanomes

Resposta

[
    {
        "id":1,
        "nome":"Pizzaria 1"
    }
]

Regras de Validação

Campo Regra
Nome Obrigatório e máximo de 80 caracteres
CPF Obrigatório, único, 11 dígitos numéricos
Telefone Obrigatório, máximo de 20 caracteres
Endereço Obrigatório, máximo de 150 caracteres
CNPJ Obrigatório, único, 14 dígitos numéricos
Razão Social Obrigatório, máximo de 80 caracteres
Agência Obrigatório, exatamente 4 dígitos
Conta Corrente Obrigatório, máximo de 20 caracteres

👨‍🍳 Funcionário

Cadastrar Funcionário

POST

POST /funcionario/cadastrar

Corpo da requisição

{
    "nome": "Rodrigo",
    "endereco": "Rua A",
    "cpf": "12348778901",
    "telefone": "123456789",
    "funcao": "entregador",
    "email": "funcionario@email.com",
    "senha": "senha123",
    "estabelecimento": {
        "id": 1
    }
}

Alterar Funcionário

PUT /funcionario/{id}/alterar

Corpo da requisição

{
    "nome": "Rodrigo",
    "endereco": "Rua A",
    "cpf": "12348778901",
    "telefone": "123456789",
    "funcao": "entregador",
    "email": "funcionario@email.com",
    "senha": "senha123",
}

Listar Funcionários

GET /funcionario/lista

Listar Funcionários por Estabelecimento

GET /funcionario/lista/{idEstabelecimento}

Excluir Funcionário

DELETE /funcionario/{id}/excluir

Regras

Campo Regra
Nome Obrigatório e máximo de 80 caracteres
Endereço Obrigatório e máximo de 150 caracteres
CPF Obrigatório, único, 11 dígitos
Telefone Obrigatório, mínimo de 5 e máximo de 20 dígitos
Função Apenas ENTREGADOR ou ATENDENTE

🍕 Categoria

Cadastrar categoria

POST   /categoria/cadastrar
{
    "nome":"pizza",
    "descricao": "todos os tipos de pizzas",
    "estabelecimento": {
        "id": 1
    }
}

Alterar categoria

PUT    /categoria/{id}/alterar
{
    "nome":"pizza alterada",
    "descricao": "todos os tipos de pizzas",
    }

listar todas categorias

GET    /categoria/lista

listar todas as categorias de um estabelecimento

GET    /categoria/lista/{idEstabelecimento}

deletar categoria

DELETE /categoria/{id}/excluir

Regras

Campo Regra
Nome Obrigatório e máximo de 80 caracteres
Descrição Máximo de 150 caracteres

🍔 Produto

Cadastrar produto

POST   /produto/cadastrar
{
    "nome": "pizza de arroz",
    "descricao": "asdasd",
    "tamanho": "grande",
    "valor_unitario": 10.00,
    "valor_promocao": 5.00,
    "personalizacao": "sim",
    "categoria":{
        "id":1
    }

Alterar produto

PUT    /produto/{id}/alterar

Listar todos produtos

GET    /produto/lista

Listar todos produtos de uma categoria

GET    /produto/lista/{idCategoria}

Excluir produto

DELETE /produto/{id}/excluir

Regras

Campo Regra
Nome Obrigatório
Descrição Obrigatória
Tamanho Pequeno, Médio ou Grande
Valor Unitário Maior que zero
Valor Promoção Opcional, maior que zero
Personalização Sim ou Não

👤 Consumidor

Cadastrar consumidor

POST /consumidor/cadastrar
{
    "nome": "rodrigo teste",
    "cpf": "12345679999",
    "cep":"12345678",
    "telefone": "123456789",
    "email": "consumidor@example.com",
    "senha": "senha123",
    "estado":"PE",
    "cidade":"Olinda",
    "rua": "rua 123",
    "bairro": "Jardim Atlântico",
    "complemento": "asdasdasda",
    "ponto_referencia": "asdasdad"
}

Alterar consumidor

PUT  /consumidor/{id}/alterar

Listar consumidorores

GET  /consumidor/lista

Regras

Campo Regra
Nome Obrigatório
CPF Único e obrigatório
CEP Obrigatório, 8 dígitos
Estado Apenas letras
Cidade Apenas letras
Rua Obrigatória
Bairro Obrigatório
Complemento Máximo 85 caracteres
Ponto de Referência Máximo 70 caracteres

🧾 Pedido

Fazer Pedido

POST /pedido/fazer

Corpo da requisição

{
  "forma_pagamento": "DINHEIRO",
  "observacao": "Sem cebola",
  "status": "CONFIRMADO",
  "itensPedido": [
    {
      "produto": {
        "id": 1
      },
      "quantidade": 2
    }
  ],
  "consumidor": {
    "id": 1
  },
  "estabelecimento": {
    "id": 1
  }
}

Listar Pedidos do Consumidor

GET /pedido/lista-consumidor/{idConsumidor}

Listar Pedidos do Estabelecimento

GET /pedido/lista-estabelecimento/{idEstabelecimento}

Excluir Pedido

DELETE /pedido/{id}/excluir

Regras

Campo Regra
Forma de Pagamento CRÉDITO, DÉBITO, PIX ou DINHEIRO
Observação Máximo de 150 caracteres
Status CONFIRMADO, FAZENDO, PRONTO, ENTREGANDO ou ENTREGUE
Valor Total Calculado automaticamente pela API
Valor Promoção Utilizado quando existir; caso contrário, utiliza o valor unitário do produto

Status HTTP

Código Significado
200 OK
201 Criado
400 Requisição inválida
404 Recurso não encontrado
500 Erro interno do servidor

Técnicas e tecnologias utilizadas

  • Java 17
  • MySQL
  • Spring Boot
  • Spring Data JPA
  • Hibernate
  • Maven
  • Lombok
  • ExceptionHandler
  • Padrão MVC

Acesso ao projeto

Você pode acessar o código fonte do projeto ou baixá-lo.

Abrir e rodar o projeto

Após baixar o projeto, você pode abrir com uma IDE compatível com o java. É necessário ter o JDK na versão 17.

Desenvolvedor


Rodrigo Gomes Sarmento

About

API REST para um sistema de delivery de pizzarias, desenvolvida com Java, Spring Boot, Spring Data JPA e MySQL.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors