Skip to content
Snippets Groups Projects
Commit 4a2b3a4c authored by S.Listl's avatar S.Listl
Browse files

Employee preset email, roles added

parent 66f755e9
No related branches found
No related tags found
No related merge requests found
Showing
with 118 additions and 60 deletions
import("system.translate");
import("system.vars");
import("system.result");
import("system.tools");
var selectedRole = vars.get("$field.ROLE");
var roles = [];
var allRoles = tools.getAllRoles([tools.ROLE_INTERNAL, tools.ROLE_PROJECT, tools.ROLE_XMPP]);
var excludeRoles = {
......@@ -11,13 +13,15 @@ var excludeRoles = {
"INTERNAL_TECHNICAL" : true
};
var userRoles = tools.getRoles(vars.get("$param.UserTitle_param"));
for (let i in userRoles)
if (vars.get("$field.ROLE") != userRoles[i])
if (tools.existUsers(vars.get("$param.UserTitle_param")))
{
var userRoles = tools.getRoles(vars.get("$param.UserTitle_param"));
for (let i in userRoles)
excludeRoles[userRoles[i]] = true;
}
for (let roleId in allRoles)
if (!excludeRoles[roleId])
roles.push([roleId, allRoles[roleId][0]]);
if (!excludeRoles[roleId] || roleId == selectedRole)
roles.push([roleId, translate.text(allRoles[roleId][0])]);
result.object(roles);
\ No newline at end of file
......@@ -15,14 +15,15 @@
</entityProvider>
<entityField>
<name>UID</name>
<title>Username</title>
<mandatory v="true" />
<onValidation>%aditoprj%/entity/Employee_entity/entityfields/uid/onValidation.js</onValidation>
<searchable v="false" />
<valueProcess>%aditoprj%/entity/Employee_entity/entityfields/uid/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>TITLE_ORIGINAL</name>
<description>the original username, this is required to update the correct user when the username is changed</description>
<searchable v="false" />
<name>TITLE</name>
<title>Username</title>
<mandatory v="true" />
<valueProcess>%aditoprj%/entity/Employee_entity/entityfields/title/valueProcess.js</valueProcess>
<onValidation>%aditoprj%/entity/Employee_entity/entityfields/title/onValidation.js</onValidation>
</entityField>
<entityField>
<name>CONTACT_ID</name>
......@@ -40,6 +41,7 @@
<entityField>
<name>LASTNAME</name>
<title>Lastname</title>
<mandatory v="false" />
<valueProcess>%aditoprj%/entity/Employee_entity/entityfields/lastname/valueProcess.js</valueProcess>
</entityField>
<entityField>
......@@ -53,6 +55,10 @@
<name>EMAIL_ADDRESS</name>
<title>Email</title>
<mandatory v="true" />
<possibleItemsProcess>%aditoprj%/entity/Employee_entity/entityfields/email_address/possibleItemsProcess.js</possibleItemsProcess>
<newItemsAllowed v="true" />
<valueProcess>%aditoprj%/entity/Employee_entity/entityfields/email_address/valueProcess.js</valueProcess>
<onValidation>%aditoprj%/entity/Employee_entity/entityfields/email_address/onValidation.js</onValidation>
</entityField>
<entityField>
<name>PASSWORD</name>
......@@ -210,30 +216,6 @@
</entityParameter>
</children>
</entityConsumer>
<entityConsumer>
<name>StoredSelections</name>
<title>Stored selections</title>
<fieldType>DEPENDENCY_OUT</fieldType>
<dependency>
<name>dependency</name>
<entityName>StoredSelection_entity</entityName>
<fieldName>StoredSelections</fieldName>
</dependency>
<children>
<entityParameter>
<name>Base64String_param</name>
<valueProcess>%aditoprj%/entity/Employee_entity/entityfields/storedselections/children/base64string_param/valueProcess.js</valueProcess>
</entityParameter>
<entityParameter>
<name>UserName_param</name>
<valueProcess>%aditoprj%/entity/Employee_entity/entityfields/storedselections/children/username_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
</entityConsumer>
<entityField>
<name>STORED_SELECTIONS</name>
<searchable v="false" />
</entityField>
<entityProvider>
<name>Employees</name>
<fieldType>DEPENDENCY_IN</fieldType>
......@@ -259,6 +241,10 @@
</entityParameter>
</children>
</entityProvider>
<entityField>
<name>TITLE_ORIGINAL</name>
<searchable v="false" />
</entityField>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
......@@ -270,11 +256,13 @@
<onDelete>%aditoprj%/entity/Employee_entity/recordcontainers/jdito/onDelete.js</onDelete>
<recordFields>
<element>UID.value</element>
<element>TITLE.value</element>
<element>TITLE_ORIGINAL.value</element>
<element>ISACTIVE.value</element>
<element>FIRSTNAME.value</element>
<element>LASTNAME.value</element>
<element>EMAIL_ADDRESS.value</element>
<element>EMAIL_ADDRESS.displayValue</element>
<element>DESCRIPTION.value</element>
<element>CONTACT_ID.value</element>
<element>CONTACT_ID.displayValue</element>
......
import("system.vars");
import("system.result");
result.string(vars.get("$field.CONTACT_ID"));
\ No newline at end of file
result.string(vars.get("$field.UID"));
\ No newline at end of file
import("system.vars");
import("system.result");
result.string(vars.get("$field.CONTACT_ID"));
\ No newline at end of file
result.string(vars.get("$field.UID"));
\ No newline at end of file
import("system.vars");
import("system.result");
result.string(vars.get("$field.CONTACT_ID"));
\ No newline at end of file
result.string(vars.get("$field.UID"));
\ No newline at end of file
import("system.translate");
import("system.neon");
import("system.result");
import("system.vars");
import("system.tools");
import("Entity_lib");
var email = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.EMAIL_ADDRESS"));
if (email != "" && tools.getUsersByAttribute(tools.EMAIL, [email]).length)
result.string(translate.text("Email must be unique!"));
\ No newline at end of file
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 ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
&& 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 (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && currentAddress
&& !addresses.some(function (row) {return row[0] == currentAddress;}))
{
addresses.push([currentAddress, currentAddress]);
}
result.object(addresses);
}
else
result.object([])
import("system.result");
import("system.db");
import("system.neon");
import("system.vars");
import("Sql_lib");
import("Communication_lib");
var contactId = vars.get("$field.CONTACT_ID");
if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
&& contactId && !vars.get("$field.EMAIL_ADDRESS"))
{
var defaultMail = db.cell(SqlCondition.begin()
.andPrepare("CONTACT.CONTACTID", contactId)
.buildSql("select (" + CommUtil.getStandardSubSqlMail() + ") from CONTACT")
);
result.string(defaultMail);
}
\ No newline at end of file
......@@ -5,8 +5,8 @@ import("system.vars");
import("Sql_lib");
var contactId = vars.get("$field.CONTACT_ID");
if ((vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
&& contactId)
if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
&& contactId && !vars.get("$field.FIRSTNAME"))
{
var firstname = db.cell(SqlCondition.begin()
.andPrepare("CONTACT.CONTACTID", contactId)
......
......@@ -2,5 +2,5 @@ import("system.neon");
import("system.vars");
import("system.result");
if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW)
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
result.string("true");
\ No newline at end of file
......@@ -5,8 +5,8 @@ import("system.vars");
import("Sql_lib");
var contactId = vars.get("$field.CONTACT_ID");
if ((vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
&& contactId)
if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
&& contactId && !vars.get("$field.LASTNAME"))
{
var lastname = db.cell(SqlCondition.begin()
.andPrepare("CONTACT.CONTACTID", contactId)
......
import("system.vars");
import("system.result");
result.string(vars.get("$field.STORED_SELECTIONS"));
\ No newline at end of file
import("system.vars");
import("system.result");
result.string(vars.get("$field.UID"));
\ No newline at end of file
......@@ -5,7 +5,7 @@ import("system.vars");
import("system.tools");
import("Entity_lib");
var title = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.UID"));
if (!(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT && title == vars.get("$field.TITLE_ORIGINAL"))
var title = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.TITLE"));
if (!(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && title == vars.get("$field.TITLE_ORIGINAL"))
&& title != "" && tools.existUsers(title))
result.string(translate.text("Username already exists!"));
\ No newline at end of file
import("system.neon");
import("system.vars");
import("system.result");
import("Employee_lib");
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && !vars.get("$field.TITLE"))
result.string(EmployeeUtils.generateUserName(vars.get("$field.FIRSTNAME"), vars.get("$field.LASTNAME"), "f.l+"));
\ No newline at end of file
import("system.neon");
import("system.vars");
import("system.result");
if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
&& vars.get("$field.TITLE"))
result.string(vars.get("$field.TITLE"));
\ No newline at end of file
......@@ -4,6 +4,7 @@ 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"))
......@@ -19,12 +20,14 @@ else
users = users.map(function (user)
{
return [
user[tools.TITLE],
user[tools.TITLE],
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],
ContactUtils.getTitleByContactId(user[tools.PARAMS][tools.CONTACTID]), //TODO: get the names more efficiently
......@@ -35,7 +38,7 @@ users = users.map(function (user)
var filter = vars.exists("$local.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
users = JditoFilterUtils.filterRecords(["UID", "", "ISACTIVE", "FIRSTNAME", "LASTNAME", "EMAIL_ADDRESS", "DESCRIPTION", "CONTACT_ID", "", ], users, filter);
users = JditoFilterUtils.filterRecords(["UID", "TITLE", "TITLE_ORIGINAL", "ISACTIVE", "FIRSTNAME", "LASTNAME", "EMAIL_ADDRESS", "DESCRIPTION", "CONTACT_ID", ""], users, filter);
ArrayUtils.sort2d(users, 0, true, false); //sort by username
......
......@@ -4,5 +4,5 @@ import("system.tools");
import("Employee_lib");
//TODO: the current user should not delete himself, put this condition in grantDelete when available
if (EmployeeUtils.getCurrentUserName() != vars.get("$field.UID"))
tools.deleteUser(vars.get("$field.UID"));
\ No newline at end of file
if (EmployeeUtils.getCurrentUserName() != vars.get("$field.TITLE") && !EmployeeUtils.hasRelations(vars.get("$field.CONTACT_ID")))
tools.deleteUser(vars.get("$field.TITLE"));
\ No newline at end of file
import("system.neon");
import("system.vars");
import("system.tools");
import("Employee_lib");
var user = {};
var params = []; //this has to be an array
......@@ -12,7 +13,7 @@ params[tools.CONTACTID] = vars.get("$field.CONTACT_ID");
params[tools.DESCRIPTION] = vars.get("$field.DESCRIPTION");
params[tools.ISACTIVE] = vars.get("$field.ISACTIVE");
user[tools.TITLE] = vars.get("$field.UID");
user[tools.TITLE] = vars.get("$field.TITLE");
user[tools.PARAMS] = params;
if (vars.get("$field.PASSWORD") && vars.get("$field.PASSWORD") == vars.get("$field.CONFIRM_PASSWORD"))
......
......@@ -18,10 +18,9 @@ FieldChanges.assimilateChangeAndDispose("$field.IMAGE", function (state, value)
PersUtils.removeImage(personId);
});
var user = {};
user[tools.PARAMS] = [];
var user = tools.getUser(vars.get("$field.TITLE_ORIGINAL"));
user[tools.TITLE] = vars.get("$field.UID");
user[tools.TITLE] = vars.get("$field.TITLE");
user[tools.PARAMS][tools.ISACTIVE] = vars.get("$field.ISACTIVE");
user[tools.PARAMS][tools.FIRSTNAME] = vars.get("$field.FIRSTNAME");
user[tools.PARAMS][tools.LASTNAME] = vars.get("$field.LASTNAME");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment