diff options
Diffstat (limited to 'www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/ViewRecipCtrl.js')
-rw-r--r-- | www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/ViewRecipCtrl.js | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/ViewRecipCtrl.js b/www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/ViewRecipCtrl.js new file mode 100644 index 00000000..d72793fd --- /dev/null +++ b/www/crm/wp-content/plugins/civicrm/civicrm/ang/crmMailing/ViewRecipCtrl.js @@ -0,0 +1,128 @@ +(function(angular, $, _) { + + angular.module('crmMailing').controller('ViewRecipCtrl', function ViewRecipCtrl($scope) { + var mids = []; + var gids = []; + var groupNames = []; + var mailings = []; + var civimailings = []; + var civimails = []; + + function getGroupNames(mailing) { + if (-1 == mailings.indexOf(mailing.id)) { + mailings.push(mailing.id); + _.each(mailing.recipients.groups.include, function(id) { + if (-1 == gids.indexOf(id)) { + gids.push(id); + } + }); + _.each(mailing.recipients.groups.exclude, function(id) { + if (-1 == gids.indexOf(id)) { + gids.push(id); + } + }); + _.each(mailing.recipients.groups.base, function(id) { + if (-1 == gids.indexOf(id)) { + gids.push(id); + } + }); + if (!_.isEmpty(gids)) { + CRM.api3('Group', 'get', {'id': {"IN": gids}}).then(function(result) { + _.each(result.values, function(grp) { + if (_.isEmpty(_.where(groupNames, {id: parseInt(grp.id)}))) { + groupNames.push({id: parseInt(grp.id), title: grp.title, is_hidden: grp.is_hidden}); + } + }); + CRM.crmMailing.groupNames = groupNames; + $scope.$parent.crmMailingConst.groupNames = groupNames; + }); + } + } + } + + function getCiviMails(mailing) { + if (-1 == civimailings.indexOf(mailing.id)) { + civimailings.push(mailing.id); + _.each(mailing.recipients.mailings.include, function(id) { + if (-1 == mids.indexOf(id)) { + mids.push(id); + } + }); + _.each(mailing.recipients.mailings.exclude, function(id) { + if (-1 == mids.indexOf(id)) { + mids.push(id); + } + }); + if (!_.isEmpty(mids)) { + CRM.api3('Mailing', 'get', {'id': {"IN": mids}}).then(function(result) { + _.each(result.values, function(mail) { + if (_.isEmpty(_.where(civimails, {id: parseInt(mail.id)}))) { + civimails.push({id: parseInt(mail.id), name: mail.label}); + } + }); + CRM.crmMailing.civiMails = civimails; + $scope.$parent.crmMailingConst.civiMails = civimails; + }); + } + } + } + + $scope.getIncludesAsString = function(mailing) { + var first = true; + var names = ''; + if (_.isEmpty(CRM.crmMailing.groupNames)) { + getGroupNames(mailing); + } + if (_.isEmpty(CRM.crmMailing.civiMails)) { + getCiviMails(mailing); + } + _.each(mailing.recipients.groups.include, function(id) { + var group = _.where(CRM.crmMailing.groupNames, {id: parseInt(id)}); + if (group.length) { + if (!first) { + names = names + ', '; + } + names = names + group[0].title; + first = false; + } + }); + _.each(mailing.recipients.mailings.include, function(id) { + var oldMailing = _.where(CRM.crmMailing.civiMails, {id: parseInt(id)}); + if (oldMailing.length) { + if (!first) { + names = names + ', '; + } + names = names + oldMailing[0].name; + first = false; + } + }); + return names; + }; + $scope.getExcludesAsString = function(mailing) { + var first = true; + var names = ''; + _.each(mailing.recipients.groups.exclude, function(id) { + var group = _.where(CRM.crmMailing.groupNames, {id: parseInt(id)}); + if (group.length) { + if (!first) { + names = names + ', '; + } + names = names + group[0].title; + first = false; + } + }); + _.each(mailing.recipients.mailings.exclude, function(id) { + var oldMailing = _.where(CRM.crmMailing.civiMails, {id: parseInt(id)}); + if (oldMailing.length) { + if (!first) { + names = names + ', '; + } + names = names + oldMailing[0].name; + first = false; + } + }); + return names; + }; + }); + +})(angular, CRM.$, CRM._); |