7.1.6 Creando el Controller para clientes
Agregamos un nuevo controlador de Api en blanco y lo llamamos ClientesController este hereda de la clase ODataController que esta en el espacio de nombres Microsoft.AspNetCore.OData.Routing.Controllers.
Agregamos nuestro constructor para recibir el contexto y nuestro objeto para traducir los mensajes de error.
Agregamos nuestros servicios get y agregamos la opción [EnableQuery] la cual nos permitirá acceder a los datos de los clientes de acuerdo a las reglas de OData.
Para que filtren adecuadamente los servicios por Id el parámetro debe llamarse key.
Podemos agregar directamente en nuestra base de datos algunos registros de cliente para poder realizar el filtrado con OData.
Selecionar solamente unos campos
Probamos con postman seleccionar solamente la clave y nombre del cliente con el parámetro $select seguido de los campos separados por coma que deseas. Para ordenar por algún campo puedes usar el parámetro $orderby seguido del campo y desc si quieres ordenar en forma descendente.
Filtrar los clientes
Puedes filtrar por cualquier campo de la tabla con $filter luego el nombre del campo por el cual deseas filtrar por ejemplo eq para igual y por último entre ' el nombre que deseas buscar. En este ejemplo deseo buscar los clientes cuya dirección es igual a Conocido.
La lista de opciones disponibles es:
Condición | Descripción | Ejemplo |
eq | Igual a | $filter=Direccion eq 'Conocido' |
ne | Diferente | $filter=Clave ne 1 |
gt | Mayor a | $filter=Id gt 4 |
ge | Mayor o igual a | $filter=Clave ge 5 |
lt | Menor que | $filter=Id lt 10 |
le | Menor o igual que | $filter=Clave le 5 |
and | Y lógico | $filter=Clave ge 5 and Activo eq true |
or | O lógico | $filter=Clave gt 5 or Activo eq true |
not | No | $filter=not startswith(RazonSocial,'Farmacia') |
Para buscar un cliente agregando entre paréntesis el id y puedes agregar los parámetros para seleccionar solo algunos campos.
Los servicios para agregar, modificar y borrar se realizan de la misma manera. El código final queda de la siguiente manera:
Last updated