diff --git a/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js b/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js index 765ab4952ebc53f5733ec38b05f5b85fef838e2e..667c71412d1a86c3a02d75d7c8a3c2b7013bde50 100644 --- a/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js +++ b/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js @@ -1,3 +1,5 @@ +import("KeywordRegistry_basic"); +import("Communication_lib"); import("Workflow_lib"); import("Binary_lib"); import("Sql_lib"); @@ -28,28 +30,61 @@ if (template && template.content && BulkMailUtils.isValidTemplateType(template.t SingleBinaryUtils.insert("BULKMAIL", "DOCUMENT", bulkMailId, template.content, template.filename); } -var contactIds = []; +// CopyBulkMail Recipients +if (vars.get("$param.CopyBulkMailId_param")){ + + var BulkMailParam = vars.get("$param.CopyBulkMailId_param"); -if (vars.get("$param.CopyBulkMailId_param")) -{ - var config = entities.createConfigForLoadingRows() - .entity("BulkMailRecipient_entity") - .provider("BulkMailRecipients") - .addParameter("BulkMailId_param", vars.get("$param.CopyBulkMailId_param")) - .fields(["CONTACT_ID"]); - - var copiedRecipients = entities.getRows(config); - - contactIds = copiedRecipients.map(function(pRecipient) + var copiedRecipients = newSelect("CONTACT_ID, EMAIL_ADDRESS, IS_TEST_RECIPIENT") + .from("BULKMAILRECIPIENT") + .join("CONTACT", "BULKMAILRECIPIENT.CONTACT_ID = CONTACT.CONTACTID") + .where("BULKMAILRECIPIENT.BULKMAIL_ID", BulkMailParam) + // check if there's a commrestriction + .and(new CommunicationSettingsCondition() + .emails(CommUtil.getStandardSubSqlMail()) + .rejected() + .existNoSettings() + .buildCondition()) + .table() + + var sqlBuilder = new SqlBuilder(); + + var inserts = copiedRecipients.map(function([contactId, email, test]) { - return pRecipient["CONTACT_ID"]; + return sqlBuilder.buildInsertStatement({ + "BULKMAIL_ID": bulkMailId, + "CONTACT_ID": contactId, + "STATUS": $KeywordRegistry.bulkMailRecipientStatus$pending(), + "EMAIL_ADDRESS": email, + "IS_TEST_RECIPIENT": test + }, "BULKMAILRECIPIENT", "BULKMAILRECIPIENTID"); }); -} + db.inserts(inserts); + + //CopyBulkMail TestRecipients -if (vars.getString("$param.PresetRecipients_param")) - contactIds = contactIds.concat(JSON.parse(vars.getString("$param.PresetRecipients_param"))); + copiedRecipients = newSelect("CONTACT_ID, EMAIL_ADDRESS") + .from("BULKMAILTESTRECIPIENT") + .join("CONTACT", "BULKMAILTESTRECIPIENT.CONTACT_ID = CONTACT.CONTACTID") + .where("BULKMAILTESTRECIPIENT.BULKMAIL_ID", BulkMailParam) + // check if there's a commrestriction + .and(new CommunicationSettingsCondition() + .emails(CommUtil.getStandardSubSqlMail()) + .rejected() + .existNoSettings() + .buildCondition()) + .table() -if (contactIds && contactIds.length > 0) - BulkMailUtils.addRecipients(bulkMailId, BulkMailUtils.filterNewRecipients(bulkMailId, contactIds)); + sqlBuilder = new SqlBuilder(); + inserts = copiedRecipients.map(function([contactId, email]) + { + return sqlBuilder.buildInsertStatement({ + "BULKMAIL_ID": bulkMailId, + "CONTACT_ID": contactId, + "EMAIL_ADDRESS": email + }, "BULKMAILTESTRECIPIENT", "BULKMAILTESTRECIPIENTID"); + }); + db.inserts(inserts); +} WorkflowSignalSender.inserted(); \ No newline at end of file