diff --git a/entity/Employee_entity/entityfields/email_address/dropDownProcess.js b/entity/Employee_entity/entityfields/email_address/dropDownProcess.js index da419b6e5ea563cb1659058ed6999d65218ce082..1e6f7e670fc70b7c1fcdd6f78318b624d9c9cf07 100644 --- a/entity/Employee_entity/entityfields/email_address/dropDownProcess.js +++ b/entity/Employee_entity/entityfields/email_address/dropDownProcess.js @@ -1,26 +1,26 @@ -import("Communication_lib"); -import("system.neon"); -import("system.vars"); -import("system.db"); -import("system.result"); -import("Sql_lib"); - -var contactId = vars.get("$field.CONTACT_ID"); -if (contactId) -{ - var sql = SqlCondition.begin() - .andPrepare("COMMUNICATION.CONTACT_ID", contactId) - .and("COMMUNICATION.MEDIUM_ID in ('" + CommUtil.getMediumIdsByCategory("EMAIL").join("', '") + "')") - .buildSql("select ADDR, ADDR from COMMUNICATION"); - - var addresses = db.table(sql); - - //include the currently set email address - var currentAddress = vars.get("$field.EMAIL_ADDRESS"); - if (currentAddress && !addresses.some(function (row) {return row[0] == currentAddress;})) - { - addresses.push([currentAddress, currentAddress]); - } - - result.object(addresses); +import("Communication_lib"); +import("system.neon"); +import("system.vars"); +import("system.db"); +import("system.result"); +import("Sql_lib"); + +var contactId = vars.get("$field.CONTACT_ID"); +if (contactId && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)) +{ + var sql = SqlCondition.begin() + .andPrepare("COMMUNICATION.CONTACT_ID", contactId) + .and("COMMUNICATION.MEDIUM_ID in ('" + CommUtil.getMediumIdsByCategory("EMAIL").join("', '") + "')") + .buildSql("select ADDR, ADDR from COMMUNICATION"); + + var addresses = db.table(sql); + + //include the currently set email address + var currentAddress = vars.get("$field.EMAIL_ADDRESS"); + if (currentAddress && !addresses.some(function (row) {return row[0] == currentAddress;})) + { + addresses.push([currentAddress, currentAddress]); + } + + result.object(addresses); } \ No newline at end of file diff --git a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js index 175260510da1e538cf01076746572566e3373f11..61bf29a24123620584dc00946b74a781d10b7f47 100644 --- a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,5 @@ +import("Sql_lib"); +import("system.db"); import("Attribute_lib"); import("system.vars"); import("system.result"); @@ -18,8 +20,11 @@ else users = tools.getUsersByAttribute(tools.ISACTIVE, values, tools.PROFILE_FULL); } +var contactIds = []; users = users.map(function (user) { + contactIds.push(user[tools.PARAMS][tools.CONTACTID]); + return [ user[tools.NAME], user[tools.TITLE], @@ -29,13 +34,28 @@ users = users.map(function (user) user[tools.PARAMS][tools.EMAIL], user[tools.PARAMS][tools.EMAIL], user[tools.DESCRIPTION], - user[tools.PARAMS][tools.CONTACTID], - ContactUtils.getTitleByContactId(user[tools.PARAMS][tools.CONTACTID]), //TODO: get the names more efficiently + user[tools.PARAMS][tools.CONTACTID], //8 + null, //9 user[tools.PARAMS].department, "" ]; }); +var renderer = new ContactTitleRenderer(Contact.createWithColumnPreset(), ContactTitleRenderer.OPTIONS.NoOption); +var selectExpression = renderer.asSql(); + +var names = db.table(SqlCondition.begin() + .andIn("CONTACT.CONTACTID", contactIds) + .buildSql("select CONTACTID, " + selectExpression + " from CONTACT \n\ + left join PERSON on (PERSON.PERSONID = CONTACT.PERSON_ID)") +); +var nameMap = {}; +for (let i = 0, l = names.length; i < l; i++) + nameMap[names[i][0]] = names[i][1]; + +for (let i = 0, l = users.length; i < l; i++) + users[i][9] = nameMap[users[i][8]] || ""; + 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