Newer
Older

Benjamin Ulrich
committed
import("Attribute_lib");
import("KeywordRegistry_basic");
import("system.entities");
Martin Groppe
committed
import("Util_lib");
import("Sql_lib");
import("system.vars");
function CommunicationBlacklist ()
{
this.filter = CommunicationBlacklist.getMailRecipientBlacklistFilter();
this.blacklistContactIds = new Set();
Martin Groppe
committed
}
/**
* @return {CommunicationBlacklist}
*/
CommunicationBlacklist.getMailRecipientBlacklistFilter = function ()
Martin Groppe
committed
{
var filters = newSelect("FILTER")
.from("EMAIL_FILTER_HANDLING")
.where("EMAIL_FILTER_HANDLING.FILTER_TYPE", $KeywordRegistry.emailFilterType$blacklist())
Martin Groppe
committed
.table();
var filterMappingFn = function ([blacklistFilter])
{
blacklistFilter = JSON.parse(blacklistFilter);
if (!blacklistFilter.filter || blacklistFilter.entity != "BulkMailRecipient_entity" || Utils.isNullOrEmpty(blacklistFilter.filter.childs))
return null;
return blacklistFilter.filter;
};
Martin Groppe
committed
type: "group",
operator: "AND",
childs: filters.map(filterMappingFn).filter(Utils.isObject)
};
}
CommunicationBlacklist.prototype.getFilter = function ()
Martin Groppe
committed
{
return this.filter;
}
CommunicationBlacklist.prototype.loadBlacklistRecipients = function (pBulkMailId)
{
Martin Groppe
committed
if (!Utils.isNullOrEmpty(this.filter.childs))
Martin Groppe
committed
var blacklistLoadConfig = entities.createConfigForLoadingRows()
.fields(["CONTACT_ID"])
.entity("BulkMailRecipient_entity")
.provider("RecipientsToBeMailed")
.addParameter("BulkMailId_param", pBulkMailId)
.filter(JSON.stringify(this.filter));
var blacklist = entities.getRows(blacklistLoadConfig);
blacklist.forEach(function (recipient)
{
this.blacklistContactIds.add(recipient["CONTACT_ID"]);
}, this);
}
}
CommunicationBlacklist.prototype.hasContactId = function (pContactId)
{
return this.blacklistContactIds.has(pContactId);
}