Skip to content

DESAFIO: Criar uma API RESTful capaz de gerenciar os restaurantes e os produtos do seu cardápio.

License

Notifications You must be signed in to change notification settings

brtiago/lista-rango

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lista Rango

@tgribeiro Desafio

💻 Sobre o projeto

Projeto final para conclusão do bootcamp Desenvolvimento Java com IA do site DIO.

🎯 Objetivos

Criar uma API RESTful capaz de gerenciar restaurantes e os pratos do seu cardápio.

⚙️ Funcionalidades desejadas:

Restaurantes

  • Listar restaurantes
  • Cadastrar restaurantes
  • Listar dados de um restaurante
  • Alterar dados um restaurante
  • Excluir um restaurante
Produtos:
  • Listar todos os pratos de um restautante
  • Criar um produto de um restaurante
  • Alterar um produto de um restaurante
  • Excluir um produto de um restaurante

O cadastro do restaurante precisa ter os seguintes campos:

  • Foto do restaurante
  • Nome do restaurante
  • Endereço do restaurante
  • Horários de funcionamento do restaurante (ex.: De Segunda à Sexta das 09h as 18h e de Sabado à Domingo das 11h as 20h).

O cadastro de pratos do restaurante precisa ter os seguintes campos:

  • Foto do produto
  • Nome do produto
  • Preço do produto
  • Categoria do produto (ex.: Doce, Salgados, Sucos...)

Quando o Produto for colocado em promoção, precisa ter os seguintes campos:

  • Descrição para a promoção do produto (ex.: Chopp pela metade do preço)
  • Preço promocional
  • Dias da semana e o horário em que o produto deve estar em promoção

Formato de horários

  • É necessário tratar os campos que indicam horários de funcionamento e horário para as promoções dos pratos.
  • Os campos devem possuir o formato HH:mm.
  • Os horários devem possuir intervalo mínimo de 15 minutos.

(back to top)

Um Restaurante deve ter os seguintes campos:

{
  "id": "0001",
  "fotoUrl": "restaurante.jpg",
  "nome": "Restaurante Marazul",
  "endereco": "Av. João Candido, 31, Cidade Nova",
  "funcionamento": [
    {
      "diainicial": "segunda",
      "diafinal": "sexta",
      "horainicial": "09:00",
      "horafinal": "20:00"
    }
  ],
  "pratos": [
    {
      "id": "0012",
      "fotoUrl": "canjica.jpeg",
      "nome": "Canjica",
      "quantidade": 20,
      "preco": 20.00,
      "categoria": "SOBREMESAS",
      "promocao": {
        "ativa": true,
        "id": "005",
        "descricao": "Canjica pela metade do preço",
        "preco": 10.00,
        "periodo": [
          {
            "diainicial": "segunda",
            "diafinal": "sexta",
            "horainicial": "09:00",
            "horafinal": "20:00"
          }
        ]
      }
    }
  ]
}

(back to top)

Especificações

A URL da requisição deve ter o seguinte formato:

    http://localhost:8080/api/v1/restaurants/{id}/
    http://localhost:8080/api/v1/restaurants/{id}/products/{productid}

A resposta deve ter o seguinte formato: Ainda sendo implementado

(back to top)

Diagrama UML da API

classDiagram
    class Restaurante {
        -Long id
        -BufferedImage fotoUrl
        -String nome
        -String endereco
    }
    class Funcionamento {
        -LocalDateTime diainicial
        -LocalDateTime diafinal
        -LocalDateTime horainicial
        -LocalDateTime horafinal
    }
    class Produto {
        -Long id
        -BufferedImage fotoUrl
        -String nome
        -int quantidade
        -BigDecimal preco
        -CategoriaProduto categoria
    }
    class Promocao {
        -boolean ativa
        -Long id
        -String descricao
        -float preco
    }
    class Periodo {
        -String diainicial
        -String diafinal
        -String horainicial
        -String horafinal
    }

    Restaurante "1" --> "0..*" Funcionamento : tem
    Restaurante "1" --> "0..*" Produto : tem
    Produto "1" --> "0..1" Promocao : pode ter
    Promocao "1" --> "0..*" Periodo : tem
Loading

(back to top)

🛠 Tecnologias utilizadas

  • Spring Boot 3
  • Java 17
  • Lombok
  • PostgreSQL/ Flyway
  • JPA/Hibernate
  • Maven
  • Insomnia
  • Docker

(back to top)

About

DESAFIO: Criar uma API RESTful capaz de gerenciar os restaurantes e os produtos do seu cardápio.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages