2 weeks ago
i have the following rule as a QueryOption in an ObjectTable:
import EstadoFormTextoACodigo from "./EstadoFormTextoACodigo";
/**
* Construye un QueryOptions dinámico que filtra eventos según los correos de los participantes y el correo del usuario logueado.
* @Param {IClientAPI} clientAPI
*/
export default async function FiltradoEventosEvaluador(clientAPI) {
// Filtro para listar los eventos donde el usuario Logueado es el evaluador
let pageProxy = clientAPI.getPageProxy();
let appClientDataFn = pageProxy.getAppClientData();
let rolSelected = appClientDataFn.rolNomSelected;
let idPerRolSelected = appClientDataFn.idPerRol;
let searchEventos = clientAPI.searchString;
console.log("search eventos",searchEventos)
if (searchEventos && searchEventos!=""){
let queryBuilder = clientAPI.dataQueryBuilder();
queryBuilder.expand('idFlota','idFlota($expand=idFilial)','idFormularioB','idFormularioB($expand=idNotaFinal)','idFormularioB($expand=idTipoFormulario)','eventoUsu','eventoUsu($expand=idPerRol)','eventoUsu($expand=idPerRol($expand=idPersona))','perRol','perRol($expand=idPersona)');
if(rolSelected == "Evaluador")
{
let filterIni = `estadoEvento ne 0 and idEvaluador eq '${idPerRolSelected}'`;
console.log(filterIni)
let filterSearch = queryBuilder.filterTerm(`${filterIni} and (contains(tolower(idFlota/idFilial/nombreFilial),tolower('${searchEventos}')) or contains(tolower(idFlota/nombreFlota),tolower('${searchEventos}')) or contains(tolower(idFormularioB/idTipoFormulario/nombreTipoFormulario),tolower('${searchEventos}')) or contains(tolower(idFormularioB/nombreFormulario),tolower('${searchEventos}')) or contains(fechaEvento,'${searchEventos}') or contains(tolower(eventoUsu/idPerRol/idPersona/nombre),tolower('${searchEventos}')) or contains(tolower(eventoUsu/idPerRol/idPersona/apellido),tolower('${searchEventos}')) or contains(estadoEvento,'${EstadoFormTextoACodigo(clientAPI,searchEventos)}') or contains(tolower(idFormularioB/idNotaFinal/nombreNota),tolower('${searchEventos}')))`)
console.log(filterSearch)
queryBuilder.filter(filterSearch);
queryBuilder.orderBy('estadoEvento asc');
console.log('query Builder', queryBuilder.debugString)
return queryBuilder;
}
else if(rolSelected == "Builder")
{
let filterIni = `estadoEvento ne 0`;
console.log(filterIni)
let filterSearch = queryBuilder.filterTerm(`${filterIni} and (contains(tolower(idFlota/idFilial/nombreFilial),tolower('${searchEventos}')) or contains(tolower(idFlota/nombreFlota),tolower('${searchEventos}')) or contains(tolower(idFormularioB/idTipoFormulario/nombreTipoFormulario),tolower('${searchEventos}')) or contains(tolower(idFormularioB/nombreFormulario),tolower('${searchEventos}')) or contains(fechaEvento,'${searchEventos}') or contains(tolower(eventoUsu/idPerRol/idPersona/nombre),tolower('${searchEventos}')) or contains(tolower(eventoUsu/idPerRol/idPersona/apellido),tolower('${searchEventos}')) or contains(estadoEvento,'${EstadoFormTextoACodigo(clientAPI,searchEventos)}') or contains(tolower(idFormularioB/idNotaFinal/nombreNota),tolower('${searchEventos}')))`)
console.log(filterSearch)
queryBuilder.filter(filterSearch);
queryBuilder.orderBy('estadoEvento asc');
console.log('query Builder', queryBuilder.debugString)
return `$expand=idFlota,idFlota($expand=idFilial),idFormularioB,idFormularioB($expand=idNotaFinal),idFormularioB($expand=idTipoFormulario),eventoUsu,eventoUsu($expand=idPerRol),eventoUsu($expand=idPerRol($expand=idPersona)),perRol,perRol($expand=idPersona)&$filter=estadoEvento ne 0 and (contains(tolower(idFlota/idFilial/nombreFilial),tolower('${searchEventos}')) or contains(tolower(idFlota/nombreFlota),tolower('${searchEventos}')) or contains(tolower(idFormularioB/idTipoFormulario/nombreTipoFormulario),tolower('${searchEventos}')) or contains(tolower(idFormularioB/nombreFormulario),tolower('${searchEventos}')) or contains(fechaEvento,'${searchEventos}') or contains(tolower(eventoUsu/idPerRol/idPersona/nombre),tolower('${searchEventos}')) or contains(tolower(eventoUsu/idPerRol/idPersona/apellido),tolower('${searchEventos}')) or contains(estadoEvento,'${EstadoFormTextoACodigo(clientAPI,searchEventos)}') or contains(tolower(idFormularioB/idNotaFinal/nombreNota),tolower('${searchEventos}')))&$orderby=estadoEvento asc`
}
}else{
if(rolSelected == "Evaluador")
{
return `$expand=idFlota,idFlota($expand=idFilial),idFormularioB,idFormularioB($expand=idNotaFinal),idFormularioB($expand=idTipoFormulario),eventoUsu,eventoUsu($expand=idPerRol),eventoUsu($expand=idPerRol($expand=idPersona)),perRol,perRol($expand=idPersona)&$filter=estadoEvento ne 0 and idEvaluador eq '${idPerRolSelected}'&$orderby=estadoEvento asc`;
}
else if(rolSelected == "Builder")
{
return `$expand=idFlota,idFlota($expand=idFilial),idFormularioB,idFormularioB($expand=idNotaFinal),idFormularioB($expand=idTipoFormulario),eventoUsu,eventoUsu($expand=idPerRol),eventoUsu($expand=idPerRol($expand=idPersona)),perRol,perRol($expand=idPersona)&$filter=estadoEvento ne 0&$orderby=estadoEvento asc`;
}
}
// console.log("------------------- IDPERROL ------------------------");
// console.log(idPerRolSelected);
// console.log("------------------- ROLLLLLLLLLLLLL ------------------------");
// console.log(rolSelected);
}
The lines 15-37 work as a filter when the searchString has a value. In lines 15-26 you can find the original queryBuilder that works on Android and filters all the columns and is not case sensitive, but does nothing on IOS. In line 37 i wrote the whole queryBuilder as a string, this implementation works partially, only on the columns nombreFlota and nombreFormulario and is case sensitive. So i want to ask, is there a way for any of these two implementations to work as intended in IOS? what would i have to change?
Request clarification before answering.
I suspect you will need to adjust the filter parameters to properly match with your OData server data types.
I see you have opened a support ticket for this issue as well. We will respond further via the ticket.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
50 | |
10 | |
8 | |
6 | |
5 | |
5 | |
5 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.