Ejemplo n.º 1
0
        /// <summary>
        /// Sends a notification that NCOA finished or failed
        /// </summary>
        /// <param name="sparkDataConfig">The spark data configuration.</param>
        /// <param name="status">The status to put in the notification.</param>
        public void SentNotification(SparkDataConfig sparkDataConfig, string status)
        {
            if (!sparkDataConfig.GlobalNotificationApplicationGroupId.HasValue || sparkDataConfig.GlobalNotificationApplicationGroupId.Value == 0)
            {
                return;
            }

            var recipients = new List <RecipientData>();

            using (RockContext rockContext = new RockContext())
            {
                Group group = new GroupService(rockContext).GetNoTracking(sparkDataConfig.GlobalNotificationApplicationGroupId.Value);

                foreach (var groupMember in group.Members)
                {
                    if (groupMember.GroupMemberStatus == GroupMemberStatus.Active)
                    {
                        var mergeFields = Rock.Lava.LavaHelper.GetCommonMergeFields(null);
                        mergeFields.Add("Person", groupMember.Person);
                        mergeFields.Add("GroupMember", groupMember);
                        mergeFields.Add("Group", groupMember.Group);
                        mergeFields.Add("SparkDataService", "National Change of Address (NCOA)");
                        mergeFields.Add("SparkDataConfig", sparkDataConfig);
                        mergeFields.Add("Status", status);
                        recipients.Add(new RecipientData(groupMember.Person.Email, mergeFields));
                    }
                }

                SystemEmailService emailService = new SystemEmailService(rockContext);
                SystemEmail        systemEmail  = emailService.GetNoTracking(SystemGuid.SystemEmail.SPARK_DATA_NOTIFICATION.AsGuid());

                var emailMessage = new RockEmailMessage(systemEmail.Guid);
                emailMessage.SetRecipients(recipients);
                emailMessage.Send();
            }
        }