/// <summary> /// Refreshes this instance. /// </summary> public void Refresh() { EntityTriggers = new Dictionary<string, List<WorkflowTriggerDto>>(); var service = new WorkflowTriggerService(); foreach ( var trigger in service.Queryable() ) { if ( !EntityTriggers.ContainsKey( trigger.EntityType.Name ) ) { EntityTriggers.Add( trigger.EntityType.Name, new List<WorkflowTriggerDto>() ); } EntityTriggers[trigger.EntityType.Name].Add( trigger.ToDto() ); } }
/// <summary> /// Refreshes this instance. /// </summary> public static void Refresh() { lock ( obj ) { EntityTriggers = new Dictionary<string, List<WorkflowTrigger>>(); var service = new WorkflowTriggerService( new RockContext() ); foreach ( var trigger in service.Queryable() ) { if ( !EntityTriggers.ContainsKey( trigger.EntityType.Name ) ) { EntityTriggers.Add( trigger.EntityType.Name, new List<WorkflowTrigger>() ); } EntityTriggers[trigger.EntityType.Name].Add( trigger.Clone() as WorkflowTrigger ); } } }
/// <summary> /// Handles the Delete event of the gWorkflowTrigger control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param> protected void gWorkflowTrigger_Delete( object sender, RowEventArgs e ) { var rockContext = new RockContext(); WorkflowTriggerService WorkflowTriggerService = new WorkflowTriggerService( rockContext ); WorkflowTrigger WorkflowTrigger = WorkflowTriggerService.Get( (int)e.RowKeyValue ); if ( WorkflowTrigger != null ) { string errorMessage; if ( !WorkflowTriggerService.CanDelete( WorkflowTrigger, out errorMessage ) ) { mdGridWarning.Show( errorMessage, ModalAlertType.Information ); return; } WorkflowTriggerService.Delete( WorkflowTrigger ); rockContext.SaveChanges(); } BindGrid(); }
/// <summary> /// Handles the Click event of the btnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnSave_Click( object sender, EventArgs e ) { WorkflowTrigger WorkflowTrigger; var rockContext = new RockContext(); WorkflowTriggerService WorkflowTriggerService = new WorkflowTriggerService( rockContext ); AttributeService attributeService = new AttributeService( rockContext ); int WorkflowTriggerId = int.Parse( hfWorkflowTriggerId.Value ); if ( WorkflowTriggerId == 0 ) { WorkflowTrigger = new WorkflowTrigger(); WorkflowTriggerService.Add( WorkflowTrigger ); } else { WorkflowTrigger = WorkflowTriggerService.Get( WorkflowTriggerId ); } WorkflowTrigger.EntityTypeId = ddlEntityType.SelectedValueAsInt().Value; WorkflowTrigger.EntityTypeQualifierColumn = ddlQualifierColumn.SelectedValue; WorkflowTrigger.EntityTypeQualifierValue = tbQualifierValue.Text; WorkflowTrigger.WorkflowTypeId = ddlWorkflowType.SelectedValueAsInt().Value; WorkflowTrigger.WorkflowTriggerType = (WorkflowTriggerType)System.Enum.Parse( typeof( WorkflowTriggerType ), rblTriggerType.SelectedValue ); WorkflowTrigger.IsActive = cbIsActive.Checked; if ( string.IsNullOrWhiteSpace( tbWorkflowName.Text ) ) { WorkflowTrigger.WorkflowName = null; } else { WorkflowTrigger.WorkflowName = tbWorkflowName.Text; } if ( !WorkflowTrigger.IsValid ) { // Controls will render the error messages return; } rockContext.SaveChanges(); Rock.Workflow.TriggerCache.Refresh(); NavigateToParentPage(); }
/// <summary> /// Shows the edit. /// </summary> /// <param name="itemKey">The item key.</param> /// <param name="itemKeyValue">The item key value.</param> public void ShowDetail( string itemKey, int itemKeyValue ) { if ( !itemKey.Equals( "WorkflowTriggerId" ) ) { return; } pnlDetails.Visible = true; WorkflowTrigger WorkflowTrigger = null; if ( !itemKeyValue.Equals( 0 ) ) { WorkflowTrigger = new WorkflowTriggerService( new RockContext() ).Get( itemKeyValue ); lActionTitle.Text = ActionTitle.Edit( WorkflowTrigger.FriendlyTypeName ).FormatAsHtmlTitle(); } else { WorkflowTrigger = new WorkflowTrigger { Id = 0, WorkflowTriggerType = WorkflowTriggerType.PostSave, IsActive=true }; lActionTitle.Text = ActionTitle.Add( WorkflowTrigger.FriendlyTypeName ).FormatAsHtmlTitle(); } LoadDropDowns(); hfWorkflowTriggerId.Value = WorkflowTrigger.Id.ToString(); ddlEntityType.SetValue( WorkflowTrigger.EntityTypeId ); LoadColumnNames(); ddlQualifierColumn.SetValue( WorkflowTrigger.EntityTypeQualifierColumn ); tbQualifierValue.Text = WorkflowTrigger.EntityTypeQualifierValue; ddlWorkflowType.SetValue( WorkflowTrigger.WorkflowTypeId ); rblTriggerType.SelectedValue = WorkflowTrigger.WorkflowTriggerType.ConvertToInt().ToString(); tbWorkflowName.Text = WorkflowTrigger.WorkflowName ?? string.Empty; cbIsActive.Checked = WorkflowTrigger.IsActive ?? false; // render UI based on Authorized and IsSystem bool readOnly = false; nbEditModeMessage.Text = string.Empty; if ( !IsUserAuthorized( Authorization.EDIT ) ) { readOnly = true; nbEditModeMessage.Text = EditModeMessage.ReadOnlyEditActionNotAllowed( WorkflowTrigger.FriendlyTypeName ); } if ( WorkflowTrigger.IsSystem ) { readOnly = true; nbEditModeMessage.Text = EditModeMessage.ReadOnlySystem( WorkflowTrigger.FriendlyTypeName ); } if ( readOnly ) { lActionTitle.Text = ActionTitle.View( WorkflowTrigger.FriendlyTypeName ); btnCancel.Text = "Close"; } ddlEntityType.Enabled = !readOnly; ddlQualifierColumn.Enabled = !readOnly; tbQualifierValue.ReadOnly = readOnly; ddlWorkflowType.Enabled = !readOnly; rblTriggerType.Enabled = !readOnly; tbWorkflowName.ReadOnly = readOnly; cbIsActive.Enabled = !readOnly; btnSave.Visible = !readOnly; }
/// <summary> /// Binds the grid. /// </summary> private void BindGrid() { var triggers = new WorkflowTriggerService( new RockContext() ).Queryable(); string includeInactive = gfWorkflowTrigger.GetUserPreference( "Include Inactive" ); if ( String.IsNullOrEmpty( includeInactive ) || !includeInactive.Contains( "Yes" ) ) { triggers = triggers.Where( a => a.IsActive == true ); } gWorkflowTrigger.DataSource = triggers .OrderBy( w => w.EntityType.Name ) .ThenBy( w => w.EntityTypeQualifierColumn ) .ThenBy( w => w.EntityTypeQualifierValue ).Select( a => new { a.Id, EntityTypeFriendlyName = a.EntityType.FriendlyName, a.WorkflowTriggerType, a.EntityTypeQualifierColumn, a.EntityTypeQualifierValue, WorkflowTypeName = a.WorkflowType.Name, a.IsSystem, a.IsActive } ).ToList(); gWorkflowTrigger.DataBind(); }
/// <summary> /// Handles the Click event of the btnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnSave_Click( object sender, EventArgs e ) { WorkflowTrigger workflowTrigger; var rockContext = new RockContext(); WorkflowTriggerService WorkflowTriggerService = new WorkflowTriggerService( rockContext ); AttributeService attributeService = new AttributeService( rockContext ); int WorkflowTriggerId = int.Parse( hfWorkflowTriggerId.Value ); if ( WorkflowTriggerId == 0 ) { workflowTrigger = new WorkflowTrigger(); WorkflowTriggerService.Add( workflowTrigger ); } else { workflowTrigger = WorkflowTriggerService.Get( WorkflowTriggerId ); } workflowTrigger.WorkflowTypeId = ddlWorkflowType.SelectedValueAsInt().Value; workflowTrigger.WorkflowTriggerType = (WorkflowTriggerType)System.Enum.Parse( typeof( WorkflowTriggerType ), rblTriggerType.SelectedValue ); workflowTrigger.EntityTypeId = ddlEntityType.SelectedValueAsInt().Value; workflowTrigger.EntityTypeQualifierColumn = ddlQualifierColumn.SelectedValue; // If the trigger type is PreSave and the tbQualifierValue does not exist, // use the previous and alt qualifier value if ( workflowTrigger.WorkflowTriggerType == WorkflowTriggerType.PreSave ) { if ( !string.IsNullOrEmpty( tbQualifierValue.Text ) ) { // in this case, use the same value as the previous and current qualifier value workflowTrigger.EntityTypeQualifierValue = tbQualifierValue.Text; workflowTrigger.EntityTypeQualifierValuePrevious = tbQualifierValue.Text; } else { workflowTrigger.EntityTypeQualifierValue = tbQualifierValueAlt.Text; workflowTrigger.EntityTypeQualifierValuePrevious = tbPreviousQualifierValue.Text; } } else { // use the regular qualifier and clear the previous value qualifier since it does not apply. workflowTrigger.EntityTypeQualifierValue = tbQualifierValue.Text; workflowTrigger.EntityTypeQualifierValuePrevious = string.Empty; } workflowTrigger.IsActive = cbIsActive.Checked; if ( string.IsNullOrWhiteSpace( tbWorkflowName.Text ) ) { workflowTrigger.WorkflowName = null; } else { workflowTrigger.WorkflowName = tbWorkflowName.Text; } if ( !workflowTrigger.IsValid ) { // Controls will render the error messages return; } rockContext.SaveChanges(); Rock.Workflow.TriggerCache.Refresh(); NavigateToParentPage(); }
/// <summary> /// Handles the Delete event of the gWorkflowTrigger control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param> protected void gWorkflowTrigger_Delete( object sender, RowEventArgs e ) { RockTransactionScope.WrapTransaction( () => { WorkflowTriggerService WorkflowTriggerService = new WorkflowTriggerService(); WorkflowTrigger WorkflowTrigger = WorkflowTriggerService.Get( (int)e.RowKeyValue ); if ( WorkflowTrigger != null ) { string errorMessage; if ( !WorkflowTriggerService.CanDelete( WorkflowTrigger, out errorMessage ) ) { mdGridWarning.Show( errorMessage, ModalAlertType.Information ); return; } WorkflowTriggerService.Delete( WorkflowTrigger, CurrentPersonId ); WorkflowTriggerService.Save( WorkflowTrigger, CurrentPersonId ); } } ); BindGrid(); }