Skip to content
Snippets Groups Projects
process.js 1.96 KiB
Newer Older
import("KeywordRegistry_basic");
import("system.entities");
import("Util_lib");
import("Sql_lib");
import("system.vars");


function CommunicationBlacklist () 
{
    this.filter = CommunicationBlacklist.getMailRecipientBlacklistFilter();
    this.blacklistContactIds = new Set();
CommunicationBlacklist.getMailRecipientBlacklistFilter = function ()
{
    var filters = newSelect("FILTER")
        .from("EMAIL_FILTER_HANDLING")
        .where("EMAIL_FILTER_HANDLING.FILTER_TYPE", $KeywordRegistry.emailFilterType$blacklist())
        .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;
    };
    
    return {
        type: "group",
        operator: "AND",
        childs: filters.map(filterMappingFn).filter(Utils.isObject)
    };
}

CommunicationBlacklist.prototype.getFilter = function ()
    return this.filter;
}

CommunicationBlacklist.prototype.loadBlacklistRecipients = function (pBulkMailId)
{
        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);
    }
    
Martin Groppe's avatar
Martin Groppe committed
    return this;
}

CommunicationBlacklist.prototype.hasContactId = function (pContactId)
{
    return this.blacklistContactIds.has(pContactId);
}