Skip to content
Snippets Groups Projects
Commit 0a2e509e authored by Sebastian Listl's avatar Sebastian Listl :speech_balloon:
Browse files

merged origin/#1058829-campaign-filter into master

parents fb635ce3 c547a7dc
No related branches found
No related tags found
No related merge requests found
Showing
with 287 additions and 8 deletions
......@@ -52,8 +52,7 @@
<title>Start</title>
<contentType>DATE</contentType>
<resolution>DAY</resolution>
<outputFormat></outputFormat>
<inputFormat></inputFormat>
<outputFormat>dd.MM.yyyy</outputFormat>
<state>READONLY</state>
<valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/date_start/valueProcess.js</valueProcess>
</entityField>
......@@ -522,6 +521,22 @@
<name>CAMPAIGN_OBEJCTTYPE</name>
<valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaign_obejcttype/valueProcess.js</valueProcess>
</entityField>
<entityConsumer>
<name>PersonConsumer</name>
<dependency>
<name>dependency</name>
<entityName>Person_entity</entityName>
<fieldName>#PROVIDER</fieldName>
</dependency>
</entityConsumer>
<entityConsumer>
<name>OrganisationConsumer</name>
<dependency>
<name>dependency</name>
<entityName>Organisation_entity</entityName>
<fieldName>#PROVIDER</fieldName>
</dependency>
</entityConsumer>
<entityField>
<name>COUNT</name>
<title>Count</title>
......@@ -537,13 +552,14 @@
<dbRecordContainer>
<name>db</name>
<alias>Data_alias</alias>
<fromClauseProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess>
<conditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
<onDBInsert>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
<onDBUpdate>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
<onDBDelete>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
<linkInformation>
<linkInformation>
<name>f3893829-3af2-4e55-ae85-c3a24411a8b8</name>
<name>f95b8870-15cd-4302-99ec-8a104ae2262d</name>
<tableName>CAMPAIGN</tableName>
<primaryKey>CAMPAIGNID</primaryKey>
<isUIDTable v="true" />
......@@ -634,6 +650,18 @@
<recordfield>CAMPAIGN.CAMPAIGNID</recordfield>
<aggregateType>COUNT</aggregateType>
</aggregateFieldDbMapping>
<consumerMapping>
<name>PersonConsumer</name>
<filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/personconsumer/filterConditionProcess.js</filterConditionProcess>
<isFilterable v="true" />
<filtertype>BASIC</filtertype>
</consumerMapping>
<consumerMapping>
<name>OrganisationConsumer</name>
<filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/organisationconsumer/filterConditionProcess.js</filterConditionProcess>
<isFilterable v="true" />
<filtertype>BASIC</filtertype>
</consumerMapping>
</recordFieldMappings>
<filterExtensions>
<filterExtensionSet>
......@@ -643,6 +671,44 @@
<filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtensionSet>
<filterExtension>
<name>DateStart_filter</name>
<title>Startdatum</title>
<contentType>DATE</contentType>
<filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>DateEnd_filter</name>
<title>Enddatum</title>
<contentType>DATE</contentType>
<filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>Participant_filter</name>
<title>Participants</title>
<contentType>TEXT</contentType>
<filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js</filterValuesProcess>
<filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>CampaignStep_filter</name>
<title>Steps</title>
<contentType>TEXT</contentType>
<filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js</filterValuesProcess>
<filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>Member_filter</name>
<title>Members</title>
<contentType>TEXT</contentType>
<filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js</filterValuesProcess>
<filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
</filterExtensions>
</dbRecordContainer>
</recordContainers>
......
import("Employee_lib");
import("system.db");
import("system.result");
import("Sql_lib");
import("system.vars");
import("Employee_lib");
import("Sql_lib");
if(vars.get("$param.ShowOnlyCurrentUsersCampaigns_param") == 'true')
{
//TODO: use a preparedCondition (.build instead of .translate) when available #1030812 #1034026
result.string(newWhere("CAMPAIGN.EMPLOYEE_CONTACT_ID", EmployeeUtils.getCurrentContactId()).toString());
} else {
var condition = new SqlBuilder()
.whereIfSet("STEPDATESTART_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID")
.andIfSet("STEPDATEEND_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID")
;
result.string(condition.toString());
}
\ No newline at end of file
import("system.result");
import("system.vars");
import("Sql_lib");
import("Util_lib");
import("Campaign_lib");
var valueSubSelect = "(select CAMPAIGNSTEPID from CAMPAIGNSTEP where CAMPAIGN.CAMPAIGNID = CAMPAIGNSTEP.CAMPAIGN_ID)";
var countSubSelect = "(select count(*) from CAMPAIGNSTEP where CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)";
var condition = "";
switch(vars.get("$local.comparison")) {
case "ISNOTNULL":
condition = countSubSelect + " > 0";
break;
case "ISNULL":
condition = countSubSelect + " = 0";
break;
case "NOT_EQUAL":
condition = vars.get("$local.value") + " not in " + valueSubSelect;
break;
case "EQUAL":
condition = vars.get("$local.value") + " in " + valueSubSelect;
break;
}
result.object(condition);
import("system.result");
import("Sql_lib");
var campaignStepValues = new SqlBuilder()
.select("CAMPAIGNSTEPID, NAME")
.from("CAMPAIGNSTEP")
.orderBy("NAME")
.table();
result.object(campaignStepValues);
\ No newline at end of file
import("system.result");
import("system.vars");
import("Sql_lib");
import("Util_lib");
var subSelect = new SqlBuilder()
.select("max(CAMPAIGNSTEP.DATE_END)")
.from("CAMPAIGNSTEP")
.where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID")
.toString();
subSelect = "(" + subSelect + ")";
var condition = StringUtils.replaceAll(vars.get("$local.condition"), vars.get("$local.columnPlaceholder"), subSelect);
result.object(condition);
import("system.result");
import("system.vars");
import("Sql_lib");
import("Util_lib");
var subSelect = new SqlBuilder()
.select("min(CAMPAIGNSTEP.DATE_START)")
.from("CAMPAIGNSTEP")
.where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID")
.toString();
subSelect = "(" + subSelect + ")";
var condition = StringUtils.replaceAll(vars.get("$local.condition"), vars.get("$local.columnPlaceholder"), subSelect);
result.object(condition);
import("system.result");
import("system.vars");
import("Sql_lib");
import("Util_lib");
var valueSubSelect = "(select CONTACT_ID from OBJECTMEMBER where OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID)";
var countSubSelect = "(select count(*) from OBJECTMEMBER where OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID)";
var condition = "";
switch(vars.get("$local.comparison")) {
case "ISNOTNULL":
condition = countSubSelect + " > 0";
break;
case "ISNULL":
condition = countSubSelect + " = 0";
break;
case "NOT_EQUAL":
condition = vars.get("$local.value") + " not in " + valueSubSelect;
break;
case "EQUAL":
condition = vars.get("$local.value") + " in " + valueSubSelect;
break;
}
result.object(condition);
import("system.result");
import("Sql_lib");
import("Person_lib");
var query = new SqlBuilder()
.select("OBJECTMEMBER.CONTACT_ID, (" + PersUtils.getResolvingDisplaySubSql("OBJECTMEMBER.CONTACT_ID") + ") as C")
.from("OBJECTMEMBER")
.join("CAMPAIGN", "OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID")
.join("CONTACT", "OBJECTMEMBER.CONTACT_ID = CONTACT.CONTACTID")
;
result.object(query.table());
\ No newline at end of file
import("system.result");
import("system.vars");
import("Sql_lib");
import("Util_lib");
var valueSubSelect = "(select CONTACT_ID from CAMPAIGNPARTICIPANT where CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)";
var countSubSelect = "(select count(*) from CAMPAIGNPARTICIPANT where CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)";
var condition = "";
switch(vars.get("$local.comparison")) {
case "ISNOTNULL":
condition = countSubSelect + " > 0";
break;
case "ISNULL":
condition = countSubSelect + " = 0";
break;
case "NOT_EQUAL":
condition = vars.get("$local.value") + " not in " + valueSubSelect;
break;
case "EQUAL":
condition = vars.get("$local.value") + " in " + valueSubSelect;
break;
}
result.object(condition);
import("system.result");
import("Sql_lib");
import("Person_lib");
var contactDisplaySelect = "case when CONTACT.PERSON_ID is null"
+ " then (select ORGANISATION.NAME FROM ORGANISATION join CONTACT on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID where CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID)"
+ " else (" + PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.CONTACT_ID") + ")"
+ " end";
var query = new SqlBuilder()
.select("distinct CAMPAIGNPARTICIPANT.CONTACT_ID, (" + contactDisplaySelect + ") as C")
.from("CAMPAIGNPARTICIPANT")
.join("CONTACT on CAMPAIGNPARTICIPANT.CONTACT_ID = CONTACT.CONTACTID", "", "", "inner")
;
result.object(query.table());
\ No newline at end of file
import("system.result");
import("system.neon");
import("system.vars");
var recordState = vars.get("$sys.recordstate");
var res = "CAMPAIGN";
if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) {
var subSelectDateStart = "(select min(DATE_START) as STEPDATESTART_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATESTART_TABLEALIAS";
var subSelectDateEnd = "(select max(DATE_END) as STEPDATEEND_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATEEND_TABLEALIAS";
res += ", " + subSelectDateStart + ", " + subSelectDateEnd;
}
result.string(res);
import("system.result");
result.string("(select max(DATE_END) from campaignstep where campaign_id = campaignid)");
\ No newline at end of file
result.string("STEPDATEEND_ALIAS");
\ No newline at end of file
import("system.result");
result.string("(select min(DATE_START) from campaignstep where campaign_id = campaignid)");
\ No newline at end of file
result.string("STEPDATESTART_ALIAS");
\ No newline at end of file
import("system.vars");
import("system.result");
//it's necessary to join the organistion-contact since you may want to search for things like status, language, etc. from an organisation
var from = "CAMPAIGNPARTICIPANT"
+ " join CONTACT on (CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID)"
+ " join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID)"
;
result.string("CAMPAIGNID in (select CAMPAIGNPARTICIPANT.CAMPAIGN_ID from " + from + " where " + vars.get("$local.condition")+ ")");
import("system.vars");
import("system.result");
//it's necessary to join the person-contact since you may want to search for things like status, language, etc. from an organisation
var from = "CAMPAIGNPARTICIPANT"
+ " join CONTACT on (CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID)"
+ " join PERSON on (PERSON.PERSONID = CONTACT.PERSON_ID)"
;
result.string("CAMPAIGNID in (select CAMPAIGNPARTICIPANT.CAMPAIGN_ID from " + from + " where " + vars.get("$local.condition")+ ")");
......@@ -273,6 +273,12 @@
<fieldName>Organisations</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>271c43f9-8807-4439-9ab4-906fbf019475</name>
<entityName>Campaign_entity</entityName>
<fieldName>OrganisationConsumer</fieldName>
<isConsumer v="false" />
</entityDependency>
</dependencies>
</entityProvider>
<entityConsumer>
......
......@@ -284,6 +284,12 @@
<fieldName>PersonConsumer</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>befbfd87-c065-4a4b-9d1e-8de8fba87302</name>
<entityName>Campaign_entity</entityName>
<fieldName>PersonConsumer</fieldName>
<isConsumer v="false" />
</entityDependency>
</dependencies>
</entityProvider>
<entityField>
......
......@@ -4,7 +4,7 @@
<title>Campaign</title>
<majorModelMode>DISTRIBUTED</majorModelMode>
<icon>VAADIN:GROUP</icon>
<size>SMALL</size>
<size>NORMAL</size>
<overlayOrientation>PORTRAIT</overlayOrientation>
<layout>
<noneLayout>
......
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