# Black burger Scope
- \* : Dados obrigatórios.
## Login
### POST - SingUp
##### req
- name*
- email*
- phone*
- password*
##### res
- sucess/error
##### Objetivos gerais
- Validar username e senha
- Verificar se o username/email ja existe no DB
- Criptografar a senha
- Cadastrar o usuario no banco de dados
- Retornar sucesso ou erro
-
---
### POST - SingIn
##### req
- email*
- password*
##### res
- token (id, name, favorites)
- sucess/error
##### Objetivos gerais
- Validar username e senha
- Buscar usuario no banco de dados
- Verificar se a senha informada esta correta
- Retornar os dados do usuario e o token
---
## Home
### GET - Categories
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se o usuario existe no banco de dados
- Buscar a lista de categorias no DB
- Retornar os dados das Categorias
---
### GET - Products
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se o usuario existe no banco de dados
- Buscar a lista de categorias no DB
- Retornar os dados das Categorias
---
## Orders
### POST - User order
##### req
- user_id
- adress*
- cpf*
- payment_type*
- price
- tax
- discount
- total_price
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se o usuario existe no banco de dados
- Verificar os dados obrigatorios para cadastrar ordem
- Retornar sucesso ou erro
---
### POST - Order Items
##### req
- order_id*
- product_id*
- quantity*
- create_at
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se o usuario existe no banco de dados
- Verificar a ultima ordem existente ligada ao id do usuario
- Adicionar o item
- Retornar sucesso/erro
---
### GET - List orders
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se o usuario existe no banco de dados
- Buscar todas as ordens do id do usuario no DB
- Retornar sucesso/erro
---
### GET - List order items
##### req
- user_id
- order_id
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se o usuario existe no banco de dados
- Identificar os itens existentes na order com o ID informado que pertencem ao id do usuario informado
- Retornar sucesso/erro
---
### GET - User orders
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se o usuario existe no banco de dados
- Buscar a ordem deste username no DB
- Retornar os dados das Categorias
---
### GET - Order Items
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se o usuario existe no banco de dados
- Verificar o ID da ultima ordem aberta
- Adicionar item e quantidade informado no banco de dados
- Retornar os dados das Categorias
---
## Admin
### POST - SingUp
##### req
- name*
- email*
- password*
##### res
- token (id, name)
- sucess/error
##### Objetivos gerais
- Validar username, email e senha
- Verificar se o email ja existe no DB
- Criptografar a senha
- Cadastrar o usuario no banco de dados
- Retornar sucesso ou erro
---
### POST - SingIn
##### req
- name*
- password*
##### res
- token (id, name)
- sucess/error
##### Objetivos gerais
- Validar username e senha
- Verificar o usuario no DB
- Retornar o token
- Retorno da resposta com sucesso/erro
---
### PUT - Edit Product
? : opcional para o update.
##### req
- img?
- name?
- description?
- price?
- category
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se este usuario existe no DB de administradores
- Validar se existe ao menos um campo a ser alterado
- Fazer o update no DB
- Retornar os dados dos produtos
---
### DELETE - Delete Product
##### req
- id*
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se este usuario existe no DB de administradores
- Validar o id indicado no params
- Excluir os dados do DB
- Retornar sucesso/erro
---
### POST - Add Products
##### req
- name*
- price*
- img*
- description*
- category_id
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se este usuario existe no DB de administradores
- Validar os dados obrigatorios para cadastro
- Cadastrar item no DB
- Retornar sucesso/erro
---
### POST - Categories
##### req
- name*
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se este usuario existe no DB de administradores
- Validar os dados obrigatorios
- Registrar nova categoria no DB
- Retornar sucesso ou erro
---
### PUT - Edit Category
##### req
- name*
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se este usuario existe no DB de administradores
- Validar os dados obrigatorios
- Modificar o nome da categoria no DB
- Retornar sucesso ou erro
---
### DELETE - Delete Category
##### req
- name*
##### res
- sucess/error
##### Objetivos gerais
- Validar o token
- Verificar se este usuario existe no DB de administradores
- Validar os dados obrigatorios
- Modificar o nome da categoria no DB
- Retornar sucesso ou erro