Este projeto é uma WEB API de gerenciamento de PetShop.
Com ela você poderá consultar, cadastrar, editar e excluir dados de clientes, animais e veterinários além de obter descrições de consultas realizadas e um registro de todos os atendimentos do seu empreendimento.
Esse sistema ainda conta com serviços de segurança de acesso, para consumir dados da api é necessário estar registrado e logado, além de estar identificado através de um token gerado pelo sistema JWT.
🐶 Entidade Animal
👉 Retorna todos os animais cadastrados
GET - https://localhost:5001/api/v1/animais
👉 Retorna somente 1 animal cadastrado
GET - https://localhost:5001/api/v1/animais/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do Animal
👉 Retorna detalhes da raça pesquisada
GET - https://localhost:5001/api/v1/animais/search/{raca}
Parametro
Tipo
Descrição
raca
string
Requerido . Raça do Animal
👉 Cria um registro de animal no banco
POST - https://localhost:5001/api/v1/animais
Parametro
Tipo
Descrição
nome
string
Requerido . Nome do Animal
clienteID
int
Requerido . Id do tutor do animal
sexo
string
Requerido . Sexo do Animal
pesoAtual
int
Peso do Animal
alturaAtual
int
Altura do Animal
dataNascimento
string
Requerido . Data de Nascimento do Animal
raca
string
Raça do Animal
👉 Atualiza um registro de animal no banco
PATCH - https://localhost:5001/api/v1/animais/atualizar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do Animal
nome
string
Nome do Animal
clienteID
int
Id do tutor do animal
sexo
string
Sexo do Animal
pesoAtual
int
Peso do Animal
alturaAtual
int
Altura do Animal
dataNascimento
string
Data de Nascimento do Animal
raca
string
Raça do Animal
👉 Exclui 1 animal cadastrado
DELETE - https://localhost:5001/api/v1/animais/deletar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do Animal
🏢 Entidade Cargo
👉 Retorna todos os cargos cadastrados
GET - https://localhost:5001/api/v1/cargos
👉 Retorna somente 1 cargo cadastrado
GET - https://localhost:5001/api/v1/cargos/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do cargo
👉 Cria um registro de cargo no banco
POST - https://localhost:5001/api/v1/cargos
Parametro
Tipo
Descrição
nome
string
Requerido . Nome do cargo
👉 Atualiza um registro de cargo no banco
PATCH - https://localhost:5001/api/v1/cargos/atualizar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do cargo
nome
string
Nome do cargo
👉 Exclui 1 cargo cadastrado
DELETE - https://localhost:5001/api/v1/cargos/deletar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do cargo
🎫 Entidade Servico
👉 Retorna todos os servicos cadastrados
GET - https://localhost:5001/api/v1/servicos
👉 Retorna somente 1 servico cadastrado
GET - https://localhost:5001/api/v1/servicos/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do servico
👉 Cria um registro de servico no banco
POST - https://localhost:5001/api/v1/servicos
Parametro
Tipo
Descrição
tipo
string
Requerido . Tipo de servico
valor
double
Requerido . Valor do servico
👉 Atualiza um registro de servico no banco
PATCH - https://localhost:5001/api/v1/servicos/atualizar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do servico
tipo
string
Tipo de servico
valor
double
Valor do servico
👉 Exclui 1 servico cadastrado
DELETE - https://localhost:5001/api/v1/servicos/deletar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do servico
👷 Entidade Funcionario
👉 Retorna todos os funcionarios cadastrados
GET - https://localhost:5001/api/v1/funcionarios
👉 Retorna somente 1 funcionario cadastrado
GET - https://localhost:5001/api/v1/funcionarios/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do funcionario
👉 Cria um registro de funcionario no banco
POST - https://localhost:5001/api/v1/funcionarios
Parametro
Tipo
Descrição
nome
string
Requerido . Nome do funcionario
cpf
string
Requerido . Cpf do funcionario
cargoId
int
Requerido . Id do cargo do funcionario
email
string
Requerido . Email do funcionario
senha
string
Requerido . Senha do funcionario
👉 Atualiza um registro de funcionario no banco
PATCH - https://localhost:5001/api/v1/funcionarios/atualizar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do funcionario
nome
string
Nome do funcionario
cpf
string
Cpf do funcionario
cargoId
int
Id do cargo do funcionario
email
string
Email do funcionario
senha
string
Senha do funcionario
👉 Exclui 1 funcionario cadastrado
DELETE - https://localhost:5001/api/v1/funcionarios/deletar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do funcionario
🧍 Entidade Cliente
👉 Retorna todos os clientes cadastrados
GET - https://localhost:5001/api/v1/clientes
👉 Retorna todos os cachorros do cliente cadastrado
GET - https://localhost:5001/api/v1/clientes/animal/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do cliente
👉 Retorna somente 1 cliente cadastrado
GET - https://localhost:5001/api/v1/clientes/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do funcionario
👉 Cria um registro de cliente no banco
POST - https://localhost:5001/api/v1/clientes
Parametro
Tipo
Descrição
nome
string
Requerido . Nome do cliente
cpf
string
Requerido . Cpf do cliente
telefone
int
Requerido . Telefone do cliente
email
string
Requerido . Email do cliente
senha
string
Requerido . Senha do cliente
👉 Atualiza um registro de cliente no banco
PATCH - https://localhost:5001/api/v1/clientes/atualizar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do cliente
nome
string
Nome do cliente
cpf
string
Cpf do cliente
telefone
int
Telefone do cliente
email
string
Email do cliente
senha
string
Senha do cliente
👉 Exclui 1 cliente cadastrado
DELETE - https://localhost:5001/api/v1/clientes/deletar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do cliente
🧍 Entidade Atendimento
👉 Retorna todos os atendimentos cadastrados
GET - https://localhost:5001/api/v1/atendimentos
👉 Retorna todos os atendimentos do cliente cadastrado buscando por Id
GET - https://localhost:5001/api/v1/atendimentos/cliente/busca/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do cliente
👉 Retorna todos os atendimentos do cliente cadastrado buscando por nome e cpf
GET - https://localhost:5001/api/v1/atendimentos/cliente/busca/{nome}/{cpf}
Parametro
Tipo
Descrição
nome
string
Requerido . Nome do cliente
cpf
string
Requerido . CPF do cliente
👉 Retorna todos os atendimentos do animal cadastrado buscando por Id
GET - https://localhost:5001/api/v1/atendimentos/animal/busca/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do cliente
👉 Retorna todos os atendimentos do animal cadastrado buscando por nome e data de nascimento
GET - https://localhost:5001/api/v1/atendimentos/animal/busca/{nome}/{nascimento}
Parametro
Tipo
Descrição
nome
string
Requerido . Nome do animal
nascimento
string
Requerido . Data de nascimento do animal
👉 Cria um registro de atendimento no banco
POST - https://localhost:5001/api/v1/atendimentos
Parametro
Tipo
Descrição
servicoId
int
Requerido . Id do Servico
clienteId
int
Requerido . Id do Cliente
funcionarioId
int
Requerido . Id do Funcionario
animalId
int
Requerido . Id do Animal
pesoDoAnimalAtualizado
double
Peso do animal no dia do atendimento
alturaDoAnimalAtualizado
double
Altura do animal no dia do atendimento
diagnostico
string
Diagnóstico do animal
observacoes
string
Observações sobre o animal
👉 Atualiza um registro de atendimento no banco
PATCH - https://localhost:5001/api/v1/atendimentos/atualizar/{id}
Parametro
Tipo
Descrição
id
int
Requerido . Id do Atendimento
diagnostico
string
Diagnóstico do animal
observacoes
string
Observações sobre o animal
1 - Abra seu terminal e clone o repositório usando esse comando:
2 - No diretório PetShopManager/appsettings.json altere a propriedade DefaultConnection
com os dados do seu banco de dados MySQL;
3 - No diretório Tests/BaseTest.cs altere o valor da variável mySqlConnection
com os dados do seu banco de dados MySQL;
4 - Dentro da pasta do projeto, execute esses dois comandos:
dotnet ef database update (Carrega o migration criando e populando o banco de dados)
dotnet run --project PetShopManager (Executa a aplicação)
5 - Para rodar os testes, execute esse comando:
Nosso banco de dados já possui dois usuários cadastrados com diferentes permissões:
👷 Funcionario
Email: funcionario@gft.com
Senha: Gft@1234
Permissões
Possui permissão para todos os EndPoints da aplicação
🧍 Cliente
Email: cliente@gft.com
Senha: Gft@1234
Permissões
Entidade Animal: GET com Id / GET com raça / GET random dogs / POST / PATCH
Entidade Atendimentos: GET cliente com Id / GET cliente com nome e cpf / GET animal com id / GET animal com nome
Entidade Cargo : Não há permissão
Entidade Login: POST
Entidade Servico: Não há permissão
Entidade Cliente: GET com Id / POST / PATCH
Entidade Funcionario: Não há permissão
.Net 5.0;
ASP NET Core MVC;
ASP NET Core WEB API;
EntityFrameworkCore;
Visual Studio Code;
xUnit;
DataAnnotations;
IdentityModel.Tokens.Jwt;
Security.Claims;
Newtonsoft.Json;
AspNetCore.Authorization;
AspNetCore.Authentication.JwtBearer;
Extensions.DependencyInjection;
MySQL.
Imagens do processo de organização e criação do projeto
🖼️ Backlog do projeto
🖼️ EndPoints do projeto
🖼️ Testes