Skip to content
Snippets Groups Projects
Commit fc8fb55f authored by Martin Groppe's avatar Martin Groppe Committed by Sebastian Listl
Browse files

M 1083557 bulkmail analysis filters

parent a53acb24
No related branches found
No related tags found
No related merge requests found
......@@ -712,6 +712,29 @@
<readonly v="true" />
</linkInformation>
</linkInformation>
<filterExtensions>
<filterExtension>
<name>Opener_Filter</name>
<title>Opener rate (in %)</title>
<contentType>NUMBER</contentType>
<filterConditionProcess>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/filterextensions/opener_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>ClickCount_Filter</name>
<title>Click rate (in %)</title>
<contentType>NUMBER</contentType>
<filterConditionProcess>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/filterextensions/clickcount_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
<filterExtension>
<name>UniqueClickCount_Filter</name>
<title>Unique click rate (in %)</title>
<contentType>NUMBER</contentType>
<filterConditionProcess>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/filterextensions/uniqueclickcount_filter/filterConditionProcess.js</filterConditionProcess>
<filtertype>BASIC</filtertype>
</filterExtension>
</filterExtensions>
</dbRecordContainer>
</recordContainers>
</entity>
import("system.vars");
import("system.result");
import("BulkmailAnalysis_lib");
result.string(BulkMailAnalysisUtils.getPercentageFilterCondition(BulkMailAnalysisSql.countSelects.CLICKCOUNT, vars.get("$local.rawvalue"), vars.get("$local.comparison")));
import("system.vars");
import("system.result");
import("BulkmailAnalysis_lib");
result.string(BulkMailAnalysisUtils.getPercentageFilterCondition(BulkMailAnalysisSql.countSelects.OPENERCOUNT, vars.get("$local.rawvalue"), vars.get("$local.comparison")));
import("system.vars");
import("system.result");
import("BulkmailAnalysis_lib");
result.string(BulkMailAnalysisUtils.getPercentageFilterCondition(BulkMailAnalysisSql.countSelects.UNIQUECLICKCOUNT, vars.get("$local.rawvalue"), vars.get("$local.comparison")));
......@@ -54,6 +54,10 @@
<key>decrease priority</key>
<value>Priorität verringern</value>
</entry>
<entry>
<key>Click rate (in \%)</key>
<value>Klickrate in Prozent</value>
</entry>
<entry>
<key>Move selection up</key>
<value>Auswahl nach oben verschieben</value>
......@@ -74,6 +78,10 @@
<key>Redirect needs a full URL with http/https</key>
<value>Für die Weiterleitung wird eine vollständige URL mit http/https benötigt</value>
</entry>
<entry>
<key>Opener rate (in \%)</key>
<value>Öffnungsrate in Prozent</value>
</entry>
<entry>
<key>My Bulkmails</key>
<value>Meine Serienmails</value>
......@@ -2354,6 +2362,10 @@
<key>Contracts</key>
<value>Verträge</value>
</entry>
<entry>
<key>Unique click rate (in \%)</key>
<value>Unique Klickrate in Prozent</value>
</entry>
<entry>
<key>Contact Owner</key>
<value>Besitzer</value>
......
import("system.SQLTYPES");
import("KeywordRegistry_basic");
import("Sql_lib");
......@@ -106,8 +107,77 @@ BulkMailAnalysisSql.prototype.buildSelect = function()
return sql
}
/**
* a static Utility class for BulkMailAnalysis
*
* Do not create an instance of this!
* @class
*/
function BulkMailAnalysisUtils() {}
/*
* returns a sql condition for a filterextension that evaluates the percentage of bulkmailanalysis counts compared to received mails
*
* @param {String} pCountSelect count from BulkMailAnalysisSql.countSelects that defines what gets counted
* @param {Number} pRawValue value that is filtered for
* @param {String} pComparison comparison operator
* @return {String} the resulting condition
*/
BulkMailAnalysisUtils.getPercentageFilterCondition = function (pCountSelect, pRawValue, pComparison)
{
pRawValue = pRawValue / 100;
var idcolumn = "BULKMAIL.BULKMAILID";
var receivedCountSql = new BulkMailAnalysisSql()
.bulkMailIdField(idcolumn)
.setSelects(BulkMailAnalysisSql.countSelects.RECEIVEDCOUNT)
.buildSelect();
var bulkMailAnalysisSql = new BulkMailAnalysisSql()
.bulkMailIdField(idcolumn)
.setSelects(pCountSelect+"/"+BulkMailAnalysisSql.countSelects.RECEIVEDCOUNT)
.buildSelect();
var caseWhen = SqlBuilder.caseWhen(receivedCountSql, 0, SqlBuilder.NOT_EQUAL(), SQLTYPES.FLOAT)
.then(bulkMailAnalysisSql)
.elseValue(0)
.toString();
var resultSqlCond;
switch (pComparison)
{
case "EQUAL":
resultSqlCond = newWhere(caseWhen, pRawValue, SqlBuilder.EQUAL(), SQLTYPES.FLOAT);
break;
case "GREATER":
resultSqlCond = newWhere(caseWhen, pRawValue, SqlBuilder.GREATER(), SQLTYPES.FLOAT);
break;
case "LESS":
resultSqlCond = newWhere(caseWhen, pRawValue, SqlBuilder.LESS(), SQLTYPES.FLOAT);
break;
case "GREATER_OR_EQUAL":
resultSqlCond = newWhere(caseWhen, pRawValue, SqlBuilder.GREATER_OR_EQUAL(), SQLTYPES.FLOAT);
break;
case "LESS_OR_EQUAL":
resultSqlCond = newWhere(caseWhen, pRawValue, SqlBuilder.LESS_OR_EQUAL(), SQLTYPES.FLOAT);
break;
case "NOT_EQUAL":
resultSqlCond = newWhere(caseWhen, pRawValue, SqlBuilder.NOT_EQUAL(), SQLTYPES.FLOAT);
break;
case "ISNULL":
resultSqlCond = newWhere(caseWhen, 0, SqlBuilder.EQUAL(), SQLTYPES.FLOAT);
break;
case "ISNOTNULL":
resultSqlCond = newWhere(caseWhen, 0, SqlBuilder.NOT_EQUAL(), SQLTYPES.FLOAT);
break;
default:
resultSqlCond = "1=2";
}
return resultSqlCond;
}
/*
* Defines the subselects used for the bulkmailanalysiscounts
*
......
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