/// <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(); }
/// <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(); } }