TKMaster.Common.Toolkit
1.2.1
dotnet add package TKMaster.Common.Toolkit --version 1.2.1
NuGet\Install-Package TKMaster.Common.Toolkit -Version 1.2.1
<PackageReference Include="TKMaster.Common.Toolkit" Version="1.2.1" />
<PackageVersion Include="TKMaster.Common.Toolkit" Version="1.2.1" />
<PackageReference Include="TKMaster.Common.Toolkit" />
paket add TKMaster.Common.Toolkit --version 1.2.1
#r "nuget: TKMaster.Common.Toolkit, 1.2.1"
#:package TKMaster.Common.Toolkit@1.2.1
#addin nuget:?package=TKMaster.Common.Toolkit&version=1.2.1
#tool nuget:?package=TKMaster.Common.Toolkit&version=1.2.1
📦 Estrutura dos Projetos
Esta solução é composta por vários projetos do tipo Class Library, cada um com responsabilidades bem definidas e organizados em grupos lógicos na Solution:
🔹 Util
- Extensions: Métodos de extensão como
GetDescription
,GetTypeAttribute
, eNotFound
(com suporte a gênero). - Mensagens e Responses:
- Responses padronizados (
ResponseSuccess<T>
,ResponseFailure
,ResponsePaged<T>
) para unificar o retorno das APIs. - ResponseFactory para criação centralizada de respostas.
- Responses padronizados (
- LoggerFactoryConfiguration: Configuração e personalização do sistema de logging.
- GlobalizationConfiguration: Suporte à internacionalização, com recursos de tradução e formatos regionais.
- Dictionaries: Classe utilitária que fornece listas fixas (Dictionary<int, string>) para preenchimento de comboboxes e enums simulados no frontend (ex: status, meses, modalidades de curso etc).
- EmailServiceDependencyInjection: Método de extensão para facilitar o registro de serviços de envio de e-mail via
IServiceCollection
.
🔹 Domain
- Interfaces: Contratos de serviços, repositórios e entidades.
- RepositoryBase / IRepositoryBase: Implementação do padrão repositório genérico para facilitar o acesso e manipulação de dados com suporte a operações assíncronas.
- Services: Lógica de negócio reutilizável.
- Entities: Representações de dados e modelos base.
- Notifications: Sistema de notificações para regras de negócio e feedbacks.
- Filters: Classe abstrata
FilterBase
. - Email: Modelos de envio (
GenericEmailModel
) e configuração SMTP (EmailEntityModel
), além do enumEmailType
.
🔹 Logger
- CustomLogger: Implementação de logger customizado.
- CustomLoggerProvider: Provedor adaptável para integração com diversos sistemas de log.
- CustomLoggerProviderConfiguration: Configurações ajustáveis para múltiplos ambientes.
🔹 Application
- Filters: Classe abstrata
FilterBaseDTO
. - DTOs de Paginação:
PaginationDTO<T>
para retorno paginado no nível de aplicação.
🔹 Infrastructure.Email
- GenericEmailService: Implementação genérica de envio de e-mails via
SmtpClient
, com suporte a múltiplos tipos (EmailType
), corpo HTML, anexos e configuração por injeção de dependência.
🔹 HTTP (TKMaster.Common.Http
)
- BaseHttpService / IBaseHttpService: Serviço base para chamadas HTTP utilizando
HttpClientFactory
e retorno nos padrões de Responses. - ResponseExtensionAPI: Métodos de extensão para simplificar o consumo de endpoints HTTP (
ToResponse
,ToResponseList
,ToResponsePaged
). - ServiceCollectionExtensions: Método
AddCommonHttpServices()
para registrar o módulo HTTP e configurarIHttpClientFactory
de forma centralizada. - ResponseAPIConfig: Inicialização do
ResponseExtensionAPI
via injeção de dependência.
⚙️ Funcionalidades Principais
✅ QueryHelper - Filtros e Ordenação Dinâmica
ApplyFilter<TFilter, TEntity>
Aplica filtros dinâmicos em uma consulta IQueryable<TEntity>
usando um objeto TFilter
. Apenas propriedades marcadas com [Filterable]
são consideradas.
Características:
- Suporte a
==
,>=
,<=
,Contains
- Intervalos com sufixos
From
eTo
- Ignora propriedades nulas ou vazias
Exemplo:
var result = QueryHelper.ApplyFilter<CourseFilter, CourseEntity>(query, filter);
ApplySorting<T>
Ordenação dinâmica baseada no nome da propriedade e direção (asc
ou desc
).
Exemplo:
var sorted = QueryHelper.ApplySorting<CourseEntity>(query, "Title", "desc");
📄 Responses Padronizados
ResponseSuccess<T>
→ Retorno genérico comData
e flag de sucesso.ResponseFailure
→ Retorno para erros com lista de mensagens.ResponsePaged<T>
→ Retorno padronizado para dados paginados usandoPaginationDTO<T>
.ResponseFactory
→ Criação simplificada de Responses em Controllers.
Exemplo em Controller:
return ResponseFactory.Success(new UserDTO { Id = 1, Name = "Teste" });
📦 Pagination
Pagination<T>
→ Uso interno no domínio para paginação genérica.PaginationDTO<T>
→ Retorno paginado em DTOs na camada Application.ResponsePaged<T>
→ Resposta HTTP unificandoPaginationDTO<T>
com status de sucesso.
🗂️ Repository Pattern
O projeto TKMaster.Common.Domain
implementa repositório genérico (IRepositoryBase
e RepositoryBase
) com:
- Métodos de busca (GetByCodeAsync
, GetByNameAsync
, SearchAsync
)
- Manipulação (ToAdd
, ToUpdate
, Remove
)
- Persistência (ToSaveAsync
, SaveIdentityAsync
)
💡 Extensões Incluídas
NotFound(this string subject, bool isFeminine)
- Métodos utilitários para strings, enums e expressões
- Extensões para consumo HTTP com
HttpClient
e Responses padronizados
📦 Dependências Necessárias
dotnet add package System.Linq.Dynamic.Core
using TKMaster.Common.Util.Helpers;
🚀 Sugestões Futuras
- Suporte a filtros
List<int>
eList<string>
- Filtros compostos
AND
/OR
- Integração automática com Swagger para exibir metadados de filtros
🛠️ Tecnologias
📄 Licença
Este projeto é licenciado sob os termos da licença MIT. Consulte o arquivo LICENSE para mais informações.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.2.1 | 120 | 8/10/2025 |
1.2.0 | 114 | 8/9/2025 |
1.1.0 | 275 | 7/25/2025 |
1.0.15 | 439 | 7/21/2025 |
1.0.14 | 277 | 7/20/2025 |
1.0.13 | 111 | 4/19/2025 |
1.0.12 | 189 | 4/13/2025 |
1.0.11 | 192 | 4/13/2025 |
1.0.10 | 149 | 4/13/2025 |
1.0.9 | 108 | 4/5/2025 |
1.0.8 | 104 | 4/5/2025 |
1.0.7 | 105 | 4/5/2025 |
1.0.6 | 121 | 4/5/2025 |
1.0.3 | 107 | 3/29/2025 |
📦 Versão 1.2.1 – Módulo HTTP, Respostas Padronizadas e Melhorias Gerais
✅ Novo Módulo: Consumo de APIs HTTP
Foi adicionado um módulo genérico para facilitar a comunicação com APIs externas, incluindo:
BaseService: Classe base para requisições HTTP (GET, POST, PUT, DELETE) com suporte a autenticação via Bearer Token.
IBaseService: Contrato padronizado para serviços HTTP reutilizáveis.
ResponseExtensionAPI: Métodos de extensão para converter requisições em respostas tipadas.
ResponseAPIConfig: Configuração simples para inicialização do módulo via UseResponseApi.
AddCommonHttpServices: Registro facilitado de serviços HTTP com IServiceCollection.
✅ Unificação e Padronização de Respostas
Nova ResponseFactory para criar respostas padronizadas de sucesso e falha.
ResponseSuccess, ResponseFailure e ResponsePaged: respostas unificadas com suporte a paginação (PaginationDTO).
Remoção de duplicidades das classes antigas de resposta, mantendo compatibilidade com novos endpoints.
🛠️ Melhorias de Organização
Criação do projeto TKMaster.Common.Http para concentrar serviços e extensões relacionados a comunicação HTTP.
Padronização de namespaces e separação lógica entre Domain, Util e Http.
Ajustes na estrutura para melhor organização em soluções com múltiplos projetos.
🔄 Manutenção e Estabilidade
Funcionalidades anteriores, como filtros dinâmicos, ordenação, repositório genérico, logging customizado, envio de e-mails e globalização, permanecem estáveis e compatíveis.
Nenhuma quebra de compatibilidade com a versão 1.2.1.
Melhorias