Nosabit.Core 1.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Nosabit.Core --version 1.1.1
                    
NuGet\Install-Package Nosabit.Core -Version 1.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Nosabit.Core" Version="1.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Nosabit.Core" Version="1.1.1" />
                    
Directory.Packages.props
<PackageReference Include="Nosabit.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Nosabit.Core --version 1.1.1
                    
#r "nuget: Nosabit.Core, 1.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=Nosabit.Core&version=1.1.1
                    
Install Nosabit.Core as a Cake Addin
#tool nuget:?package=Nosabit.Core&version=1.1.1
                    
Install Nosabit.Core as a Cake Tool

Nosabit.Core

Una biblioteca de utilidades completa para aplicaciones .NET que simplifica tareas comunes de desarrollo. Incluye herramientas para manipulación de fechas, comparación de datos, seguridad, generación de contraseñas, conversión de tipos, manejo de HTTP, integración con React, procesamiento de formularios, y mucho más.

NuGet License: MIT

Instalación

Package Manager

Install-Package Nosabit.Core

.NET CLI

dotnet add package Nosabit.Core

PackageReference

<PackageReference Include="Nosabit.Core"  />

Contenido

Esta biblioteca se divide en varias categorías de utilidades:

  • Manipulación de fechas: Conversión y formateo de fechas
  • Comparación de datos: Utilidades para comparación flexible
  • Seguridad: Encriptación y protección de datos
  • Conversión y procesamiento: Transformaciones de datos
  • Extensiones HTTP y JSON: Manejo de datos web
  • Componentes para UI: Integración con React y otras interfaces
  • DTOs y modelos: Objetos de transferencia predefinidos

Ejemplos de uso

DateTimeParse - Formateo y conversión de fechas

// Convertir DateTime a string en formato español (dd/MM/yyyy)
DateTime fecha = DateTime.Now;
string fechaES = fecha.AsDateEs();
// Resultado: "21/03/2025"

// Convertir DateTime a string en formato inglés (MM/dd/yyyy)
string fechaEN = fecha.AsDateEN();
// Resultado: "03/21/2025"

// Convertir DateTime a string en formato para base de datos (yyyy-MM-dd)
string fechaDB = fecha.AsDateDB();
// Resultado: "2025-03-21"

// Convertir string a DateTime desde formato español
string textoFecha = "21/03/2025";
DateTime? fechaDesdeString = textoFecha.ToDateEs();

// Trabajar con zonas horarias
DateTime fechaUTC = DateTime.UtcNow;
DateTime fechaCR = fechaUTC.GetTimeZoneCR(); // Convertir a hora de Costa Rica

CompareRequest - Utilidades de comparación

// Comparar cadenas con búsqueda insensible a mayúsculas/minúsculas
bool contiene = CompareRequest.CompareSearch("Hola Mundo", "mundo");
// Resultado: true

// Comparar igualdad exacta (insensible a mayúsculas/minúsculas)
bool esIgual = CompareRequest.CompareEqualsSearch("Hola", "hola");
// Resultado: true

// Comparar un valor booleano con una cadena de búsqueda
bool comparaBool = CompareRequest.CompareSearch(true, "activo", "Activo", "Inactivo");
// Compara si el texto correspondiente al valor booleano contiene el término de búsqueda

// Comparar valores numéricos
bool comparaNumero = CompareRequest.CompareSearch(12345, "123");
// Resultado: true

SecurityEncrytor - Encriptación y seguridad

// Encriptar texto con AES
string textoSensible = "contraseña123";
string textoEncriptado = textoSensible.ToEncriptarAES();

// Encriptar texto con Base64
string textoSimple = "texto secreto";
string base64 = textoSimple.ToEncriptar();

// Desencriptar texto Base64
string original = base64.ToDesEncriptar();
// Resultado: "texto secreto"

CreatePassword - Generación de contraseñas

// Generar una contraseña aleatoria segura
string nuevaContraseña = CreatePassword.Generate();
// Resultado: algo como "aB3x7Z" (incluye minúsculas, mayúsculas y números)

ToIsNull - Manejo de valores nulos

// Verificar si una cadena tiene valor
string? texto = null;
bool tieneValor = texto.HasValue(); // Devuelve false

// Obtener valor o cadena vacía
string valorSeguro = texto.Value(); // Devuelve ""

