Nosabit.Core 1.2.3

dotnet add package Nosabit.Core --version 1.2.3
                    
NuGet\Install-Package Nosabit.Core -Version 1.2.3
                    
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.2.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Nosabit.Core" Version="1.2.3" />
                    
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.2.3
                    
#r "nuget: Nosabit.Core, 1.2.3"
                    
#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.2.3
                    
Install Nosabit.Core as a Cake Addin
#tool nuget:?package=Nosabit.Core&version=1.2.3
                    
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" Version="1.2.1" />

Contenido

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

  • Manipulación de fechas: Conversión y formateo de fechas entre diferentes formatos (ES, EN, DB)
  • Comparación de datos: Utilidades para comparación flexible de diferentes tipos de datos
  • Seguridad: Encriptación y protección de datos sensibles
  • Generación de contraseñas: Creación de contraseñas seguras
  • Conversión y procesamiento: Transformaciones de datos y manejo de valores nulos
  • Extensiones HTTP y JSON: Manejo de datos web y serialización/deserialización
  • Componentes para UI: Integración con React Tables, Select y otros componentes
  • DTOs y modelos: Objetos de transferencia predefinidos para distintos escenarios

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

DateJsonConverter - Conversión de fechas en JSON

// Configuración en el servicio
services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.Converters.Add(new DateJsonConverter());
        options.JsonSerializerOptions.Converters.Add(new DateOnlyJsonConverter());
    });

// Al serializar/deserializar, las fechas se manejarán en el formato establecido

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

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>();

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 = ReactTableRequestDto.GetReactTable(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 = ReactTableResultDto<MiDto>.Success(datos, request);
    
    return Ok(resultado);
}

Manejo de resultados con Result<T>

// En un servicio
public Result<MiDto> ObtenerEntidad(int id)
{
    try
    {
        var entidad = _repositorio.ObtenerPorId(id);
        if (entidad == null)
            return Result<MiDto>.Failure(DBEntity.Failure("No se encontró la entidad"));
            
        var dto = _mapper.MapToDto(entidad);
        return Result<MiDto>.Success(dto);
    }
    catch (Exception ex)
    {
        return Result<MiDto>.Failure(ex);
    }
}

// En un controlador
[HttpGet("{id}")]
public IActionResult Get(int id)
{
    var resultado = _servicio.ObtenerEntidad(id);
    
    if (resultado.CodeError != 0)
        return BadRequest(resultado);
        
    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
    }
}

SelectItemDto y ReactSelectItemDto - DTOs para componentes de selección

// Crear una lista de opciones para un select HTML
var opciones = new List<SelectItemDto>
{
    new SelectItemDto("1", "Opción 1"),
    new SelectItemDto("2", "Opción 2", true), // Opción seleccionada por defecto
    new SelectItemDto("3", "Opción 3") { Disabled = true } // Opción deshabilitada
};

// Crear opciones para React Select
var opcionesReact = new List<ReactSelectItemDto>
{
    new ReactSelectItemDto { value = 1, label = "Opción 1" },
    new ReactSelectItemDto { value = 2, label = "Opción 2", disabled = true }
};

WorkSheetXlsFunctions - Formateo para Excel

// Obtener formato para Excel
string formatoNumerico = WorkSheetXlsFunctions.FormatForXls("n2");
// Resultado: "#,##0.00"

string formatoMoneda = WorkSheetXlsFunctions.FormatForXls("c2");
// Resultado: "₡ #,##0.00"

string formatoPorcentaje = WorkSheetXlsFunctions.FormatForXls("p1");
// Resultado: "0.0%"

Características principales

Manejo de fechas

  • Conversión entre formatos (ES, EN, DB)
  • Soporte para DateTime y DateTimeOffset
  • Parsing seguro de strings a fechas
  • Manejo de zonas horarias
  • Serialización JSON personalizada para fechas

Seguridad

  • Encriptación AES con vector de inicialización aleatorio
  • Encriptación/desencriptación Base64
  • Protección de cadenas de conexión
  • Generación de contraseñas seguras

Extensiones para manipulación de datos

  • Manejo seguro de valores nulos
  • Conversión entre tipos (string, int, decimal, etc.)
  • Transformación entre colecciones y DataTable
  • Serialización/deserialización JSON

Componentes para UI

  • Soporte completo para React Table (paginación, ordenamiento, búsqueda)
  • DTOs para selectores (HTML y React)
  • DTOs para gráficos Apex Charts
  • Formateo para Excel

Patrones de resultado

  • Clases Result<T> y ResultValue<T> para operaciones con manejo de errores
  • Integración con códigos de error de base de datos
  • Soporte para excepciones y mensajes personalizados

Licencia

Este proyecto está licenciado bajo la Licencia MIT.

Autor

Desarrollado por José Andrey Salazar Guzmán (Nosabit).

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 0 3 hours ago
1.2.2 0 3 hours ago
1.2.1 283 9 days ago
1.2.0 166 10 days ago
1.1.8 145 10 days ago
1.1.6 136 10 days ago
1.1.5 126 10 days ago
1.1.4 135 10 days ago
1.1.3 133 10 days ago
1.1.2 200 11 days ago
1.1.1 101 11 days ago
1.1.0 103 11 days ago
1.0.4 156 11 days ago
1.0.3 126 11 days ago
1.0.2 137 12 days ago
1.0.1 133 12 days ago
1.0.0 127 13 days ago