diff --git a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod index a43dd1134fefe62920ca5f7ec6941dba89da5cb8..e7f67f8f1e2cfa915f71c98dd05e7dbe3620ea36 100644 --- a/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod +++ b/entity/BulkMailAddRecipients_entity/BulkMailAddRecipients_entity.aod @@ -8,10 +8,6 @@ <entityProvider> <name>#PROVIDER</name> </entityProvider> - <entityField> - <name>UID</name> - <state>EDITABLE</state> - </entityField> <entityField> <name>recipientCountMessage</name> <state>EDITABLE</state> @@ -39,10 +35,10 @@ <expose v="true" /> </entityParameter> <entityField> - <name>recipientContactIds</name> + <name>validContactIds</name> <description>the filtered contactIds (contactIds that are not already in the bulkmail and don't have a commrestriction)</description> <state>EDITABLE</state> - <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/validcontactids/valueProcess.js</valueProcess> </entityField> <entityActionField> <name>addRecipients</name> @@ -52,30 +48,25 @@ <state>DISABLED</state> <stateProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js</stateProcess> </entityActionField> - <entityField> - <name>recipientCount</name> - <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc</documentation> - <state>EDITABLE</state> - <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js</valueProcess> - </entityField> <entityParameter> <name>ObjectType_param</name> <expose v="true" /> </entityParameter> <entityField> - <name>currentRecipients</name> - <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/currentrecipients/documentation.adoc</documentation> + <name>currentRecipientCount</name> + <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/currentrecipientcount/documentation.adoc</documentation> <title>Current Recipients</title> - <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/currentrecipients/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/currentrecipientcount/valueProcess.js</valueProcess> </entityField> <entityField> - <name>notAddedRecipients</name> + <name>notAddedCount</name> + <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/notaddedcount/valueProcess.js</valueProcess> </entityField> <entityField> - <name>futureRecipients</name> - <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/futurerecipients/documentation.adoc</documentation> + <name>futureRecipientCount</name> + <documentation>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/futurerecipientcount/documentation.adoc</documentation> <title>Recipients after adding</title> - <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/futurerecipients/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/futurerecipientcount/valueProcess.js</valueProcess> </entityField> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -85,6 +76,10 @@ <name>ContactFilter_param</name> <expose v="true" /> </entityParameter> + <entityField> + <name>proposedContactIds</name> + <valueProcess>%aditoprj%/entity/BulkMailAddRecipients_entity/entityfields/proposedcontactids/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> <datalessRecordContainer> diff --git a/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js index cce82d39abe4867c83b6b4289e6d5dfe284ace9a..d8057fbcaec0ce5c0094c723183b6d0538d0710c 100644 --- a/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js +++ b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/onActionProcess.js @@ -1,7 +1,7 @@ import("Bulkmail_lib"); import("system.vars"); -var contactIds = JSON.parse(vars.getString("$field.recipientContactIds")); +var contactIds = JSON.parse(vars.getString("$field.validContactIds")); var bulkMailId = vars.get("$field.BULKMAIL_ID"); BulkMailUtils.addRecipients(bulkMailId, contactIds); diff --git a/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js index 361fb440599d3efccdfbb22747deae2b585fc3b0..8d4f43e10f0c76aaf98c0e64954bb2c5599015f4 100644 --- a/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js +++ b/entity/BulkMailAddRecipients_entity/entityfields/addrecipients/stateProcess.js @@ -1,9 +1,11 @@ +import("Util_lib"); import("system.neon"); import("system.result"); import("system.vars"); -var count = vars.getString("$field.recipientCount"); -if (count == "0" || !count || vars.get("$sys.validationerrors")) +var validContactIds = Utils.parseJSON(vars.get("$field.validContactIds")); + +if (Utils.isNullOrEmpty(validContactIds) || vars.get("$sys.validationerrors")) result.string(neon.COMPONENTSTATE_DISABLED); else result.string(neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/currentrecipients/documentation.adoc b/entity/BulkMailAddRecipients_entity/entityfields/currentrecipientcount/documentation.adoc similarity index 100% rename from entity/BulkMailAddRecipients_entity/entityfields/currentrecipients/documentation.adoc rename to entity/BulkMailAddRecipients_entity/entityfields/currentrecipientcount/documentation.adoc diff --git a/entity/BulkMailAddRecipients_entity/entityfields/currentrecipientcount/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/currentrecipientcount/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8aa9feddbe80e3c8a1d0286c93cb784cb0158c52 --- /dev/null +++ b/entity/BulkMailAddRecipients_entity/entityfields/currentrecipientcount/valueProcess.js @@ -0,0 +1,11 @@ +import("system.result"); +import("system.vars"); +import("Sql_lib"); + +var currentCount = new SqlBuilder() + .selectCount() + .from("BULKMAILRECIPIENT") + .whereIfSet("BULKMAILRECIPIENT.BULKMAIL_ID", vars.get("$field.BULKMAIL_ID")) + .cell(true) || "0"; + +result.string(currentCount); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/currentrecipients/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/currentrecipients/valueProcess.js deleted file mode 100644 index ab684915b04cac155e1a7c5ef4e4f008443ab5fc..0000000000000000000000000000000000000000 --- a/entity/BulkMailAddRecipients_entity/entityfields/currentrecipients/valueProcess.js +++ /dev/null @@ -1,15 +0,0 @@ -import("system.logging"); -import("system.result"); -import("system.vars"); -import("Sql_lib"); - -var currentCount = newSelect("count(BULKMAILRECIPIENT.CONTACT_ID)") - .from("BULKMAILRECIPIENT") - .where("BULKMAILRECIPIENT.BULKMAIL_ID", vars.get("$field.BULKMAIL_ID")) - .cell() -if(currentCount) - result.string(currentCount) -else - result.string("0") - - diff --git a/entity/BulkMailAddRecipients_entity/entityfields/futurerecipients/documentation.adoc b/entity/BulkMailAddRecipients_entity/entityfields/futurerecipientcount/documentation.adoc similarity index 100% rename from entity/BulkMailAddRecipients_entity/entityfields/futurerecipients/documentation.adoc rename to entity/BulkMailAddRecipients_entity/entityfields/futurerecipientcount/documentation.adoc diff --git a/entity/BulkMailAddRecipients_entity/entityfields/futurerecipientcount/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/futurerecipientcount/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..afd4e40de1a73cfa8b96f4c937f413308fd4cc19 --- /dev/null +++ b/entity/BulkMailAddRecipients_entity/entityfields/futurerecipientcount/valueProcess.js @@ -0,0 +1,8 @@ +import("Util_lib"); +import("system.vars"); +import("system.result"); + +var currentCount = Number(vars.get("$field.currentRecipientCount")); +var validIds = Utils.parseJSON(vars.get("$field.validContactIds")) || []; + +result.string(currentCount + validIds.length); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/futurerecipients/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/futurerecipients/valueProcess.js deleted file mode 100644 index 9c50bb1b4d3e3e9076cff47ff37abfb2b665a600..0000000000000000000000000000000000000000 --- a/entity/BulkMailAddRecipients_entity/entityfields/futurerecipients/valueProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.eMath") - -var res = eMath.addInt(vars.get("$field.recipientCount"), vars.get("$field.currentRecipients")); -if(res) - result.string(res); -else - result.string(0); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/notaddedcount/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/notaddedcount/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..83d9b3c1ffd564ba0b8bc6c0b1c9dc7597f0a9ca --- /dev/null +++ b/entity/BulkMailAddRecipients_entity/entityfields/notaddedcount/valueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("Util_lib"); +import("system.vars"); + +var proposedIds = Utils.parseJSON(vars.get("$field.proposedContactIds")) || []; +var validIds = Utils.parseJSON(vars.get("$field.validContactIds")) || []; + +result.string(proposedIds.length - validIds.length); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/proposedcontactids/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/proposedcontactids/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..abc1e78c4e3211d5cbb9cfbb1440a276edc8f400 --- /dev/null +++ b/entity/BulkMailAddRecipients_entity/entityfields/proposedcontactids/valueProcess.js @@ -0,0 +1,17 @@ +import("Util_lib"); +import("FilterViewAction_lib"); +import("system.result"); +import("system.vars"); + +var bulkMailId = vars.get("$field.BULKMAIL_ID"); +var proposedRecipients = []; +if (bulkMailId) +{ + var contactIds = Utils.parseJSON(vars.get("$param.ContactIds_param")); + var contactFilter = vars.get("$param.ContactFilter_param"); + var context = vars.getString("$param.ObjectType_param"); + + proposedRecipients = FilterViewActionUtils.getUidsBySelectionOrFilter(context, contactIds, contactFilter); +} + +result.string(JSON.stringify(proposedRecipients)); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js deleted file mode 100644 index 02d7fa1e679412972c3aca009bf79212db5b41e1..0000000000000000000000000000000000000000 --- a/entity/BulkMailAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js +++ /dev/null @@ -1,24 +0,0 @@ -import("Util_lib"); -import("system.eMath"); -import("FilterViewAction_lib"); -import("system.result"); -import("Bulkmail_lib"); -import("Sql_lib"); -import("system.vars"); -import("system.neon"); - -var bulkMailId = vars.get("$field.BULKMAIL_ID"); -if (bulkMailId) -{ - var contactIds = Utils.parseJSON(vars.get("$param.ContactIds_param")); - var contactFilter = vars.get("$param.ContactFilter_param"); - var context = vars.getString("$param.ObjectType_param"); - - contactIds = FilterViewActionUtils.getUidsBySelectionOrFilter(context, contactIds, contactFilter); - - var recipients = BulkMailUtils.filterNewRecipients(bulkMailId, contactIds); - neon.setFieldValue("$field.notAddedRecipients", eMath.subInt(parseInt(contactIds.length), parseInt(recipients.length))); - result.string(JSON.stringify(recipients)); -} -else - result.string(null); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc deleted file mode 100644 index cb66eaab85eed332b2f4d5e7c5e7bce70540b357..0000000000000000000000000000000000000000 --- a/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/documentation.adoc +++ /dev/null @@ -1,6 +0,0 @@ -This field contains the count of the participants that can be added as string. -A value of null or empty string "" means that the count could not be determined (for example because no bulkmail was chosen). -A value of "0" means that the count could be determined but none of the participants can be added (for example because all selected participants are already in the bulkmail). -For example, a value of "12" means that 12 of the given participants can be added. - -This information is needed for disabling the action to proceed and to provide a message for the user. \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js deleted file mode 100644 index d04634f708b5331a305b800553ec8c5c9bd1b2fb..0000000000000000000000000000000000000000 --- a/entity/BulkMailAddRecipients_entity/entityfields/recipientcount/valueProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.translate"); -import("system.result"); -import("system.vars"); - -var res = ""; -if (vars.get("$field.recipientContactIds")) -{ - res = JSON.parse(vars.getString("$field.recipientContactIds")).length; -} - -result.string(res); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js index 80f08142f07db6851da182a44860374521000e27..67be7554841dc3d74cbef94a307675ee7e5b1c1d 100644 --- a/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js +++ b/entity/BulkMailAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js @@ -1,22 +1,25 @@ +import("Util_lib"); import("system.translate"); import("system.result"); import("system.vars"); -var count = vars.get("$field.recipientCount") -var res = ""; -var resNotAdded = "\n\ -"; -if (count && !vars.get("$sys.validationerrors")) +var validIdCount = (Utils.parseJSON(vars.get("$field.validContactIds")) || []).length; +var message = ""; +if (!vars.get("$sys.validationerrors")) { - if (count == "0") - res = translate.text("No new recipients found that can be added to the bulk mail."); + if (validIdCount == 0) + { + message = translate.text("No new recipients found that can be added to the bulk mail."); + } else { - res = translate.withArguments("%0 new recipients will be added to the bulk mail.", [count]); - var notAdded = vars.get("$field.notAddedRecipients") + message = translate.withArguments("%0 new recipients will be added to the bulk mail.", [validIdCount]); + var notAdded = vars.get("$field.notAddedCount") if (notAdded > 0) - resNotAdded += translate.withArguments("%0 of the chosen records are already recipients or don't have an e-mail set", [notAdded]); + { + message += "\n" + translate.withArguments("%0 of the chosen records are already recipients or don't have an e-mail set", [notAdded]); + } } } -result.string(res + resNotAdded); \ No newline at end of file +result.string(message); \ No newline at end of file diff --git a/entity/BulkMailAddRecipients_entity/entityfields/validcontactids/valueProcess.js b/entity/BulkMailAddRecipients_entity/entityfields/validcontactids/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2df0a164747ae867eb2c6a645c4be5625ba9d21c --- /dev/null +++ b/entity/BulkMailAddRecipients_entity/entityfields/validcontactids/valueProcess.js @@ -0,0 +1,14 @@ +import("Util_lib"); +import("system.result"); +import("Bulkmail_lib"); +import("system.vars"); + +var bulkMailId = vars.get("$field.BULKMAIL_ID"); +var validRecipients = []; +if (bulkMailId) +{ + var proposedRecipients = Utils.parseJSON(vars.get("$field.proposedContactIds")); + validRecipients = BulkMailUtils.filterNewRecipients(bulkMailId, proposedRecipients); +} + +result.string(JSON.stringify(validRecipients)); \ No newline at end of file diff --git a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod index 4ecfda58d231870c07359fe28fb481de5cd1d367..383d48350eeac31dfdf62f5bdadfc99b7cca79be 100644 --- a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod +++ b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod @@ -18,11 +18,11 @@ <fields> <entityFieldLink> <name>1b9e38a5-e921-48f7-ba04-71b758fa9ed3</name> - <entityField>currentRecipients</entityField> + <entityField>currentRecipientCount</entityField> </entityFieldLink> <entityFieldLink> <name>4578042c-9210-4dc4-870f-298a390aebd8</name> - <entityField>futureRecipients</entityField> + <entityField>futureRecipientCount</entityField> </entityFieldLink> </fields> </scoreCardViewTemplate>