Esempio n. 1
0
        /// <summary>
        /// Launches the workflow.
        /// </summary>
        /// <param name="fromPersonAliasId">From person alias identifier.</param>
        /// <param name="fromPhone">From phone.</param>
        /// <param name="message">The message.</param>
        /// <param name="toPersonAliasId">To person alias identifier.</param>
        /// <param name="rockSmsFromPhoneDv">The rock SMS from phone DefinedValue.</param>
        private void LaunchWorkflow(int?fromPersonAliasId, string fromPhone, string message, int?toPersonAliasId, DefinedValueCache rockSmsFromPhoneDv)
        {
            var workflowTypeGuid = rockSmsFromPhoneDv.GetAttributeValue("LaunchWorkflowOnResponseReceived");
            var workflowType     = WorkflowTypeCache.Get(workflowTypeGuid);

            if (workflowType == null || (workflowType.IsActive != true))
            {
                return;
            }

            var personAliasService      = new PersonAliasService(new RockContext());
            var workflowAttributeValues = new Dictionary <string, string>();

            workflowAttributeValues.Add("FromPhone", fromPhone);
            workflowAttributeValues.Add("Message", message);
            workflowAttributeValues.Add("SMSFromDefinedValue", rockSmsFromPhoneDv.Guid.ToString());

            if (fromPersonAliasId != null)
            {
                workflowAttributeValues.Add("FromPerson", personAliasService.Get(fromPersonAliasId.Value).Guid.ToString() ?? string.Empty);
            }

            if (toPersonAliasId != null)
            {
                workflowAttributeValues.Add("ToPerson", personAliasService.Get(toPersonAliasId.Value).Guid.ToString() ?? string.Empty);
            }

            var launchWorkflowTransaction = new Rock.Transactions.LaunchWorkflowTransaction(workflowType.Id);

            launchWorkflowTransaction.WorkflowAttributeValues = workflowAttributeValues;
            launchWorkflowTransaction.Enqueue();
        }
Esempio n. 2
0
        /// <summary>
        /// Triggers the workflows.
        /// </summary>
        /// <param name="primaryMember">The primary member record that entered all their information.</param>
        /// <param name="secondaryMembers">The secondary members that were also added to the group.</param>
        private void TriggerWorkflows(GroupMember primaryMember, List <GroupMember> secondaryMembers)
        {
            if (!RegistrationWorkflowGuid.HasValue)
            {
                return;
            }

            var workflowType = WorkflowTypeCache.Get(RegistrationWorkflowGuid.Value);

            if (workflowType == null)
            {
                return;
            }

            var initatorAliasId = primaryMember.Person.PrimaryAliasId;

            // Launch the workflow for the main person who entered all
            // their information.
            var transaction = new Rock.Transactions.LaunchWorkflowTransaction <GroupMember>(workflowType.Guid, primaryMember.Id)
            {
                InitiatorPersonAliasId = initatorAliasId
            };

            transaction.Enqueue();

            // Launch the workflow for each family member that was also
            // added to the group.
            foreach (var member in secondaryMembers)
            {
                transaction = new Rock.Transactions.LaunchWorkflowTransaction <GroupMember>(workflowType.Guid, member.Id)
                {
                    InitiatorPersonAliasId = initatorAliasId
                };
                transaction.Enqueue();
            }
        }