Skip to content
Snippets Groups Projects
Commit db714d5c authored by Tom Lutzenberger's avatar Tom Lutzenberger
Browse files

#1058829: Campaign filter implementation (WiP)

parent ed1d5b43
No related branches found
No related tags found
No related merge requests found
Showing
with 227 additions and 8 deletions
......@@ -51,8 +51,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>
......@@ -526,6 +525,7 @@
<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>
......@@ -627,6 +627,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());
}
\ No newline at end of file
}
var condition = new SqlBuilder()
.whereIfSet("STEPDATESTART_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID")
.andIfSet("STEPDATEEND_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID")
;
result.string(condition.toString());
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("system.logging");
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 on OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID", "", "", "inner")
.join("CONTACT on OBJECTMEMBER.CONTACT_ID = CONTACT.CONTACTID", "", "", "inner")
;
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");
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";
result.string("CAMPAIGN, " + subSelectDateStart + ", " + subSelectDateEnd);
} else {
result.string("CAMPAIGN");
}
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
......@@ -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