Skip to content
Snippets Groups Projects
Verified Commit 5bc6462d authored by Pascal Neub's avatar Pascal Neub
Browse files

[Projekt: xRM-Sales][TicketNr.: 2001202][Gebietszuordnung legt System lahm]

parent df2e9e0d
No related branches found
No related tags found
No related merge requests found
......@@ -14663,6 +14663,10 @@ Bitte Datumseingabe prüfen</value>
<key>Valid from (as %0)</key>
<value>Gültig von (in %0)</value>
</entry>
<entry>
<key>You were assigned as new district contact to district %0 and %1 organisation(s).</key>
<value>Sie wurden Distrikt %0 und %1 Organisation(en) als neuer Distriktkontakt zugewiesen.</value>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
</language>
......@@ -119,8 +119,12 @@ DistrictUtils.assignDistrictOnServer = function (pArrDistrictIds, pUser, pContac
*/
DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId)
{
if (pContactId == undefined)
if(pContactId == undefined)
{
pContactId = null;
}
var districtName = DistrictUtils.getDistrictName(pDistrictId);
var newAssigned = 0;
var unchanged = 0;
......@@ -158,24 +162,24 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
}
var colsInsert = [
"DISTRICTCONTACTID",
"CONTACT_ID",
"DISTRICT_ID",
"ADVISER_CONTACT_ID",
"ADVISER_ROLE",
"STATUS",
"VALID_FROM",
"VALID_UNTIL",
"ORIGIN",
"VISITFREQUENCY",
"USER_NEW",
"DATE_NEW"
"DISTRICTCONTACTID",
"CONTACT_ID",
"DISTRICT_ID",
"ADVISER_CONTACT_ID",
"ADVISER_ROLE",
"STATUS",
"VALID_FROM",
"VALID_UNTIL",
"ORIGIN",
"VISITFREQUENCY",
"USER_NEW",
"DATE_NEW"
];
var colsUpdate = [
"STATUS",
"USER_EDIT",
"DATE_EDIT"
"STATUS",
"USER_EDIT",
"DATE_EDIT"
];
//create districtContact datasets
......@@ -193,8 +197,8 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
if(!pContactId)
{
arrExistingEntries = new SqlBuilder()
.select(["DISTRICTCONTACT.DISTRICT_ID", "DISTRICTCONTACT.CONTACT_ID", "DISTRICTCONTACT.ADVISER_CONTACT_ID", "DISTRICTCONTACT.DISTRICTCONTACTID"
, "DISTRICTCONTACT.STATUS", "DISTRICTCONTACT.ADVISER_ROLE", "DISTRICTCONTACT.VISITFREQUENCY", "DISTRICTCONTACT.VALID_FROM", "DISTRICTCONTACT.VALID_UNTIL"])
.select(["DISTRICTCONTACT.DISTRICT_ID", "DISTRICTCONTACT.CONTACT_ID", "DISTRICTCONTACT.ADVISER_CONTACT_ID", "DISTRICTCONTACT.DISTRICTCONTACTID",
"DISTRICTCONTACT.STATUS", "DISTRICTCONTACT.ADVISER_ROLE", "DISTRICTCONTACT.VISITFREQUENCY", "DISTRICTCONTACT.VALID_FROM", "DISTRICTCONTACT.VALID_UNTIL"])
.from("DISTRICTCONTACT")
.where("DISTRICTCONTACT.DISTRICT_ID", pDistrictId)
.and("DISTRICTCONTACT.ADVISER_CONTACT_ID", resContactId)
......@@ -203,14 +207,17 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
}
//create associative object so we don't have too loop trough an array to check wheter or not exisiting Entries already exist.
for (var aee = 0; aee < arrExistingEntries.length; aee++) {
for (var aee = 0; aee < arrExistingEntries.length; aee++)
{
//existingEnriesObject[DISTRICT_ID + CONTACT_ID + ADVISER_CONTACT_ID] = [ID, STATUS]
existingEnriesObject[ arrExistingEntries[aee][0] + arrExistingEntries[aee][1] + arrExistingEntries[aee][2] ] = {"districtContactId": arrExistingEntries[aee][3]
, "status": arrExistingEntries[aee][4]
, "role": arrExistingEntries[aee][5]
, "visitFrequency" : arrExistingEntries[aee][6]
, "vlaidFrom" : arrExistingEntries[aee][7]
, "vlaidUntil" : arrExistingEntries[aee][8]};
existingEnriesObject[ arrExistingEntries[aee][0] + arrExistingEntries[aee][1] + arrExistingEntries[aee][2] ] = {
"districtContactId": arrExistingEntries[aee][3],
"status": arrExistingEntries[aee][4],
"role": arrExistingEntries[aee][5],
"visitFrequency": arrExistingEntries[aee][6],
"vlaidFrom": arrExistingEntries[aee][7],
"vlaidUntil": arrExistingEntries[aee][8]
};
}
for (var i = 0; i < arrOrgContactIds.length; i++)
......@@ -219,26 +226,27 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
//insert new assignments
var valsInsert = [
util.getNewUUID(),
arrOrgContactIds[i],
pDistrictId,
resContactId,
resRole,
newResStatus,
resValidFrom,
resValidUntil,
$KeywordRegistry.districtOrigin$auto(), //origin
resVisitFrequency,
vars.get("$sys.user"),
vars.get("$sys.date")
];
util.getNewUUID(),
arrOrgContactIds[i],
pDistrictId,
resContactId,
resRole,
newResStatus,
resValidFrom,
resValidUntil,
$KeywordRegistry.districtOrigin$auto(), //origin
resVisitFrequency,
vars.get("$sys.user"),
vars.get("$sys.date")
];
//association = DISTRICT_ID + CONTACT_ID + ADVISER_CONTACT_ID
var existingEntryAssoz = pDistrictId + arrOrgContactIds[i] + arrResponsibleIds[j][0];
var checkexistingEntry = existingEnriesObject[existingEntryAssoz]; //existingEnriesObject[pDistrictId + arrOrgContactIds[i] + arrResponsibleIds[j][0]]
//check associative Array
if (checkexistingEntry == undefined) { //insert missing entries
if (checkexistingEntry == undefined) //insert missing entries
{
newAssigned++
insertArray.push(["DISTRICTCONTACT", colsInsert, null, valsInsert]);
}
......@@ -249,59 +257,73 @@ DistrictUtils.assignDistrict = function (pDistrictId, pAppliedFilter, pContactId
{
updated++;
updateStatements.push(newWhere("DISTRICTCONTACT.DISTRICTCONTACTID", checkexistingEntry["districtContactId"]).buildUpdateStatement({
"ADVISER_ROLE": resRole,
"STATUS": newResStatus,
"VALID_FROM": resValidFrom,
"VALID_UNTIL": resValidUntil,
"VISITFREQUENCY": resVisitFrequency,
"USER_EDIT": vars.get("$sys.user"),
"DATE_EDIT": vars.get("$sys.date")
})
)
"ADVISER_ROLE": resRole,
"STATUS": newResStatus,
"VALID_FROM": resValidFrom,
"VALID_UNTIL": resValidUntil,
"VISITFREQUENCY": resVisitFrequency,
"USER_EDIT": vars.get("$sys.user"),
"DATE_EDIT": vars.get("$sys.date")
})
);
//delete from Object (we need to use association here) to sieve for invalid entries
delete existingEnriesObject[existingEntryAssoz];
}
else if (checkexistingEntry != undefined){ //don't touch existing entries with valid status
else if (checkexistingEntry != undefined) //don't touch existing entries with valid status
{
unchanged++;
//delete from Object (we need to use association here) to sieve for invalid entries
delete existingEnriesObject[existingEntryAssoz];
}
}
}
}
//invalid entries (Assignments, that where already exisitng, but don't fit into said district because of changes -> set status to "In review")
for (index in existingEnriesObject) {
for (index in existingEnriesObject)
{
invalid++;
existingEntryId = existingEnriesObject[index]["districtContactId"];
updateStatements.push(newWhere("DISTRICTCONTACT.DISTRICTCONTACTID", existingEntryId).buildUpdateStatement({
"STATUS": $KeywordRegistry.contactStatus$inReview(),
"USER_EDIT": vars.get("$sys.user"),
"DATE_EDIT": vars.get("$sys.date")
})
)
"STATUS": $KeywordRegistry.contactStatus$inReview(),
"USER_EDIT": vars.get("$sys.user"),
"DATE_EDIT": vars.get("$sys.date")
})
);
}
var pageSize = 5000;//paging to prevent timeouts
while(insertArray.length > pageSize)
{
{
db.inserts(insertArray.splice(0, pageSize), "Data_alias", 6 * datetime.ONE_MINUTE);
}
}
db.inserts(insertArray);
while(updateStatements.length > pageSize)
{
db.execute(updateStatements.splice(0, pageSize), "Data_alias", 6 * datetime.ONE_MINUTE);
}
}
db.execute(updateStatements);
}
// notifications
var user = tools.getUserByAttribute(tools.CONTACTID, resContactId, tools.PROFILE_DEFAULT);
if(user)
{
var message = translate.text("Assignment to a new district/company!");
var description = translate.withArguments("You were assigned as new district contact to district %0 and %1 organisation(s).", [districtName, arrOrgContactIds.length]);
notification.addNotification(
util.getNewUUID(), text.encodeMS(["District", pDistrictId]), null, null, "DistrictAssigned",
notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user[tools.NAME]], message, description
);
}
}
return {
newAssigned : newAssigned,
invalid : invalid,
unchanged : unchanged,
newAssigned: newAssigned,
invalid: invalid,
unchanged: unchanged,
updated: updated
};
};
}
/**
......@@ -446,32 +468,3 @@ DistrictUtils.setDistrictContactStatus = function (pArrIds, pStatus)
}
db.updates(updateArray);
}
/**
* This function will notificate the district contact that he/she was assigned
*
* @param {String} pDistrictContactId <p>
* DistrictContact-ID of the new Dataset<br>
* @return <none> <p>
*/
DistrictUtils.notificateNewDistrictContact = function(pDistrictContactId){
message = translate.text("Assignment to a new district/company!");
//[0]: DISTRICT_ID, [1]: ADVISER_CONTACT_ID, [2]: CONTACT_ID
var arrayDistrictContact = DistrictUtils.getDataFromDistrictContact(pDistrictContactId);
//get corresponding profile information of the systemalias
var user = tools.getUserByAttribute(tools.CONTACTID, arrayDistrictContact[1], tools.PROFILE_DEFAULT);
//You can only send a notification, if the user is an employee
if (user)
{
var userName = user[tools.NAME];
var districtName = DistrictUtils.getDistrictName(arrayDistrictContact[0]);
var organisationName = ContactUtils.getFullTitleByContactId(arrayDistrictContact[2]);
// Benachrichtigung am Ende der Zuordnungen
description = translate.withArguments("You were assigned as new district contact to district %0 and organisation %1.",
[districtName, organisationName]);
notification.addNotification(util.getNewUUID(), text.encodeMS(["Organisation", arrayDistrictContact[2]]), null, null, "DistrictAssigned", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userName], message, description);
}
}
......@@ -25,17 +25,6 @@ if (sqlAction != 'X')
}
}
if(sqlAction == 'I' && tableName == 'DISTRICTCONTACT'){
try
{
DistrictUtils.notificateNewDistrictContact(id);
}
catch(err)
{
logging.log("Error while district notification:" + err);
}
}
try
{
(new AuditUpdateSyncEntries(tableName, userLogin, columns, newvalues, oldvalues, timestamp, sqlAction, id)).execute();
......
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