Skip to content

Instantly share code, notes, and snippets.

@Isaprez
Forked from roqueneo/Doc.md
Last active March 24, 2023 19:39
Show Gist options
  • Save Isaprez/efd369420ca113b23a523f89c08bc8aa to your computer and use it in GitHub Desktop.
Save Isaprez/efd369420ca113b23a523f89c08bc8aa to your computer and use it in GitHub Desktop.
Test

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. Conexión en 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: Agregar DynamicFilters

Dicha carpeta contiene los archivos que se encargaran del modelado y generación de los filtros. Carpeta DynamicFilters

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.

Modificación namespace

Habrán archivos que tendrán errores. Algunos de estos consistirán en directivas, o referencias, faltantes, como se muestra en la siguiente imagen:

Errores

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:

Errores(1)

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:

Menu contextual

Esto agregará la directiva faltante, y corregirá el error, como se ve en la siguiente imagen:

Directiva faltante

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.

Errores(2)

En el caso del error mostrado arriba, se agregaran los siguientes archivos en la carpeta de Exceptions del proyecto de dominio:

Exzceptions

A estos archivos tambien se les modificará el namespace, y se agregarán directivas faltantes, en caso de haberlas:

Modificación namespace(1)

Una vez hecho esto, se puede corregir el error del archivo faltante agregando la referencia faltante, como se mostro con el error anterior:

Error de archivo faltante

Hay que agregar el archivo StringExtensions.cs dentro de la carpeta Extenders, siguiendo el mismo proceso de modificar el namespace y agregar referencias faltantes.

Carpeta Extenders

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.

StringExtender

De tal manera que la carpeta DynamicFilters contendra los siguientes archivos:

Carpeta DynamicFilters

Dentro del archivo FilterExpressionParser se debe de modificar el DomainBase

FilterExpressionParser

Y para este proyecto debera quedar como se muestra a continuación:

DomainBase

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.

Errores(4))

Quedando como:

DomainBase modificación

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:

Ajuste

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment