Something went wrong on our end
contentProcess.js 3.34 KiB
import("Sql_lib");
import("system.db");
import("Attribute_lib");
import("system.vars");
import("system.result");
import("system.tools");
import("Util_lib");
import("Contact_lib");
import("JditoFilter_lib");
import("Employee_lib");
var users;
if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
users = tools.getUsersByAttribute(tools.NAME, vars.get("$local.idvalues"), tools.PROFILE_FULL);
else
{
var values = ["true", "false"];
if (vars.exists("$param.OnlyActives_param") && vars.get("$param.OnlyActives_param") == "true")
values = ["true"];
users = tools.getUsersByAttribute(tools.ISACTIVE, values, tools.PROFILE_DEFAULT);
}
users = users.map(function (user)
{
return [
user[tools.NAME],
user[tools.TITLE],
user[tools.PARAMS][tools.ISACTIVE],
user[tools.PARAMS][tools.FIRSTNAME],
user[tools.PARAMS][tools.LASTNAME],
user[tools.PARAMS][tools.EMAIL],
user[tools.PARAMS][tools.EMAIL],
user[tools.DESCRIPTION],
user[tools.PARAMS][tools.CONTACTID], //8
user[tools.PARAMS].department,
"", //password
"", //confirm_password
user[tools.ROLENAMES], //for filtering
EmployeeUtils.sliceUserId(user[tools.NAME]),
user[tools.PARAMS][tools.PHONE_ADDRESS]
];
});
var filter = vars.get("$local.filter");
//TODO: this is a workaround that filters the records manually, it should be possible to filter the users with a tools.* method
var filterFields = ["UID", "TITLE", "ISACTIVE", "FIRSTNAME", "LASTNAME", "EMAIL_ADDRESS", "", "DESCRIPTION", "CONTACT_ID", "DEPARTMENT", "", "", "ROLE_FILTER", "$$$LOOKUPFIELD$$$"];
var filterFns = {
"ROLE_FILTER" : function (pRecordVal, pFilterVal, pOperator)
{
if (!pRecordVal)
pRecordVal = [];
switch (pOperator)
{
case "EQUAL":
return pRecordVal.indexOf(pFilterVal) !== -1;
case "NOT_EQUAL":
return pRecordVal.indexOf(pFilterVal) === -1;
case "ISNULL":
return pRecordVal.length === 0;
case "ISNOTNULL":
return pRecordVal.length !== 0;
default:
return false;
}
},
"$$$LOOKUPFIELD$$$" : function (pRecordValue, pFilterValue, pOperator, pRow)
{
if (pOperator == "CONTAINS")
{
pRow = [pRow[1], pRow[3], pRow[4], pRow[5]];
var filterValues = pFilterValue.split(" ").filter(function (val) {return val.trim();});
return filterValues.every(function (filterValue)
{
return pRow.some(function (fieldValue)
{
return (new RegExp(filterValue, "i")).test(fieldValue);
});
});
}
return false;
}
};
users = JditoFilterUtils.filterRecords(filterFields, users, filter.filter, filterFns);
var order = vars.get("$local.order");
var columnOrder = {
"TITLE.value" : 1,
"ISACTIVE.value" : 2,
"FIRSTNAME.value" : 3,
"LASTNAME.value" : 4
};
var sortOrder = [];
for (let field in order)
{
if (field in columnOrder)
{
sortOrder.push(columnOrder[field]);
sortOrder.push(order[field] == "DOWN");
}
}
if (!sortOrder.length) //sort by login by default
sortOrder = [1, false];
ArrayUtils.sortMulti(users, sortOrder);
result.object(users);