Desenvolver um sistema para restaurante que permita gerenciar pedidos de maneira eficiente.
- Cadastro de Pedidos
- O usuário pode selecionar produtos que compõem o cardápio.
- Definir a quantidade, mesa e nome do solicitante.
- Exibição para Setores
- A "Cozinha" deve visualizar apenas os pedidos de pratos.
- A "Copa" deve visualizar apenas os pedidos de bebidas.
- Atualização de Status
- Cada setor pode alterar o status do pedido (Em preparo, Pronto, Entregue).
- Autenticação de Usuários
- O usuário e senha para acessar o sistema.
- Histórico de Pedidos
- Listagem dos pedidos finalizados.
- Framework: Bootstrap para estilização e responsividade (ou outra de sua escolha).
- Tecnologia: C#.
- Banco de Dados: Livre escolha, desde que documentado como executar.
- Uso do AJAX.
- POST
/restaurante/login
- Endpoint de login para gerar token JWT. - GET
/restaurante/produto
- Listagem pública de produtos para visualização do cardápio.
- Todos os endpoints da API
- GET /restaurante/pedidos
- GET /restaurante/pedido/{id}
- POST /restaurante/pedido
- PUT /restaurante/pedido/{id}
- PUT /restaurante/pedido/{id}/status
- GET /restaurante/produto
- GET /restaurante/produto/{id}
- GET /restaurante/pedidos/cozinha
- PUT /restaurante/pedido/{id}/status
- GET /restaurante/pedidos/copa
- PUT /restaurante/pedido/{id}/status
- POST
/restaurante/login
- Autenticação e geração de token JWT.
- GET
/restaurante/pedidos
- Listar todos os pedidos. - GET
/restaurante/pedido/{id}
- Obter detalhes de um pedido. - POST
/restaurante/pedido
- Criar um novo pedido. - PUT
/restaurante/pedido/{id}
- Atualizar um pedido. - DELETE
/restaurante/pedido/{id}
- Excluir um pedido. - PUT
/restaurante/pedido/{id}/status
- Atualizar status do pedido. - GET
/restaurante/pedidos/copa
- Listar pedidos da Copa. - GET
/restaurante/pedidos/cozinha
- Listar pedidos da Cozinha. - GET
/restaurante/pedidos/historico
- Listar pedidos finalizados.
- GET
/restaurante/itemPedido/{pedidoId}
- Listar itens de um pedido. - POST
/restaurante/itemPedido
- Adicionar item ao pedido. - PUT
/restaurante/itemPedido/{idItemPedido}
- Atualizar um item do pedido. - DELETE
/restaurante/itemPedido/{idItemPedido}
- Remover um item do pedido.
- GET
/restaurante/produto
- Listar produtos. - GET
/restaurante/produto/{id}
- Obter detalhes de um produto. - POST
/restaurante/produto
- Criar um novo produto. - PUT
/restaurante/produto/{id}
- Atualizar um produto. - DELETE
/restaurante/produto/{id}
- Remover um produto.
Usuários cadastrados para testes:
{
"Email": "[email protected]",
"Senha": "senha123",
"Nome": "Admin User 1"
}
{
"Email": "[email protected]",
"Senha": "senha456",
"Nome": "Garçom User 2"
}
{
"Email": "[email protected]",
"Senha": "senha789",
"Nome": "Cozinha User 3"
}
{
"Email": "[email protected]",
"Senha": "senha101",
"Nome": "Copa User 4"
}
"AllowedHosts": "*",
"ConnectionStrings": {
"MySqlConnection": "Server=sql10.freesqldatabase.com;Database=sql10764721;User Id=sql10764721;Password=hqnHlsPqeQ;Port=3306;"
}
(O banco acima expirou, então um novo deve ser configurado.)
CREATE TABLE Produto (
IdProduto INT AUTO_INCREMENT PRIMARY KEY,
NomeProduto VARCHAR(100) NOT NULL,
Preco DECIMAL(15, 2) NOT NULL,
TipoProduto ENUM('Comida', 'Bebida') NOT NULL
);
CREATE TABLE Pedido (
IdPedido INT PRIMARY KEY AUTO_INCREMENT,
NomeCliente VARCHAR(255) NOT NULL,
NumeroMesa INT NOT NULL,
Status ENUM('Novo', 'EmAndamento', 'Pronto', 'Entregue') NOT NULL DEFAULT 'Novo',
CriadoEm TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE ItemPedido (
IdItemPedido INT PRIMARY KEY AUTO_INCREMENT,
IdPedido INT NOT NULL,
IdProduto INT NOT NULL,
Quantidade INT NOT NULL,
FOREIGN KEY (IdPedido) REFERENCES Pedido(IdPedido) ON DELETE CASCADE,
FOREIGN KEY (IdProduto) REFERENCES Produto(IdProduto)
);
CREATE TABLE Perfil (
IdPerfil INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Descricao VARCHAR(20) NOT NULL
);
INSERT INTO Perfil (Descricao) VALUES ('Admim');
INSERT INTO Perfil (Descricao) VALUES ('Garcom');
INSERT INTO Perfil (Descricao) VALUES ('Cozinha');
INSERT INTO Perfil (Descricao) VALUES ('Copa');
CREATE TABLE Usuario (
Email VARCHAR(255) NOT NULL PRIMARY KEY,
Senha VARCHAR(128) NOT NULL,
Nome VARCHAR(255) NOT NULL,
IdPerfil INT NOT NULL,
FOREIGN KEY (IdPerfil) REFERENCES Perfil(IdPerfil)
);
{
"idPedido": 1,
"nomeCliente": "João Silva",
"numeroMesa": 5,
"itens": [
{ "idProduto": 1, "quantidade": 2 }
],
"status": 1,
"criadoEm": "2024-03-01T12:00:00Z"
}
{
"IdProduto": 1,
"NomeProduto": "Hambúrguer",
"Preco": 25.90,
"TipoProduto": 1
}
Código | Status |
---|---|
1 | Novo |
2 | Em Preparo |
3 | Pronto |
4 | Entregue |
Código | Tipo |
---|---|
1 | Prato |
2 | Bebida |
- O sistema utiliza JWT para autenticação.
- O token deve ser enviado no cabeçalho
Authorization: Bearer {seu_token}
para acessar endpoints protegidos.
- Configurar o Banco de Dados:
- Criar a base de dados conforme as instruções do projeto.
- Rodar o Backend:
- Abrir a solução no Visual Studio.
- Configurar a
appsettings.json
conforme o banco de dados. - Rodar o projeto (
dotnet run
ou via IDE).
- Rodar o Frontend:
- Abrir o projeto frontend.
- Iniciar um servidor local (
Live Server
ou equivalente) do login.html