// Convertir a nullable
string? otroTexto = "  Hola  ";
string? textoNullable = otroTexto.ToStringNullable(); // Devuelve "Hola" (trimmed)

// Conversiones a tipos numéricos
string numero = "123";
int? valorInt = numero.ToIntNullable(); // Devuelve 123
decimal valorDecimal = numero.ToDecimal(); // Devuelve 123.0m

ConvertList - Conversión de colecciones

// Convertir una lista a DataTable
List<MiClase> listaItems = new List<MiClase>
{
    new MiClase { Id = 1, Nombre = "Item 1" },
    new MiClase { Id = 2, Nombre = "Item 2" }
};

DataTable tabla = listaItems.ToDataTableGet();
// La tabla tendrá columnas Id y Nombre, con los valores correspondientes

HttpQuery - Construcción de consultas HTTP

// Crear una cadena de consulta desde un objeto
var parametros = new
{
    Nombre = "Juan Pérez",
    Edad = 30,
    Activo = true
};

string queryString = HttpQuery.Create(parametros);
// Resultado: "Nombre=Juan%20P%C3%A9rez&Edad=30&Activo=true"

ForEachExtensions - Extensiones para iteración

// Iteración con índice
List<string> items = new List<string> { "uno", "dos", "tres" };

// Usando WithIndex
foreach (var (item, index) in items.WithIndex())
{
    Console.WriteLine($"Índice {index}: {item}");
}

// Usando ForEachWithIndex
items.ForEachWithIndex((item, index) => {
    Console.WriteLine($"Índice {index}: {item}");
});

ReactTableRequestDto - Integración con React Table

// En un controlador ASP.NET Core
[HttpPost]
public IActionResult GetData()
{
    // Crear objeto de solicitud a partir de la petición HTTP
    var request = new ReactTableRequestDto(Request);
    
    // Obtener datos (ejemplo)
    var datos = _servicio.ObtenerDatos();
    
    // Aplicar filtrado según el término de búsqueda
    if (!string.IsNullOrEmpty(request.Search))
    {
        datos = datos.Where(d => request.CompareSearch(d.Nombre)).ToList();
    }
    
    // Crear respuesta paginada
    var resultado = new ReactTableResultDto<MiDto>(datos, request);
    
    return Ok(resultado);
}

ConnectionStringProtector - Protección de cadenas de conexión

// Configuración en Startup.cs
services.AddDataProtection();
services.AddScoped<IConnectionStringProtector>(provider => {
    var dataProtectionProvider = provider.GetRequiredService<IDataProtectionProvider>();
    var protector = dataProtectionProvider.CreateProtector("ConnectionStrings");
    return new ConnectionStringProtector(protector);
});

// Uso en un servicio
public class MiServicio
{
    private readonly IConnectionStringProtector _protector;
    
    public MiServicio(IConnectionStringProtector protector)
    {
        _protector = protector;
    }
    
    public void UsarConexion(string connectionString)
    {
        // Desproteger la cadena de conexión si está protegida
        string conexionSegura = _protector.UnProtect(connectionString);
        // Usar la cadena de conexión desprotegida
    }
}

ToSerializeJson - Serialización JSON

// Serializar un objeto a JSON
var miObjeto = new { Nombre = "Juan", Edad = 30 };
string json = miObjeto.AsSerializeJson();
// Resultado: {"Nombre":"Juan","Edad":30}

// Serializar una lista
List<int> numeros = new List<int> { 1, 2, 3 };
string jsonLista = numeros.AsSerializeJson();
// Resultado: [1,2,3]

// Deserializar JSON a un objeto
string jsonString = "{\"Nombre\":\"María\",\"Edad\":25}";
MiClase? objeto = jsonString.AsDeserializeJson<MiClase>();

Modelos de resultado (Result DTOs)

// Crear un resultado exitoso
var datos = new MiDto { Id = 1, Nombre = "Test" };
var resultado = new ResultDto<MiDto>(datos);

// Crear un resultado con error
try
{
    // Alguna operación que puede fallar
}
catch (Exception ex)
{
    return new ResultDto<MiDto>(ex);
    // Tendrá el código y mensaje de error
}

// Para colecciones
var listaResultado = new ResultsDto<MiDto>(miListaDeDatos);

Todas las utilidades disponibles

