https://github.com/benicio227/blooddonationsystem
API desenvolvida com ASP.NET Core 8 para gerenciar doações de sangue. Permite o cadastro de doadores, registro de doações, controle de estoque sanguíneo e integração com API de CEP.
https://github.com/benicio227/blooddonationsystem
asp-net-core clean-architecture cqrs entity-framework-core fluentvalidation mediator-pattern repository-pattern sqlserver swagger
Last synced: 2 months ago
JSON representation
API desenvolvida com ASP.NET Core 8 para gerenciar doações de sangue. Permite o cadastro de doadores, registro de doações, controle de estoque sanguíneo e integração com API de CEP.
- Host: GitHub
- URL: https://github.com/benicio227/blooddonationsystem
- Owner: benicio227
- Created: 2025-04-15T13:11:52.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-02T13:30:08.000Z (about 1 year ago)
- Last Synced: 2025-05-02T14:53:57.601Z (about 1 year ago)
- Topics: asp-net-core, clean-architecture, cqrs, entity-framework-core, fluentvalidation, mediator-pattern, repository-pattern, sqlserver, swagger
- Language: C#
- Homepage:
- Size: 146 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Sobre o projeto
O **Sistema de Banco de Dados de Doação de Sangue** é uma API desenvolvida com **ASP.NET Core 8**, projetada para gerenciar doações de sangue de forma eficiente e organizada. A aplicação utiliza o **FluentValidation** para garantir a integridade dos dados recebidos nas requisições.
A arquitetura foi construída em camadas bem definidas, promovendo a separação de responsabilidades, o que facilita a manutenção, testes e escalabilidade do sistema. Para garantir o baixo acoplamento entre as classes, foi adotada a **injeção de dependência** por meio de interfaces.
O banco de dados utilizado é o **SQL Server**, com mapeamento realizado via **Entity Framework Core**. Os testes de unidade foram implementados com a biblioteca **xUnit**, utilizando também o **FluentAssertions** para tornar as asserções mais legíveis e expressivas.
Além disso, foram aplicados princípios de **Clean Code**, contribuindo para a clareza e legibilidade do código, com foco em nomes significativos e estruturação limpa.
### Funcionalidades principais
- **Casastro de Doadores**: Permite registrar doadores com validações como idade mínima, peso adequado e e-mail único.
- **Consulta de Endereço via CEP**: Integração com API externa para preenchimento automático de endereço a partir do CEP informado.
- **Devolução de um livro**: Essa funcionalidade permite manter o controle entre a data que foi feito o empréstimo do livro e a data em que ele foi devolvido. Para isso, uma mensagem é exibida, dizendo se a devolução está em atraso ou se está em dias.
- **Controle de Estoque Sanguíneo**: Monitora os níveis de sangue por tipo, emitindo alertas quando o estoque atinge o mínimo necessário.
- **Histórico de Doações**: Permite consultar as doações feitas por cada doador, promovendo um acompanhamento individual.
### Padrões e Práticas Utilizadas
- **CQRS (Command Query Responsibility Segregation)**
- **MediatR** para centralizar a comunicação entre comandos e manipuladores.
- **Result Pattern** para retornar respostas unificadas (sucesso ou falha) com mensagens e códigos de status adequados.
- **Repository Pattern** para isolar a lógica de persistência de dados.
- **Clean Architecture** com divisão em camadas: API, Application, Core, Infra e Tests.
### Requisitos
- Visual Studio versão 2022+ ou Visual Studio Code
- Windows 10+ ou Linux/MacOS com [.NET SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) instalado
- SQL Server
### Construído com
   

## Começando
Para obter uma cópia local funcionando, siga estes passos simples.
### Requisitos
- Visual Studio versão 2022+ ou Visual Studio Code
- Windows 10+ ou Linux/MacOS com [.NET SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) instalado
- Sql Server
### Instalação
1. Clone o repositório:
```sh
git clone git@github.com:benicio227/BloodDonationSystem.git
```
2. Preencha as informações no arquivo `appsettings.json`
3. Execute a API