Esta documentación nos muestra como preparar el backend para generar filtros de manera dinámica para conectarlo con el componente de tabla del frontend(ver articulo link pendiente). hola ponchito En este punto considere que ya tiene configurado su proyecto de backend con al menos un controlador. Tendra que ser como se muestra a continuación.
{
/// <summary>
/// Budgets controller
/// </summary>
[IdentityUserInfo]
[RoutePrefix("budgets")]
public class BudgetsController : BaseApiController
{
/// <summary>
/// Constructor
/// </summary>
/// <param name="logger"></param>
/// <param name="mediator"></param>
public BudgetsController(ILog logger, IMediator mediator)
: base(logger, mediator)
{ }
/// <summary>
/// Get a list of budgets with filters
/// </summary>
/// <returns></returns>
[HttpGet, Route("")]
public IHttpActionResult Search()
{
throw new System.NotImplementedException();
}
}
}
Para verificar el funcionamiento del endpoint se modifico la función search de la siguiente manera.
/// <summary>
/// Get a list of budgets with filters
/// </summary>
/// <returns></returns>
[HttpGet, Route("")]
public IHttpActionResult Search()
{
return Ok();
}
Posteriormente se verifica la conexión del endpoint con el programa POSTMAN.
Ahora para la configuración base de los filtros, se copia de este repositorio la carpeta de DynamicFilters, y se incluye dentro del proyecto dominio de la solución en que se este trabajando, como se muestra a continuación:
Dicha carpeta contiene los archivos que se encargaran del modelado y generación de los filtros.
Es necesario modificar el namespace dentro de cada archivo de la carpeta, para que se ajuste al proyecto en que se está trabajando, como se muestra en la siguiente imagen con el archivo CatalogOption.cs.
Habrán archivos que tendrán errores. Algunos de estos consistirán en directivas, o referencias, faltantes, como se muestra en la siguiente imagen:
Estos errores pueden corregirse al dejar el cursor sobre el error o (Ctrl + .)
, lo cual permitirá hacer click sobre el icono de "Acciones rápidas y refactorizaciones", marcado con el recuadro rojo en la siguiente imagen:
Al hacer click sobre el icono, se abrirá un menú contextual. De este menú, usualmente se selecciona la primera opción, resaltado con el recuadro rojo en la siguiente imagen:
Esto agregará la directiva faltante, y corregirá el error, como se ve en la siguiente imagen:
Este proceso se repetira para cada uno de los errores con la finalidad de incluir las referencias faltantes.
Otros errores consisten en archivos faltantes que también deberán agregarse al proyecto, los cuales estarán también dentro del repositorio.
En el caso del error mostrado arriba, se agregaran los siguientes archivos en la carpeta de Exceptions del proyecto de dominio:
A estos archivos tambien se les modificará el namespace, y se agregarán directivas faltantes, en caso de haberlas:
Una vez hecho esto, se puede corregir el error del archivo faltante agregando la referencia faltante, como se mostro con el error anterior:
Hay que agregar el archivo StringExtensions.cs dentro de la carpeta Extenders, siguiendo el mismo proceso de modificar el namespace y agregar referencias faltantes.
Si ya existe un archivo en la carpeta mencionada y que también sea un extender de strings, quedara a consideración de quien sigue esta guia el copiar el contenido del archivo "StringExtensions" (el archivo del repositorio) dentro del archivo StringExtender (o similar), o crear el archivo StringExtensions, tal que existan ambos archivos.
De tal manera que la carpeta DynamicFilters contendra los siguientes archivos:
Dentro del archivo FilterExpressionParser se debe de modificar el DomainBase
Y para este proyecto debera quedar como se muestra a continuación:
Es posible que nos encontremos con errores como los que se muestran, para resolver los conflictos presentados debemos modificar la referencia al objeto de dominio base en esas funciones.
Quedando como:
Dependiendo de la versión de lenguaje de programación que se este usando posiblemente sea necesario realizar algunos ajustes, como se muestra en la siguiente imagen: