Skip to content
Snippets Groups Projects
Commit a7ed8497 authored by Andre Loreth's avatar Andre Loreth
Browse files

#1051579: Organisation_lib: Add #buildOrgReport(...) function and use...

#1051579: Organisation_lib: Add #buildOrgReport(...) function and use neon.openContext(...) for #openOrgReport(...)
parent 2f284c74
No related branches found
No related tags found
No related merge requests found
import("system.neon");
import("Util_lib");
import("system.datetime");
import("system.translate");
......@@ -14,7 +15,7 @@ import("KeywordRegistry_basic");
/**
* a static Utility class for the Org context.
*
*
* Do not create an instance of this!
* @class
*/
......@@ -22,7 +23,7 @@ function OrgUtils() {}//TODO: there exsits a OrgUtils and OrganisationUtils, thi
/**
* checks if a organisationid is the id of the dummy organisation "private"
*
*
* @param {String} pOrganisationId the id that shall be checked
*
* @return {boolean} true if passed organisationid is organisationid of the dummy organisation "private"
......@@ -35,7 +36,7 @@ OrgUtils.isPrivateOrganisationId = function(pOrganisationId)
/**
* checks if a organsations contactid is the id of the dummy organisation "private"
*
*
* @param {String} pOrganisationContactId the id that shall be checked
*
* @return {boolean} true if passed contactid is the contactid of the dummy organisation "private"
......@@ -48,7 +49,7 @@ OrgUtils.isPrivateOrganisationContactId = function(pOrganisationContactId)
/**
* returns the image for a organisation
*
*
* @return {String} hard coded organisationid of the dummy organisation "private"
*/
OrgUtils.getPrivateOrganisationId = function()
......@@ -59,7 +60,7 @@ OrgUtils.getPrivateOrganisationId = function()
/**
* returns the image for a organisation
*
*
* @param {String} pOrgId the id of the organisation.
* @param {String} pDefaultText the text, to use for default image generation.
* @return {String} base64 coded String of the image. If none existed, the given String is used to create an image.
......@@ -71,7 +72,7 @@ OrgUtils.getImage = function(pOrgId, pDefaultText)
/**
* sets the image of a organisation
*
*
* @param {String} pOrgId the id of the organisation.
* @param {String} pImageDateBase64 base64 coded String of the image.
* @return {Boolean} if image could be set
......@@ -83,7 +84,7 @@ OrgUtils.setImage = function(pOrgId, pImageDateBase64)
/**
* deletes the image of a organisation
*
*
* @param {String} pOrgId the id of the organisation.
* @return {Boolean} if image could be removed
*/
......@@ -93,33 +94,33 @@ OrgUtils.removeImage = function(pOrgId)
}
/**
* opens the org-report
*
* Builds the Organisation report.
*
* @param {String} pOrgId the id of the organization
* @param {String} pContactId the OrganisationContactId
*/
OrgUtils.openOrgReport = function(pOrgId, pContactId)
OrgUtils.buildOrgReport = function(pOrgId, pContactId)
{
//org info
var info = newSelect("ORGANISATION.INFO")
.from("ORGANISATION")
.where("ORGANISATION.ORGANISATIONID", pOrgId)
.cell();
//communication data of the organization
var commData = newSelect("MEDIUM_ID, ADDR")
.from("COMMUNICATION")
.where("COMMUNICATION.CONTACT_ID", pContactId)
.and("ISSTANDARD = 1")
.table();
//resolve keyword
commData.forEach(function (row)
{
row[0] = KeywordUtils.getViewValue($KeywordRegistry.communicationMedium(), row[0]);
});
commData = ReportData.begin(["KINDOFCOMM", "COMMVALUE"]).add(commData);
//select people from the organization
var persData = newSelect("SALUTATION, TITLE, FIRSTNAME, LASTNAME "
+ ",CONTACTROLE as PERSFUNCITON, DEPARTMENT as PERSDEPARTMENT "
......@@ -129,10 +130,10 @@ OrgUtils.openOrgReport = function(pOrgId, pContactId)
.from("PERSON")
.join("CONTACT", "PERSONID = PERSON_ID")
.where("CONTACT.ORGANISATION_ID", pOrgId)
.and("CONTACT.STATUS", $KeywordRegistry.contactStatus$active())
.and("CONTACT.STATUS", $KeywordRegistry.contactStatus$active())
.orderBy("PERSON.LASTNAME asc")
.table();
for (let i = 0; i < persData.length; i++)
{
_joinArrayVals(persData[i], 0, 4); //join the full name together
......@@ -148,28 +149,28 @@ OrgUtils.openOrgReport = function(pOrgId, pContactId)
.where("ACTIVITYLINK.OBJECT_ROWID", pContactId)
.and("ACTIVITYLINK.OBJECT_TYPE", "Organisation")
.orderBy("ENTRYDATE desc");
var activityData = activityQuery.table()
var dateFormat = translate.text("dd.MM.yyyy");
activityData.forEach(function (row)
activityData.forEach(function (row)
{
row[0] = datetime.toDate(row[0], dateFormat);
// convert html to text
row[4] = text.html2text(row[4]);
row[1] = KeywordUtils.getViewValue($KeywordRegistry.activityCategory(), row[1]);
_joinArrayVals(row, 2, 2);
});
activityData = ReportData.begin(["ENTRYDATE", "MEDIUM", "LOGIN", "INFO"]).add(activityData);
var attr = new AttributeRelationQuery(pOrgId)
.includeDisplayValue()
.includeFullAttributeName()
.getAttributes()
.map(function (row) {return row.value ? row.fullAttributeName + ": " + row.displayValue : row.fullAttributeName})
.join("\n");
//tasks
var taskData = newSelect("TASK.SUBJECT, TASK.DESCRIPTION, TASK.STATUS, FIRSTNAME, LASTNAME")
.from("TASK")
......@@ -177,28 +178,28 @@ var activityData = activityQuery.table()
.leftJoin("PERSON", "CONTACT.PERSON_ID = PERSONID")
.where("CONTACT.ORGANISATION_ID", pOrgId)
.table();
taskData.forEach(function (row)
taskData.forEach(function (row)
{
row[2] = KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), row[2]);
_joinArrayVals(row, 3, 2); //join FIRSTNAME and LASTNAME together
});
taskData = ReportData.begin(["SUBJECT", "INFOTEXT", "STATUS", "RESPONSIBLE"]).add(taskData);
var params = {
"ORGAddr" : AddressUtils.getAddress(pContactId).toString(), //TODO: use new address logic when available
"ORGAttr" : attr,
"INFO" : info
};
var orgReport = new Report("Organisation_report", params);
//add subreport data
orgReport.addSubReportData("subdataComm", commData);
orgReport.addSubReportData("subdataPers", persData);
orgReport.addSubReportData("subdataHist", activityData);
orgReport.addSubReportData("subdataTask", taskData);
//add logo
//TODO: use an function to get the image when available
var imgData = [
......@@ -207,9 +208,10 @@ var activityData = activityQuery.table()
];
params["myAddr"] = imgData[0];
orgReport.addImage("myLogo", imgData[1]);
orgReport.openReport();
return orgReport.exportReport();
/*
* merges multiple columns in an two-dimensional array into one
*/
......@@ -221,4 +223,14 @@ var activityData = activityQuery.table()
pArr.slice(pIndex, pIndex + pHowMany), pJoinSeparator)
);
}
}
\ No newline at end of file
}
/**
* opens the org-report
*
* @param {String} pOrgId the id of the organization
*/
OrgUtils.openOrgReport = function(pOrgId)
{
neon.openContext("Organisation", "OrganisationReport_view", [pOrgId], neon.OPERATINGSTATE_VIEW, null);
}
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