Este é uma api desenvolvida em linguagem de programação Back-end, voltado para gerenciamento de um petshop. O objetivo é oferecer uma solução para simplificar a gestão de informações relacionadas aos pets e seus proprietários.
Funcionalidades
O programa Soul Pet possui as seguintes funcionalidades:
Cadastro de clientes: cadastro de clientes, incluindo informações como nome, endereço, telefone e e-mail.
Cadastro de pets: cadastro de animais, incluindo informações como nome, tipo, porte, data de nascimento e identificação do proprietário.
Cadastro de produtos: possui um sistema de controle de produtos, como higiene, brinquedos, conforto, alimentação, medicamentos.
Inserção pedidos: há uma segmentação para controle de pedidos, que permite o cadastro de mesmo de acordo com quantidade, cliente e protudos solicitatos.
Registro de agendamento: possui uma seção de agendamentos para inserção de um serviço em específico, de acordo com o pet, data e status.
Registro de serviços: permite o registro de serviços realizados no petshop, como banho, tosa, vacinação, entre outros.
Tecnologias utilizadas e pré-requisitos
O programa Soul Pet foi desenvolvido utilizando as seguintes tecnologias:
1. Inicie o servidor: `npm start`
2. Acesse a página em seu navegador em: `http://localhost:3001`
Lista de endpoints da API
Aqui estão as rotas disponíveis, os recursos e os parâmetros necessários para realizar as operações.
Clientes
Consulta todos os clientes
GET /clientes
Consulta um cliente específico
GET /clientes/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Gera relatório em pdf de todos os clientes
GET /relatorio
Insere um novo cliente
POST /clientes
Parâmetro
Tipo
Descrição
nome
string
Obrigatório
email
string
Obrigatório
telefone
string
Obrigatório
endereco
foreign_key
Obrigatório
Atualiza os dados de um cliente específico
PUT /clientes/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Remove um cliente
DELETE /clientes/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Pets
Consulta todos os pets
GET /pets
Consulta um pet específico
GET /pets/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Consulta todos os pets de um cliente
GET /clientes/:clienteId/pets
Parâmetro
Tipo
Descrição
clienteID
number
Obrigatório
Insere um novo pet
POST /pets
Parâmetro
Tipo
Descrição
nome
string
Obrigatório
tipo
string
Obrigatório
porte
string
Obrigatório
dataNasc
date-only
Obrigatório
Atualiza os dados de um pet específico
PUT /pets/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Remove um pet
DELETE /pets/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Produtos
Consulta todos os produtos
GET /produtos
Consulta um produto específico e contém o filtro de nome e categoria
GET /produtos/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Atualiza os dados de um produto específico
PUT /produto/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Remove um produto
DELETE /produto/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Pedidos
Consulta todos os pedidos
GET /pedidos
Consulta um pedido específico
GET /pedido/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Consulta todos os pedidos de acordo com id do produto
GET /pedidos/produtos/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Consulta todos os pedidos de acordo com id do cliente
GET /pedidos/clientes/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Insere um novo pedido
POST /pedidos
Parâmetro
Tipo
Descrição
codigo
string
Obrigatório
quantidade
integer
Obrigatório
Atualiza os dados de um pedido específico
PUT /pedido/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Remove um pedido
DELETE /pedido/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Agendamento
Consulta todos os agendamentos
GET /agendamentos
Consulta um agendamentos específico
GET /agendamentos/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Insere um novo agendamento
POST /agendamentos
Parâmetro
Tipo
Descrição
petId
number
Obrigatório
servicoId
number
Obrigatório
dataAgendada
dateOnly
Obrigatório
realizada
text
Obrigatório
Atualiza os dados de um agendamentos específico
PUT /agendamentos/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Remove um agendamento específico
DELETE /agendamentos/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Serviços
Consulta todos os serviços
GET /servicos
Consulta um serviço específico
GET /servico/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Insere um novo serviço
POST /servicos
Parâmetro
Tipo
Descrição
nome
string
Obrigatório
preco
string
Obrigatório
Atualiza os dados de um serviço específico
PUT /servico/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Remove um serviço
DELETE /servico/:id
Parâmetro
Tipo
Descrição
id
number
Obrigatório
Remove todos os serviços
DELETE /servicos/all
Contribuições
Contribuições para o programa Petshop são bem-vindas! Para contribuir, basta criar um fork deste repositório, fazer as modificações desejadas e enviar um pull request.
Siga esse passos:
1. Faça um fork deste repositório.
2. Crie uma nova branch: `git checkout -b nome-da-sua-branch`
3. Faça as alterações necessárias.
4. Faça um commit com as alterações: `git commit -m "Descreva as alterações realizadas"`
5. Faça um push para a branch: `git push origin nome-da-sua-branch`
6. Crie um pull request.
Autoria
Autores desse projeto
. Jéssica Venâncio
. Jurineide de Souza
. Vitor Santana
. Ricardo Silva Sousa
Licença
Esta aplicação utiliza a Licença MIT, o que significa que você pode usá-la, copiá-la, modificar e distribuir o código esta aplicação, desde que seja mantida a atribuição de direitos autorais e a licença seja incluída em todas as cópias e modificações do código. Para obter mais informações sobre a Licença MIT, consulte o arquivo LICENSE.md na raiz deste repositório.
Crie uma nova página para detalhar as informações de um pedido, ela deve mostrar as informações do pedido, do produto e do cliente. A página deve ser linkada a opção detalhes na listagem de pedidos.
/produtos Esta rota deve listar todos os produtos. Caso seja enviado na rota uma query como /produtos?nome= ou /produtos?categoria=, os dados devem ser fitrados para que apareçam apenas produtos de acordo com a busca.
/produtos/:id Esta rota deve mostrar os dados do produto de acordo com o id fornecido.
Crie uma rota POST para inserir múltiplos pedidos.
/pedidos A requisição deve receber em seu corpo um vetor de pedidos, que devem ser inseridos. Todos os campos do Body devem ser checados e validados antes de realizar inserção.
Crie uma rota POST para inserir um novo agendamento, é necessário o id do pet e também o id do serviço escolhido. Bem como as demais propriedades do model de agendamento.
Crie uma rota PUT para atualizar um agendamento, é necessário o id do pet e também o id do serviço escolhido. Bem como as demais propriedades do model de agendamento.
Este model deve ser implementado após o model de Serviço para complementar. Pode nomear este model de junção como Agendamento. Além dos campos de chave estrangeira, deve haver:
dataAgendada (data prevista para realizar o serviço);
realizada (booleano);
Depende de: BE-8.
Dica: Veja a seção Implementation da documentação.
/pedidos/:id Esta rota deve mostrar os dados do pedido de acordo com o id fornecido. O pedido retornado deve incluir os valores do produto e do cliente relacionado.
/pedidos/produtos/:id Esta rota deve mostrar os dados do pedido de acordo com o id do produto fornecido. O pedido retornado deve incluir os valores do cliente relacionado.
/pedidos/clientes/:id Esta rota deve mostrar os dados do pedido de acordo com o id do cliente fornecido. O pedido retornado deve incluir os valores do produto relacionado.
Validar com uso da biblioteca Joi os corpos de requisição das rotas da aplicação para impedir que dados inválidos sejam inseridos no banco de dados. Aplicar validação em todas as inserções e atualizações de dados, responder ao cliente com 400 em caso de dados fornecidos inválidos. É necessário que as mensagens de erro sejam traduzidas para o português usando a configuração messages da função validate e que o error.details seja tratado para mostrar apenas um array com as mensagens de erro.
O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que o tratamento é consistente.
Crie uma variável de ambiente DB_FORCE que pode ser true ou false. Use ela para configurar o sync force do sequelize, e caso seja true, use um esquema para preencher o banco com dados fictícios. Devem haver:
2 clientes;
3 pets (dois do primeiro cliente e um do segundo);
Caso haja outras entidades no projeto, cuidar para que elas também sejam populadas;
O desenvolvedor deve dar manutenção periódica a esta task para garantir ao final que o tratamento é consistente.