Created
August 8, 2023 14:55
-
-
Save brunogasparetto/21a6d6c2abbbe1d4ea584b2df31f160f to your computer and use it in GitHub Desktop.
Fluig: dataset para pegar os usuários ativos permitindo filtrar por Grupos e Papeis
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Usuários ativos no Fluig | |
* | |
* Dataset para facilitar a busca por usuários ativos que possam ser utilizados | |
* como responsáveis/destinatários de tarefas. | |
* | |
* Se informar uma constraint para groupId (indiferente do tipo, pois sempre vai considerar SHOULD) | |
* ele filtrará somente os usuários desse grupo. Pode-se enviar essa constraint para vários grupos | |
* ao mesmo tempo. | |
* | |
* Se informar uma constraint para roleId (indiferente do tipo, pois sempre vai considerar SHOULD) | |
* ele filtrará somente os usuários desse papel. Pode-se enviar essa constraint para vários papéis | |
* ao mesmo tempo. | |
* | |
* @param {string[]} fields Campos para retornar | |
* @param {Constraint[]} constraints Filtros | |
* @param {string[]} sortFields Campos para ordenar | |
*/ | |
function createDataset(fields, constraints, sortFields) { | |
/** | |
* As constraints que serão realmente enviadas para a consulta | |
* | |
* Por padrão não trará o usuário admin. | |
* | |
* @type {Constraint[]} | |
*/ | |
var filters = [ | |
DatasetFactory.createConstraint("active", "true", "true", ConstraintType.MUST), | |
DatasetFactory.createConstraint("login", "admin", "admin", ConstraintType.MUST_NOT) | |
]; | |
if (constraints != null) { | |
for (var i = 0; i < constraints.length; ++i) { | |
if (constraints[i].fieldName == "groupId") { | |
var usersIds = getUsersIdFromGroupId(constraints[i].initialValue); | |
if (!usersIds.length) { | |
continue; | |
} | |
for (var j = 0; j < usersIds.length; ++j) { | |
filters.push(DatasetFactory.createConstraint( | |
"colleaguePK.colleagueId", | |
usersIds[j], | |
usersIds[j], | |
ConstraintType.SHOULD | |
)); | |
} | |
continue; | |
} else if (constraints[i].fieldName == "roleId") { | |
var usersIds = getUsersIdFromRoleId(constraints[i].initialValue); | |
if (!usersIds.length) { | |
continue; | |
} | |
for (var j = 0; j < usersIds.length; ++j) { | |
filters.push(DatasetFactory.createConstraint( | |
"colleaguePK.colleagueId", | |
usersIds[j], | |
usersIds[j], | |
ConstraintType.SHOULD | |
)); | |
} | |
continue; | |
} | |
filters.push(constraints[i]); | |
} | |
} | |
return DatasetFactory.getDataset("colleague", fields, filters, sortFields); | |
} | |
/** | |
* Pega a matrícula dos usuários do grupo indicado | |
* | |
* @param {string} groupId Código do Grupo | |
* @returns {string[]} | |
*/ | |
function getUsersIdFromGroupId(groupId) { | |
var usersIds = []; | |
var groupService = fluigAPI.getGroupService(); | |
var usuarios = groupService.findUsersByGroup(groupId, null, 10000, 0, ""); | |
for (var i = 0; i < usuarios.size(); ++i) { | |
usersIds.push([usuarios.get(i).getCode()]); | |
} | |
return usersIds; | |
} | |
/** | |
* Pega a matrícula dos usuários do papel indicado | |
* | |
* @param {string} roleId Código do Papel | |
* @returns {string[]} | |
*/ | |
function getUsersIdFromRoleId(roleId) { | |
var usersIds = []; | |
var dataset = DatasetFactory.getDataset( | |
"workflowColleagueRole", | |
["workflowColleagueRolePK.colleagueId"], | |
[ | |
DatasetFactory.createConstraint("workflowColleagueRolePK.colleagueId", "admin", "admin", ConstraintType.MUST_NOT), | |
DatasetFactory.createConstraint("workflowColleagueRolePK.roleId", roleId, roleId, ConstraintType.MUST) | |
], | |
null | |
); | |
for (var i = 0; i < dataset.rowsCount; ++i) { | |
usersIds.push(dataset.getValue(i, "workflowColleagueRolePK.colleagueId")); | |
} | |
return usersIds; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment