TKMaster.Common.Toolkit
1.1.0
dotnet add package TKMaster.Common.Toolkit --version 1.1.0
NuGet\Install-Package TKMaster.Common.Toolkit -Version 1.1.0
<PackageReference Include="TKMaster.Common.Toolkit" Version="1.1.0" />
<PackageVersion Include="TKMaster.Common.Toolkit" Version="1.1.0" />
<PackageReference Include="TKMaster.Common.Toolkit" />
paket add TKMaster.Common.Toolkit --version 1.1.0
#r "nuget: TKMaster.Common.Toolkit, 1.1.0"
#:package TKMaster.Common.Toolkit@1.1.0
#addin nuget:?package=TKMaster.Common.Toolkit&version=1.1.0
#tool nuget:?package=TKMaster.Common.Toolkit&version=1.1.0
📦 Estrutura dos Projetos
Esta solução é composta por vários projetos do tipo Class Library, cada um com responsabilidades bem definidas:
🔹 Util
- Extensions: Métodos de extensão como
GetDescription
,GetTypeAttribute
, eNotFound
(com suporte a gênero). - Mensagens e Responses: Utilitários para mensagens consistentes e respostas padronizadas.
- 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 e entidades e repositórios.
- 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: Representação de classe abstrata de FilterBase
- Email: Modelos de envio (
GenericEmailModel
) e de 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: Representação de Classe abstrata FilterBaseDTO
🔹 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.
⚙️ 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>
Aplica ordenação dinâmica com base na propriedade e direção informada (asc
ou desc
).
Exemplo:
var sorted = QueryHelper.ApplySorting<CourseEntity>(query, "Title", "desc");
🗂️ Repository Pattern - Repositório Genérico
O projeto TKMaster.Common.Domain
implementa um repositório genérico baseado no padrão Repository, com a interface IRepositoryBase<TEntity>
e sua respectiva implementação RepositoryBase<TEntity>
. Essa estrutura fornece uma forma padronizada de realizar operações de dados com suporte a LINQ, IQueryable
e métodos assíncronos.
Busca e Consulta
GetByCodeAsync(int code)
GetByNameAsync(string name)
SearchAsync(Expression<Func<TEntity, bool>> predicate)
ListAllAsync()
ExistAsync(int code)
ToObtain()
→ RetornaIQueryable<TEntity>
para composições avançadas
Manipulação de Dados
ToAdd(...)
,ToUpdate(...)
,Remover(...)
com sobrecargas para entidades únicas ou múltiplas- Suporte à atualização e persistência em dois contextos: principal e de identidade
Persistência
ToSaveAsync()
para salvar no contexto principalSaveIdentityAsync()
para salvar alterações no contexto de identidade
🔄 Benefícios
- Reutilização de lógica de acesso a dados
- Centralização das operações CRUD
- Interface desacoplada facilita testes e manutenção
- Suporte a múltiplos contextos (
DbContext
eIdentityContext
)
💡 Extensões Incluídas
NotFound(this string subject, bool isFeminine)
: Gera mensagens padronizadas com concordância de gênero.- Diversos métodos utilitários para manipulação de strings, enums e expressões.
📦 Dependências Necessárias
dotnet add package System.Linq.Dynamic.Core
using TKMaster.Common.Util.Helpers;
🚀 Sugestões Futuras
- Suporte a
List<int>
eList<string>
comContains
- Combinação de filtros
AND
/OR
- Integração com Swagger para exibição de filtros dinamicamente
🛠️ 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.
📦 Versão 1.1.0 – Serviço Genérico de E-mail e Melhorias
✅ Novo Serviço: Envio de E-mails via SMTP
Foi adicionada uma funcionalidade genérica e reutilizável para envio de e-mails com suporte a múltiplos cenários e configuração via injeção de dependência.
GenericEmailService: Serviço de envio com suporte a corpo HTML, anexos, e tipos de e-mail como:
Recuperação de senha
Redefinição
Marketing
Notificações gerais
GenericEmailModel: Modelo unificado com suporte a campos de remetente, destinatário, cópia e anexos.
EmailEntityModel: Modelo de configuração SMTP (servidor, porta, credenciais, SSL).
EmailType: Enum para controle de template conforme o tipo de envio.
EmailServiceDependencyInjection: Classe utilitária para facilitar o registro do serviço com IServiceCollection.
🛠️ Melhorias na organização de projetos
Criado novo projeto TKMaster.Common.Infrastructure.Email para abrigar a implementação concreta do envio de e-mails com SmtpClient, mantendo o TKMaster.Common desacoplado de dependências externas.
Organização dos modelos de e-mail no namespace Domain.Model.Email, e das configurações em Util.Configuration.
🔄 Manutenção e estabilidade
As funcionalidades de filtros dinâmicos, ordenação, repositório genérico, logging customizado e suporte à internacionalização seguem estáveis e atualizadas.
Nenhuma quebra de compatibilidade com versões anteriores (1.0.x).