Core

  • Compare.cs: Utilidades para comparación de datos
  • ConvertList.cs: Conversión entre listas y DataTable
  • CreatePassword.cs: Generación de contraseñas seguras
  • DateTimeParse.cs: Manipulación y formateo de fechas
  • ForEachExtensions.cs: Extensiones para iteración de colecciones
  • HttpQuery.cs: Construcción de consultas HTTP
  • SecurityEncrytor.cs: Encriptación y seguridad
  • ToIsNull.cs: Manejo de valores nulos o vacíos
  • ToSerializeJson.cs: Serialización y deserialización JSON
  • TypeTableIgnoreAttribute.cs: Atributo para excluir propiedades en conversiones

App

  • ConnectionStringProtector.cs: Protección de cadenas de conexión
  • EnumErrorBD.cs: Enumeración de códigos de error de base de datos
  • EnumMimeTypes.cs: Constantes para tipos MIME

DTOs

  • ApexChartsDtos.cs: DTOs para gráficos Apex
  • DBEntity.cs: Entidades base con manejo de errores
  • FromFormDataArray.cs: DTOs para datos de formulario
  • IFormFileInfo.cs: Información de archivos de formulario
  • LookupDto.cs: DTOs para operaciones de búsqueda
  • ReactSelectItemDto.cs: DTOs para componentes React Select
  • ReactTableDto.cs: DTOs para tablas React
  • ResultDto.cs: DTOs para resultados de operaciones
  • SelectItemDto.cs: DTOs para elementos de selección

Licencia

Este proyecto está licenciado bajo la Licencia MIT.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (7)

Showing the top 5 NuGet packages that depend on Nosabit.Core:

Package Downloads
Nosabit.NetReact

Nosabit.NetReact es una biblioteca que facilita la integración entre ASP.NET Core y aplicaciones React. Proporciona extensiones para el manejo de sesiones, procesamiento de formularios, codificación/decodificación de parámetros de consulta, mensajería entre backend y frontend, y automatización de scripts NPM durante el desarrollo. Incluye atributos personalizados para endpoints, decodificación de parámetros y propiedades React, así como utilidades para la manipulación de archivos Excel y mejoras en la respuesta HTTP.

Nosabit.Adapters.Persistence.SqlServer.RepositoryPattern.Abstractions

Biblioteca de abstracciones para implementar el patrón Repository con SQL Server en aplicaciones .NET. Define una interfaz genérica IRepo con operaciones CRUD y consultas complejas para entidades, incluyendo mapeo personalizado, consultas con parámetros dinámicos y soporte para múltiples esquemas y procedimientos almacenados. Esta biblioteca facilita la separación entre la lógica de acceso a datos y la lógica de negocio, mejorando la testabilidad y mantenibilidad del código.

Nosabit.Adapters.Persistence.SqlServer.Abstractions

Nosabit.Adapters.Persistence.SqlServer.Abstractions es una biblioteca de abstracciones para acceso a datos SQL Server que define interfaces para interactuar con bases de datos mediante Dapper. Este paquete proporciona solo las definiciones de interfaces que pueden ser implementadas en paquetes concretos, facilitando la inyección de dependencias y las pruebas unitarias en aplicaciones .NET.

Nosabit.Adapters.Persistence.SqlServer.RepositoryPattern

Package Description

Nosabit.Adapters.Persistence.Mail

Implementación de servicios de correo electrónico para aplicaciones .NET basada en las abstracciones de Nosabit.Adapters.Persistence.Mail.Abstractions. Proporciona un servicio completo para enviar correos con múltiples configuraciones SMTP, soporte para destinatarios múltiples, copias, adjuntos y contenido HTML. Incluye extensiones para facilitar la configuración a través de appsettings.json y la inyección de dependencias en aplicaciones ASP.NET Core.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.2.3 78 4/1/2025
1.2.2 56 4/1/2025
1.2.1 284 3/23/2025
1.2.0 168 3/22/2025
1.1.8 146 3/22/2025
1.1.6 138 3/22/2025
1.1.5 127 3/22/2025
1.1.4 136 3/22/2025
1.1.3 134 3/22/2025
1.1.2 202 3/21/2025
1.1.1 103 3/21/2025
1.1.0 103 3/21/2025
1.0.4 156 3/20/2025
1.0.3 126 3/20/2025
1.0.2 138 3/19/2025
1.0.1 133 3/19/2025
1.0.0 128 3/19/2025