Exemplo n.º 1
0
        /// <summary>
        /// Executes the specified workflow.
        /// </summary>
        /// <param name="rockContext">The rock context.</param>
        /// <param name="action">The action.</param>
        /// <param name="entity">The entity.</param>
        /// <param name="errorMessages">The error messages.</param>
        /// <returns></returns>
        public override bool Execute(RockContext rockContext, WorkflowAction action, Object entity, out List <string> errorMessages)
        {
            errorMessages = new List <string>();

            // Get the person
            PersonAlias personAlias     = null;
            Guid        personAliasGuid = action.GetWorkflowAttributeValue(GetAttributeValue(action, "PersonAttribute").AsGuid()).AsGuid();

            personAlias = new PersonAliasService(rockContext).Get(personAliasGuid);
            if (personAlias == null)
            {
                errorMessages.Add("Invalid Person Attribute or Value!");
                return(false);
            }

            // Get the opportunity
            ConnectionOpportunity opportunity = null;
            Guid opportunityTypeGuid          = action.GetWorkflowAttributeValue(GetAttributeValue(action, "ConnectionOpportunityAttribute").AsGuid()).AsGuid();

            opportunity = new ConnectionOpportunityService(rockContext).Get(opportunityTypeGuid);
            if (opportunity == null)
            {
                errorMessages.Add("Invalid Connection Opportunity Attribute or Value!");
                return(false);
            }

            // Get connection status
            ConnectionStatus status = null;
            Guid?            connectionStatusGuid          = null;
            Guid?            connectionStatusAttributeGuid = GetAttributeValue(action, "ConnectionStatusAttribute").AsGuidOrNull();

            if (connectionStatusAttributeGuid.HasValue)
            {
                connectionStatusGuid = action.GetWorkflowAttributeValue(connectionStatusAttributeGuid.Value).AsGuidOrNull();
                if (connectionStatusGuid.HasValue)
                {
                    status = opportunity.ConnectionType.ConnectionStatuses
                             .Where(s => s.Guid.Equals(connectionStatusGuid.Value))
                             .FirstOrDefault();
                }
            }
            if (status == null)
            {
                connectionStatusGuid = GetAttributeValue(action, "ConnectionStatus").AsGuidOrNull();
                if (connectionStatusGuid.HasValue)
                {
                    status = opportunity.ConnectionType.ConnectionStatuses
                             .Where(s => s.Guid.Equals(connectionStatusGuid.Value))
                             .FirstOrDefault();
                }
            }
            if (status == null)
            {
                status = opportunity.ConnectionType.ConnectionStatuses
                         .Where(s => s.IsDefault)
                         .FirstOrDefault();
            }

            // Get Campus
            int? campusId            = null;
            Guid?campusAttributeGuid = GetAttributeValue(action, "CampusAttribute").AsGuidOrNull();

            if (campusAttributeGuid.HasValue)
            {
                Guid?campusGuid = action.GetWorkflowAttributeValue(campusAttributeGuid.Value).AsGuidOrNull();
                if (campusGuid.HasValue)
                {
                    var campus = CampusCache.Get(campusGuid.Value);
                    if (campus != null)
                    {
                        campusId = campus.Id;
                    }
                }
            }

            // Get the Comment
            String comment = action.GetWorkflowAttributeValue(GetAttributeValue(action, "ConnectionCommentAttribute").AsGuid());

            var connectionRequestService = new ConnectionRequestService(rockContext);

            var connectionRequest = new ConnectionRequest();

            connectionRequest.PersonAliasId           = personAlias.Id;
            connectionRequest.ConnectionOpportunityId = opportunity.Id;
            connectionRequest.ConnectionState         = ConnectionState.Active;
            connectionRequest.ConnectionStatusId      = status.Id;
            connectionRequest.CampusId = campusId;
            connectionRequest.ConnectorPersonAliasId = opportunity.GetDefaultConnectorPersonAliasId(campusId);
            connectionRequest.Comments = comment;

            connectionRequestService.Add(connectionRequest);
            rockContext.SaveChanges();

            // If request attribute was specified, requery the request and set the attribute's value
            Guid?connectionRequestAttributeGuid = GetAttributeValue(action, "ConnectionRequestAttribute").AsGuidOrNull();

            if (connectionRequestAttributeGuid.HasValue)
            {
                connectionRequest = connectionRequestService.Get(connectionRequest.Id);
                if (connectionRequest != null)
                {
                    SetWorkflowAttributeValue(action, connectionRequestAttributeGuid.Value, connectionRequest.Guid.ToString());
                }
            }

            return(true);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Executes the specified workflow.
        /// </summary>
        /// <param name="rockContext">The rock context.</param>
        /// <param name="action">The action.</param>
        /// <param name="entity">The entity.</param>
        /// <param name="errorMessages">The error messages.</param>
        /// <returns></returns>
        public override bool Execute( RockContext rockContext, WorkflowAction action, Object entity, out List<string> errorMessages )
        {
            errorMessages = new List<string>();

            // Get the person
            PersonAlias personAlias = null;
            Guid personAliasGuid = action.GetWorklowAttributeValue(GetAttributeValue( action, "PersonAttribute" ).AsGuid()).AsGuid();
            personAlias = new PersonAliasService( rockContext ).Get( personAliasGuid );
            if ( personAlias == null )
            {
                errorMessages.Add( "Invalid Person Attribute or Value!" );
                return false;
            }

            // Get the opportunity
            ConnectionOpportunity opportunity = null;
            Guid opportunityTypeGuid = action.GetWorklowAttributeValue( GetAttributeValue( action, "ConnectionOpportunityAttribute" ).AsGuid() ).AsGuid();
            opportunity = new ConnectionOpportunityService( rockContext ).Get( opportunityTypeGuid );
            if ( opportunity == null )
            {
                errorMessages.Add( "Invalid Connection Opportunity Attribute or Value!" );
                return false;
            }

            // Get connection status
            ConnectionStatus status = null;
            Guid? connectionStatusGuid = null;
            Guid? connectionStatusAttributeGuid = GetAttributeValue( action, "ConnectionStatusAttribute" ).AsGuidOrNull();
            if ( connectionStatusAttributeGuid.HasValue )
            {
                connectionStatusGuid = action.GetWorklowAttributeValue( connectionStatusAttributeGuid.Value ).AsGuidOrNull();
                if ( connectionStatusGuid.HasValue )
                {
                    status = opportunity.ConnectionType.ConnectionStatuses
                        .Where( s => s.Guid.Equals( connectionStatusGuid.Value ) )
                        .FirstOrDefault();
                }
            }
            if ( status == null )
            {
                connectionStatusGuid = GetAttributeValue( action, "ConnectionStatus" ).AsGuidOrNull();
                if ( connectionStatusGuid.HasValue )
                {
                    status = opportunity.ConnectionType.ConnectionStatuses
                        .Where( s => s.Guid.Equals( connectionStatusGuid.Value ) )
                        .FirstOrDefault();
                }
            }
            if ( status == null )
            {
                status = opportunity.ConnectionType.ConnectionStatuses
                    .Where( s => s.IsDefault )
                    .FirstOrDefault();
            }

            // Get Campus
            int? campusId = null;
            Guid? campusAttributeGuid = GetAttributeValue( action, "CampusAttribute" ).AsGuidOrNull();
            if ( campusAttributeGuid.HasValue )
            {
                Guid? campusGuid = action.GetWorklowAttributeValue( campusAttributeGuid.Value ).AsGuidOrNull();
                if ( campusGuid.HasValue )
                {
                    var campus = CampusCache.Read( campusGuid.Value );
                    if ( campus != null )
                    {
                        campusId = campus.Id;
                    }
                }
            }

            // Get the Comment
            String comment = action.GetWorklowAttributeValue(GetAttributeValue(action, "ConnectionCommentAttribute").AsGuid());

            var connectionRequestService = new ConnectionRequestService( rockContext );

            var connectionRequest = new ConnectionRequest();
            connectionRequest.PersonAliasId = personAlias.Id;
            connectionRequest.ConnectionOpportunityId = opportunity.Id;
            connectionRequest.ConnectionState = ConnectionState.Active;
            connectionRequest.ConnectionStatusId = status.Id;
            connectionRequest.CampusId = campusId;
            connectionRequest.ConnectorPersonAliasId = opportunity.GetDefaultConnectorPersonAliasId( campusId );
            connectionRequest.Comments = comment;

            connectionRequestService.Add( connectionRequest );
            rockContext.SaveChanges();

            // If request attribute was specified, requery the request and set the attribute's value
            Guid? connectionRequestAttributeGuid = GetAttributeValue( action, "ConnectionRequestAttribute" ).AsGuidOrNull();
            if ( connectionRequestAttributeGuid.HasValue )
            {
                connectionRequest = connectionRequestService.Get( connectionRequest.Id );
                if ( connectionRequest != null )
                {
                    SetWorkflowAttributeValue( action, connectionRequestAttributeGuid.Value, connectionRequest.Guid.ToString() );
                }
            }

            return true;
        }