Skip to content

jhonatanwen/device-and-event-management-api

Repository files navigation

API de Gestão de Dispositivos e Eventos

Como testar

  1. Faça o download do arquivo de coleção de testes de requisição: desafio-tecnico-nevoa-collection-jhonatan
  2. Importe ele no Insomnia(Recomendado) ou Postman
  3. Inicie a API
  4. Faça a autenticação
  5. Use seu token no hearder para testar as rotas no seu aplicativo de escolha

Como Rodar o Projeto

Pré-requisitos

Setup Rápido

  1. Clone, restaure as dependências e builde o projeto
git clone https://github.com/jhonatanwen/desafio-tecnico-nevoa.git

cd desafio-tecnico-nevoa

dotnet restore

dotnet build
  1. Configure o banco de dados com Docker

Execute um dos scripts abaixo de acordo com seu sistema operacional para configurar automaticamente o banco de dados no docker

# Linux/Mac
setup-docker-sqlserver.sh

# Windows
setup-docker-sqlserver.bat
  1. Execute as migrations
# Necessário que esteja dentro dessa pasta para que as migrations sejam aplicadas corretamente
cd src/DeviceManagement.API

# Cria o banco de dados e aplica as migrations
dotnet ef database update --project ../DeviceManagement.Infrastructure
  1. Execute a aplicação
dotnet run
# caso queira usar https -> dotnet run --urls "http://localhost:5231;https://localhost:7254"
  1. Acesse a API

Configuração Manual do Banco

Se preferir usar SQL Server local ao invés do Docker, edite a connection string em src/DeviceManagement.API/appsettings.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=DeviceManagement;Integrated Security=true;TrustServerCertificate=true;"
  }
}

Autenticação

Para testar endpoints você precisa se autenticar e pegar o token JWT:

  1. Login
POST /api/v1/auth/login
Content-Type: application/json

{
    "username": "admin",
    "password": "123456"
}
  1. Use o token retornado no header
Authorization: Bearer <token-jwt>

Endpoints Principais

Clientes

  • GET /api/v1/clientes - Listar todos
  • GET /api/v1/clientes/{id} - Buscar por ID
  • POST /api/v1/clientes - Criar novo
  • PUT /api/v1/clientes/{id} - Atualizar
  • DELETE /api/v1/clientes/{id} - Excluir

Dispositivos

  • GET /api/v1/dispositivos/{id} - Buscar por ID
  • GET /api/v1/dispositivos/cliente/{clienteId} - Buscar por cliente
  • POST /api/v1/dispositivos - Criar novo

Eventos

  • GET /api/v1/eventos/all - Listar todos
  • GET /api/v1/eventos?startDate=2024-01-01&endDate=2024-12-31 - Por período
  • GET /api/v1/eventos/dispositivo/{id} - Por dispositivo
  • POST /api/v1/eventos - Registrar evento

Dashboard

  • GET /api/v1/dashboard - Estatísticas dos últimos 7 dias

Arquitetura

src/
├── DeviceManagement.Domain/          # Entidades, Value Objects
├── DeviceManagement.Application/     # Casos de Uso, DTOs
├── DeviceManagement.Infrastructure/  # Repositórios, Migrations
└── DeviceManagement.API/            # Controllers, Validações

Tecnologias

  • .NET 8, Entity Framework Core 9
  • SQL Server, JWT Authentication
  • FluentValidation, Swagger/OpenAPI

About

Device and Event Management API made in a Technical Test for a .NET + SQL Server Backend Developer position.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors