import("Attribute_lib"); 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(); } /** * @return {CommunicationBlacklist} */ 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) { if (!Utils.isNullOrEmpty(this.filter.childs)) { 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); } return this; } CommunicationBlacklist.prototype.hasContactId = function (pContactId) { return this.blacklistContactIds.has(pContactId); }