CL.COMMON
1.0.9
See the version list below for details.
dotnet add package CL.COMMON --version 1.0.9
NuGet\Install-Package CL.COMMON -Version 1.0.9
<PackageReference Include="CL.COMMON" Version="1.0.9" />
paket add CL.COMMON --version 1.0.9
#r "nuget: CL.COMMON, 1.0.9"
// Install CL.COMMON as a Cake Addin #addin nuget:?package=CL.COMMON&version=1.0.9 // Install CL.COMMON as a Cake Tool #tool nuget:?package=CL.COMMON&version=1.0.9
Acerca de CL.COMMON
Ofrece una serie de funciones a modo de utilería las cuales nos permiten realizar flujos que son habituales en todos los proyectos, como mapeo de genéricos, logs entre otros.
¿Qué resuelve?
La creación repetitiva de código de uso común a través de los distintos proyectos de los clientes y que a su vez en cada implementación presentan la posibilidad de no replicar el código con exactitud generando errores.
Rutinas de Core
GetConfigKeyValue:System.Data.String
- System.Reflection.MethodBase _invoker:Usado para determinar que función ha llamado este método
- System.String _configKey: Nombre de la llave en el config
Usado para acceder a configuraciones del web.config.
Ejemplo:
// Obtiene la llave del Web.config llamanda 'spGetNameDbObjectApp'
System.String valor = CL.COMMON.Core.GetConfigKeyValue(System.Reflection.MethodBase.GetCurrentMethod(), "spGetNameDbObjectApp");
FileToBase64:System.String
- System.String _filePath: Ruta física del archivo
Usado para convertir un archivo en base64
Ejemplo:
// Convirtiendo un archivo a base64
System.String base64pdf = CL.COMMON.Core.FileToBase64("C:\mipdf.pdf");
GetExceptionMessage:System.String
- System.Exception _exception: Objeto con la excepción a mapear
Obiene el detalle de la excepción y la retorna en un System.String.
Ejemplo:
// Mapeando la excepcion a un System.String
System.String message = CL.COMMON.Core.GetExceptionMessage(exception)
InflateObject:T
T:new(): Objeto que va a ser llenado con el System.Data.DataTable
- System.Data.DataTable _dt: Origen de datos que van a ser cargados en T
Los registros de un query cargados en System.Data.DataTable serán cargados en el objeto de tipo T.
Ejemplo:
// Obtiene el modelo retornado por el datable
T oT = CL.COMMON.Core.InflateObject<T>(oDataTable);
InflateList:System.Collections.Generic.List<T>
T:new(): Objeto que va a ser llenado con el System.Data.DataTable
- System.Data.DataTable _dt: Origen de datos que van a ser cargados en T
Los registros de un query serán mapeados a una lista de tipo T.
Ejemplo:
// Convirtiendo los registros de un datable a una lista de tipo T.
System.Collections.Generic.List<T> tList = CL.COMMON.Core.InflateList<T>(oDataTable);
ParametersBuilder:System.Collections.Generic.List<System.String>
T:new(): Objeto que va a ser mapeado a un query.
U:CL.STRUCTURES.INTERFACES.ICLMaster: I
- System.String _invoker: Usado para determinar que métod ha invocado es función y podar dar el error respectivo en caso de...
- T _object: Objeto del cual se van a mapear las propieadas a una lista.
- System.String[] _toIgnore: Lista de propiedades a incluir/excluir según el tipo de inteface que indiquemos.
Convierte las propieades de un objeto a una lista de string.
// Convirtiendo las propiedades de un objeto a una lista.
System.String[] properties = CL.COMMON.Core.ParametersBuilder<T, V>(System.Reflection.MethodBase.GetCurrentMethod().Name, _object, _toIgnore)
Rutinas de LogManager
Esta funcionalidad requiere de ciertas configuraciones iniciales, como por ejemplo agregar una llave en el web.config con el nombre LogPath, para poder obtener la ruta donde se van a escribir los logs. De manera opcional se puede escoger el intervalo de generación de archivos, por defecto es diario. Puede ser cambiado agregando la propiedad SeriLogRollingInterval en en el webconfig. Posibles valores(Infinite, Year, Month, Day, Hour, Minute).
Todas las sobrecargas del método Commit intentan sacar el usuario del contexto del pipe, accediendo a un claim llamado 'UserEmail'. En caso de no suministrar un usuario el valor por defecto de este será 'no_user_found'. Además se permite registrar el momento en el que salió la petición desde ui, agregando la llave 'UIRequestTimestamp' a la cabecera de la petición, lo ideal es hacer este proceso en un interceptor.
Enter:void
Agrega un enter los logs almacenados hasta el momento.
Ejemplo:
// Dando un enter
CL.COMMON.LogManager.Enter();
Record:void
- System.String _message: Mesage que será escrito un medio externo.
Agrega un mensaje contexto actual del log al final de este.
Ejemplo:
// Agregando un mensaje de prueba
CL.COMMON.LogManger.Record("Hola Sap B1");
Record:void
- System.String _message: Mesage que será escrito un medio externo.
- CL.STRUCTURES.TabLevel: Indica si el mensaje recién registrado va a tener un margen izquierdo(Cantidad de tabs).
Agrega un mensaje contexto actual del log al final de este con N tabs de desplazamiento.
Ejemplo:
// Agregando un mensaje de saludo con un nivel de tab
CL.COMMON.LogManger.Record("Hola Sap B1", CL.STRUCTURES.TabLevel.One);
Commit:void
- System.Net.Http.HttpRequestMessage _httpRequestMessage: Contexto actual de la petición.
- System.String _user: Usuario al que se le asignaran los logs.
En caso de no suministrar un usuario al método este intentará buscarlo en un claim llamado 'UserEmail' y en caso final de no encontrarlo, este asignará el valor de 'no_user_found' al usuario que registrará el log.
Ejemplo
// Registrando un evento suministrando un usuario.
CL.COMMON.LogManager.Commit(Request, "eaguilar@clavisco.com");
// Registrando un evento en el que log manager intentará obtener el usuario del claim.
CL.COMMON.LogManager.Commit(Request);
Commit:void
- System.String._path: Lugar en dónde ocurren los eventos.
- System.String _action: Tipo de operación que nos encontramos realizando.
- System.String _user: Usuario al que se le asignaran los logs.
Este método es exclusivo para escenarios en donde no tenemos un contexto web claro, por ejemplo en un servicio en donde solo necesitamos registrar nuestros eventos y asignarlos al servicio. Por este motivo es requerido pasar estos parámetros de forma manual.
Ejemplo
// Registrando un evento suministrando un usuario.
CL.COMMON.LogManager.Commit("DOCS_SERVICE", "CREATE_DOCUMENTS", "usuario\servicio");
Código completo de implementación
Este código debe ponerse en el controlador o en el llamado de un servicio para que se haga el commit al final del proceso. Y ya luego el método CL.COMMON.LogManger.Record puede ser llamando en la capa que ocupemos para poder registrar nuestros eventos.
try {
CL.COMMON.LogManager.Record("Controlador iniciado");
CLContext<Document> oCLContext = PROCESS.Process.CreteDocument(document);
CL.COMMON.LogManager.Record("Controlador terminado");
return Request.CreateResponse(oCLContext.Code, oCLContext);
}
catch(System.Exception exception) {
CL.STRUCTURES.CLASSES.CLContext oCLContext = new CL.STRUCTURES.CLASSES.CLContext(ex);
CL.COMMON.LogManager.Record(oCLContext.Response.Message);
return Request.CreateResponse(oCLContext.Code,oCLContext);
}
finally {
CL.COMMON.LogManager.Commit(Request, document);
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net46 is compatible. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
.NETFramework 4.6
- CL.STRUCTURES (>= 1.0.0)
- EntityFramework (>= 6.4.4)
- Newtonsoft.Json (>= 13.0.2)
- Serilog (>= 2.12.0)
- Serilog.Sinks.Async (>= 1.5.0)
- Serilog.Sinks.File (>= 5.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on CL.COMMON:
Package | Downloads |
---|---|
CL.PINPAD
Servicios para respado de transacciones pinpad |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.4.2-alpha | 63 | 10/24/2024 |
1.4.1-alpha | 68 | 10/24/2024 |
1.4.0 | 167 | 3/1/2024 |
1.3.1.1 | 135 | 2/2/2024 |
1.3.1 | 119 | 1/26/2024 |
1.3.0 | 110 | 1/19/2024 |
1.2.0 | 362 | 11/28/2023 |
1.1.0.2 | 185 | 10/3/2023 |
1.1.0.1 | 133 | 10/2/2023 |
1.1.0 | 200 | 9/18/2023 |
1.0.17 | 166 | 8/7/2023 |
1.0.16 | 223 | 5/12/2023 |
1.0.14 | 227 | 5/2/2023 |
1.0.13 | 212 | 4/12/2023 |
1.0.12 | 192 | 4/11/2023 |
1.0.11 | 309 | 2/20/2023 |
1.0.10 | 241 | 2/17/2023 |
1.0.9 | 234 | 2/17/2023 |
1.0.8 | 266 | 2/10/2023 |
1.0.6 | 275 | 2/9/2023 |
1.0.5 | 265 | 1/31/2023 |
1.0.4 | 289 | 1/31/2023 |
1.0.3 | 277 | 1/31/2023 |
1.0.2 | 273 | 1/25/2023 |
1.0.1 | 1,234 | 1/18/2023 |
1.0.0 | 858 | 1/17/2023 |