📌 Logins de Contas (para testes)
📌 Documentação da API (Cadê Buffet?)
✨ Criar conta como Dono de Buffet
✨ Cadastrar seu Buffet
✨ Adicionar Tipos de Eventos que seu Buffet oferece
✨ Adicionar Preços por Evento
✨ Adicionar Fotos para Tipos de Eventos
✨ Avaliar o Pedido feito pelo Cliente
✨ Aprovar o Pedido feito pelo Cliente
✨ Desativar seu Buffet, ou seus Tipos de Eventos
✨ Criar Promoções para os Clientes
✨ Criar conta como Cliente
✨ Ver os Buffets Cadastrados
✨ Ver Tipos de Eventos Oferecidos para cada Buffet
✨ Buscar Buffet (Por Nome Fantasia, Cidade, Nome do Evento)
✨ Fazer um Pedido para um Buffet
✨ Confirmar o Pedido, dado o orçamento enviado pelo Dono de Buffet
✨ Avaliar o Buffet, após seu evento ter sido realizado
✨ Troca de mensagens entre os usuários
- Devise (Solução de autenticação para o rails)
- Rspec (Framework de teste para o rails)
- Capybara (Framework de teste de aceitação para aplicações web)
- libvips (lib de de processamento de imagens)
# Instala o pacote padrão do VIPS
sudo apt install libvips
# Faça o clone do projeto
git clone git@github.com:EmmanuellaAlbuquerque/CadeBuffet.git
# Entre na pasta do projeto
cd CadeBuffet
# Instale as dependências do projeto
bundle install
# Execute as migrations
rails db:migrate
# Executa as seeds para popular o banco de dados
rails db:seed
# Rode o servidor
rails server
# Acesse o servidor em
http://localhost:3000
cd CadeBuffet
rspec
E-mail: manu@contato.com
Senha: u!Qm926Kz8qupGTPh
E-mail: contato@fernandotulipas.com
Senha: fernandodastulipas123
Os buffets são empresas que oferecem uma variedade de serviços para eventos, desde alimentos e bebidas até serviços personalizados, como decoração, serviço de valet, entreterimento, entre outros.
Atributo | Tipo | Descrição |
---|---|---|
id | integer | Identificador único do buffet |
trading_name | string | Nome fantasia do buffet |
company_name | string | Razão social do buffet |
registration_number | string | CNPJ do buffet |
phone | string | Telefone do buffet para contato |
string | Email do buffet para contato | |
address | string | Endereço do buffet |
neighborhood | string | Bairro do buffet |
state | string | Estado do buffet (sigla, 2 caracteres) |
city | string | Cidade do buffet |
zipcode | string | CEP do buffet |
description | string | Descrição do buffet |
payment_methods | Array | Métodos de pagamento aceitos pelo buffet |
Este endpoint retorna todos os buffets cadastrados.
GET /api/v1/buffets
HTTP/1.1 200 OK
[
{
"id": 1,
"trading_name": "Tulipas Buffef | O melhor buffet da região Sudeste",
"phone": "(83) 9 9834-0345",
"email": "contato@buffettulipas.com.br",
"address": "Rua Valentim Magalhães, 293",
"neighborhood": "Alto da Mooca",
"state": "SP",
"city": "São Paulo",
"zipcode": "06397-410",
"description": "O Buffet Tulipas tem a satisfação de realizar com sucesso, casamentos, festas de debutantes, eventos corporativos, aniversários e bodas. Nossos belíssimos espaços, localizados no Alto da Mooca, são o cenário perfeito para o seu evento.",
"buffet_owner_id": 1,
"average_rating": "Ainda não foram cadastradas avaliações!"
},
{
"id": 2,
"trading_name": "Caio Cozinha & Eventos",
"phone": "(83) 9 9834-0345",
"email": "contato@caiocozinha.com",
"address": "Rua Comendador Bernardo Catarino, 89",
"neighborhood": "Centro",
"state": "BA",
"city": "Salvador",
"zipcode": "06397-600",
"description": "O Buffet Caio Cozinha & Eventos traz ao seu evento uma proposta gastronômica de primeira linha, preparada e executada com todo carinho, cuidado e qualidade para seu grande dia.",
"buffet_owner_id": 2,
"average_rating": "Ainda não foram cadastradas avaliações!"
},
{
"id": 3,
"trading_name": "Buffet Espaço Grenah | Gastronomia",
"phone": "(83) 9 9834-0345",
"email": "contato@grenahgastronomia.com",
"address": "Rua Azevedo Soares, 633",
"neighborhood": "Jardim Anália Franco",
"state": "SP",
"city": "São Paulo",
"zipcode": "06386-095",
"description": "Os profissionais do buffet confeccionam pratos artesanais da alta gastronomia e que agradam a todos os paladares. Para cada evento é preparado um menu personalizado, que reflita as preferências do anfitriões, mas que conquiste a todos os convidados.",
"buffet_owner_id": 3,
"average_rating": 3.5
},
{
"id": 4,
"trading_name": "Sabores Buffet",
"phone": "1234567890",
"email": "contato@saboresbuffet.com",
"address": "Rua dos Sabores, 123",
"neighborhood": "Bairro dos Sabores",
"state": "SP",
"city": "São Paulo",
"zipcode": "12345000",
"description": "O Sabores Buffet oferece uma ampla variedade de pratos, desde o tradicional até o contemporâneo, garantindo uma experiência gastronômica única para todos os tipos de eventos.",
"buffet_owner_id": 4,
"average_rating": "Ainda não foram cadastradas avaliações!"
},
{
"id": 5,
"trading_name": "Delícias Buffet",
"phone": "0987654321",
"email": "contato@deliciasbuffet.com",
"address": "Avenida das Delícias, 456",
"neighborhood": "Vila Delícias",
"state": "SP",
"city": "São Paulo",
"zipcode": "54321000",
"description": "O Delícias Buffet oferece uma experiência culinária única, com um menu variado e personalizado para atender a todos os tipos de eventos, desde casamentos a festas corporativas.",
"buffet_owner_id": 5,
"average_rating": "Ainda não foram cadastradas avaliações!"
},
{
"id": 6,
"trading_name": "Encantos Buffet",
"phone": "5678901234",
"email": "contato@encantosbuffet.com",
"address": "Rua dos Encantos, 789",
"neighborhood": "Centro dos Encantos",
"state": "SP",
"city": "São Paulo",
"zipcode": "67890000",
"description": "O Encantos Buffet oferece uma experiência gastronômica única, combinando ingredientes frescos e técnicas culinárias modernas para criar pratos que encantam os paladares mais exigentes.",
"buffet_owner_id": 6,
"average_rating": "Ainda não foram cadastradas avaliações!"
}
]
HTTP/1.1 500 Internal Server Error
GET /api/v1/buffets
200 OK: A solicitação foi bem-sucedida. 500 Internal Server Error: Ocorreu um erro no servidor ao processar a solicitação.
Este endpoint provê a busca de um buffet dado um filtro(valor) de busca.
GET /api/v1/buffets/search/?query=value
Exemplo:
GET /api/v1/buffets/search/?query=Tulipas
query
(string): O parâmetro de consulta usado para filtrar os buffets. O valor fornecido será usado para encontrar buffets que correspondam à consulta.
- Filtro por Nome Fantasia
- Exemplo:
GET /api/v1/buffets/search/?query=Tulipas
- Exemplo:
- Filtro por Cidade
- Exemplo:
GET /api/v1/buffets/search/?query=São Paulo
- Exemplo:
- Filtro por Nome do Evento
- Exemplo:
GET /api/v1/buffets/search/?query=Festa de Casamento
- Exemplo:
HTTP/1.1 200 OK
[
{
"id": 1,
"trading_name": "Tulipas Buffef | O melhor buffet da região Sudeste",
"company_name": "Tulipas Buffef | O melhor buffet da região Sudeste Ltda.",
"registration_number": "12345678000123",
"phone": "(83) 9 9834-0345",
"email": "contato@buffettulipas.com.br",
"address": "Rua Valentim Magalhães, 293",
"neighborhood": "Alto da Mooca",
"state": "SP",
"city": "São Paulo",
"zipcode": "06397-410",
"description": "O Buffet Tulipas tem a satisfação de realizar com sucesso, casamentos, festas de debutantes, eventos corporativos, aniversários e bodas. Nossos belíssimos espaços, localizados no Alto da Mooca, são o cenário perfeito para o seu evento.",
"buffet_owner_id": 1
}
]
200 OK: A solicitação foi bem-sucedida.
Este endpoint retorna detalhes de um buffet específico.
GET /api/v1/buffets/:id
Exemplo:
GET /api/v1/buffets/1
HTTP/1.1 200 OK
{
"id": 1,
"trading_name": "Tulipas Buffef | O melhor buffet da região Sudeste",
"phone": "(83) 9 9834-0345",
"email": "contato@buffettulipas.com.br",
"address": "Rua Valentim Magalhães, 293",
"neighborhood": "Alto da Mooca",
"state": "SP",
"city": "São Paulo",
"zipcode": "06397-410",
"description": "O Buffet Tulipas tem a satisfação de realizar com sucesso, casamentos, festas de debutantes, eventos corporativos, aniversários e bodas. Nossos belíssimos espaços, localizados no Alto da Mooca, são o cenário perfeito para o seu evento.",
"buffet_owner_id": 1,
"payment_methods": [
{
"name": "Pix"
},
{
"name": "Cartão de Crédito"
},
{
"name": "Cartão de Débito"
},
{
"name": "Boleto"
},
{
"name": "Dinheiro"
}
],
"average_rating": "Ainda não foram cadastradas avaliações!"
}
HTTP/1.1 404 Not Found
GET /api/v1/buffets/99999999
200 OK: A solicitação foi bem-sucedida. 404 Not Found: O recurso solicitado não foi encontrado. Ocorre se o buffet específico solicitado não existir.
Os Eventos são os tipos de festas oferecidas por esse Buffet. Desde casamentos e formaturas até aniversários e eventos corporativos.
Atributo | Tipo | Descrição |
---|---|---|
id | integer | Identificador único do evento |
name | string | Nome do evento |
description | string | Descrição do evento |
qty_min | integer | Quantidade mínima de pessoas que podem ser atendidas |
qty_max | integer | Quantidade máxima de pessoas que podem ser atendidas |
duration | integer | Duração padrão do evento em minutos |
menu | string | Cardápio para o evento |
exclusive_location | boolean | Se o evento possui localização exclusiva, i.e somente no endereço padrão do Buffet |
service_options | Array | Opções de serviço extra disponíveis no Evento |
Este endpoint retorna todos os eventos de um buffet específico.
GET /api/v1/buffets/:id/events
Exemplo:
GET /api/v1/buffets/1/events
HTTP/1.1 200 OK
[
{
"id": 1,
"name": "Festa de Formatura",
"description": "Uma celebração emocionante para marcar o fim de uma jornada educacional e o início de novos horizontes.",
"qty_min": 50,
"qty_max": 100,
"duration": 180,
"menu": "Prato Principal: Filé Mignon ao molho madeira. Acompanhamentos: Batatas rústicas assadas e Legumes grelhados.",
"buffet_id": 1,
"exclusive_location": true,
"service_options": [
{
"name": "Serviço de Valet"
},
{
"name": "Serviço de Estacionamento"
},
{
"name": "Serviço de Decoração"
},
{
"name": "Distribuição de Bebidas Alcoólicas"
}
]
},
{
"id": 2,
"name": "Gala de Aniversário de 50 Anos",
"description": "Uma noite de elegância e celebração em honra do 50º aniversário de uma pessoa especial.",
"qty_min": 50,
"qty_max": 200,
"duration": 120,
"menu": "Prato Principal: Salmão grelhado com molho de manteiga de limão e ervas. Acompanhamentos: Risoto de cogumelos selvagens.",
"buffet_id": 1,
"exclusive_location": false,
"service_options": [
{
"name": "Serviço de Valet"
},
{
"name": "Serviço de Decoração"
},
{
"name": "Distribuição de Bebidas Alcoólicas"
}
]
},
{
"id": 3,
"name": "Festa de Casamento",
"description": "Um dia especial para celebrar o amor e a união.",
"qty_min": 50,
"qty_max": 250,
"duration": 240,
"menu": "Entrada: Canapés variados. Prato Principal: Salmão grelhado com molho de ervas. Sobremesa: Bolo de casamento e doces finos.",
"buffet_id": 1,
"exclusive_location": false,
"service_options": [
{
"name": "Serviço de Valet"
},
{
"name": "Serviço de Estacionamento"
},
{
"name": "Serviço de Decoração"
},
{
"name": "Distribuição de Bebidas Alcoólicas"
}
]
}
]
HTTP/1.1 404 Not Found
GET /api/v1/buffets/99999999/events
200 OK: A solicitação foi bem-sucedida. 404 Not Found: O recurso solicitado não foi encontrado. Ocorre se o buffet específico solicitado não existir. Se o buffet não existir, não será possível consultar seus eventos associados.
Este endpoint realiza uma consulta para verificar a disponibilidade para realização de um Evento, dados o id do tipo do evento, a data do evento e a quantidade de convidados.
GET /api/v1/events/:id/available?event_date=DD/MM/AAAA&qty_invited=100
Exemplo:
GET /api/v1/events/1/available?event_date=15/05/2025&qty_invited=100
event_date
(string): A data desejada para realização do evento no formato DD/MM/AAAA, YYYY-MM-DD.qty_invited
(integer): A quantidade estimada de convidados para o evento.
HTTP/1.1 200 OK
{
"status": true,
"total_price": 4500.0
}
HTTP/1.1 406 Not Acceptable
GET /api/v1/events/1/available?event_date=15/05/2024&qty_invited=500
{
"status": false,
"msg": "O evento não pode ser agendado para a data e horário solicitados no Buffet: Tulipas Buffef | O melhor buffet da região Sudeste. Por favor, escolha uma data e horário disponíveis."
}
HTTP/1.1 406 Not Acceptable
GET /api/v1/events/1/available?event_date=06/05/2011&qty_invited=100
{
"error": "a data escolhida para realização do evento já passou!"
}
HTTP/1.1 406 Not Acceptable
GET /api/v1/events/1/available?event_date=afadfadf&qty_invited=500
{
"error": "a data informada é inválida"
}
HTTP/1.1 404 Not Found
GET /api/v1/events/9999999/available?event_date=15/05/2024&qty_invited=100
200 OK: A solicitação foi bem-sucedida.
404 Not Found: O recurso solicitado não foi encontrado. Ocorre se o evento específico solicitado não existir.
406 Not Acceptable: A solicitação não pode ser aceita pelo servidor. Ocorre se os parâmetros da solicitação (ex.: a data) não estiverem corretos. Ou devido a restrições específicas do servidor.
Made with ❤️ by Manu
💚 Don't believe the hype. Just code. Campus Code.