API RESTful desenvolvida em ASP.NET Core para gerenciamento de um sistema de vendas (e-commerce), permitindo controle de produtos, categorias, clientes e pedidos.
Este projeto foi desenvolvido como trabalho final do curso Desenvolvimento de Software na plataforma .NET e SQL Server - Extensão, parceria da PUCPR e da Volvo.
Descrição do sistema
- TechStore
O projeto utiliza o padrão Model-View-Controller (MVC) para garantir a separação de responsabilidades e facilitar a testabilidade.
- Models: Representam a estrutura de dados e regras de negócio.
- Views: Este projeto não tem frontend. Foi utilizado o swagger
- Controllers: Lidam com as requisições, interagem com os serviços/models e retornam os dados necessários.
- Linguagem: C# 12
- Framework: ASP.NET Core Web API 8.0
- ORM: Entity Framework Core 8.0.12 (EF Core)
- Consultas: LINQ (Language Integrated Query)
- Banco de Dados: SQL Server
- Documentação: Swagger (Swashbuckle.AspNetCore 6.6.2 + Microsoft.AspNetCore.OpenApi 8.0.12)
- DTOs (Data Transfer Objects)
- Paginação via query parameters
- Filtros dinâmicos
- Enum para controle de status do pedido
- API RESTful
- Documentação via Swagger
Principais capacidades do sistema:
-
Gestão de Produtos
- Cadastrar produto
- Atualizar produto
- Excluir produto
- Buscar produto por ID
- Listar produtos com paginação (skip / take)
- Filtrar produtos por: Nome, Preço mínimo, Preço máximo
- Listar produtos por categoria
- Atualizar estoque de produto
-
Gestão de Categorias
- Cadastrar categoria
- Atualizar categoria
- Excluir categoria
- Buscar categoria por ID
- Listar todas as categorias
- Obter valor total vendido por categoria
-
Gestão de Clientes
- Cadastrar cliente
- Atualizar cliente
- Excluir cliente
- Buscar cliente por ID
- Listar clientes
-
Gestão de Pedidos
- Criar pedido
- Associar pedido a um cliente
- Listar pedidos com filtros: Por cliente, Por status
- Buscar pedido por ID
- Finalizar pedido
- Excluir pedido
- Cálcular total de pedidos
-
Gestão de Itens do Pedido
- Adicionar itens ao pedido
- Remover item do pedido
- Associação item ↔ produto
- Registro do preço unitário no momento da compra
Visão do swagger da aplicação.
-
SDK do .NET 8 instalado.
-
AutoMapper.Extensions.Microsoft.DependencyInjection (12.0.1): Integração do AutoMapper com o sistema de Injeção de Dependência do ASP.NET Core.
dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection --version 12.0.1
- BCrypt.Net-Next (4.0.3): Biblioteca para hash seguro de senhas.
dotnet add package BCrypt.Net-Next --version 4.0.3
- Microsoft.EntityFrameworkCore (8.0.12): ORM para acesso e manipulação de dados.
dotnet add package Microsoft.EntityFrameworkCore --version 8.0.12
- Microsoft.EntityFrameworkCore.SqlServer (8.0.12): Provider do Entity Framework Core para SQL Server.
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 8.0.12
- Microsoft.EntityFrameworkCore.Design (8.0.12): Ferramentas para suporte a migrations.
dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0.12
- Microsoft.AspNetCore.OpenApi (8.0.12): Integração com OpenAPI no .NET 8.
dotnet add package Microsoft.AspNetCore.OpenApi --version 8.0.12
- Swashbuckle.AspNetCore (6.6.2): Geração automática de documentação Swagger.
dotnet add package Swashbuckle.AspNetCore --version 6.6.2
- Swashbuckle.AspNetCore.Annotations (6.6.2): Suporte a anotações adicionais no Swagger.
dotnet add package Swashbuckle.AspNetCore.Annotations --version 6.6.2
Altere o usuário e a senha do seu banco no arquivo appsettings.json.
Entre na pasta TechStore/
dotnet run| Serviço | URL / Acesso | Descrição |
|---|---|---|
| Swagger UI | https://localhost:xxxx/swagger | Documentação da API |
TechStore/
├── Controllers/
├── APIs/
│ │ ├── ProdutoController.cs
│ │ ├── PedidoController.cs
│ │ ├── CategoriaController.cs
│ │ └── ClienteController.cs
│ │
├── Data/
│ ├── TechstoreContext.cs
├── DTOs/
│ ├── Request/
│ │ ├── CategoriaRequest.cs
│ │ ├── ClienteEditarRequest.cs
│ │ ├── ClienteRequest.cs
│ │ ├── ItemPedidoRequest.cs
│ │ ├── LoginRequest.cs
│ │ ├── PedidoRequest.cs
│ │ └── ProdutoRequest.cs
│ ├── Response/
│ │ ├── CategoriaResponse.cs
│ │ ├── ItemPedidoResponse.cs
│ │ ├── PedidoResponse.cs
│ │ ├── ProdutoResponse.cs
│ │ └── ValorPorCategoriaResponse.cs
├── Mappings/
│ ├── CategoriaProfile.cs
│ ├── ClienteProfile.cs
│ ├── PedidoProfile.cs
│ └── ProdutoProfile.cs
├── Middlewares/
│ └── TrataentoExcecoesMiddleware.cs
├── Models/
│ ├── Enums/
│ │ └── StatusPedido.cs
│ ├── Categoria.cs
│ ├── Cliente.cs
│ ├── ItemPedido.cs
│ ├── Pedido.cs
│ └── Peroduto.cs
├── Repository/
│ ├── APIs/
│ │ ├── CategoriaRepository.cs
│ │ ├── ClienteRepository.cs
│ │ ├── ItemPedidoRepository.cs
│ │ ├── PedidoRepository.cs
│ │ └── ProdutoRepository.cs
├── Services/
│ ├── APIs/
│ │ ├── CategoriaService.cs
│ │ ├── ClienteService.cs
│ │ ├── ItemPedidoService.cs
│ │ ├── PedidoService.cs
│ │ └── ProdutoService.cs
│ ├── SenhaService.cs
├── Utils
│ └── ValidadorEntidade.cs
├── GUIDELINE.md
└── README.md
- Consulte o arquivo
GUIDELINE.mddetalhes.
Desenvolvido por @Ana-Borowsky e @RamonPelle.
Durante a preparação dos arquivos de documentação (README.md, GUIDELINE.md e Swagger annotations) os autores usaram GitHub Copilot, no modo Agent GPT-5 para formatar e sugerir ajustes para o texto. Após usar essa ferramenta, os autores revisaram e editaram o conteúdo conforme necessário e assumem total responsabilidade pelo conteúdo.