private void SendNotification(PortalSettings settings, ContentWorkflow workflow, ContentItem item, ContentWorkflowState state, string subject, string body, string comment, int destinationStateID, int actionUserID, string source, string[] parameters) { var permissions = GetWorkflowStatePermissionByState(destinationStateID); var users = GetUsersFromPermissions(settings, permissions); var roles = GetRolesFromPermissions(settings, permissions); var replacedSubject = ReplaceNotificationTokens(subject, workflow, item, GetWorkflowStateByID(destinationStateID), settings.PortalId, actionUserID); var replacedBody = ReplaceNotificationTokens(body, workflow, item, GetWorkflowStateByID(destinationStateID), settings.PortalId, actionUserID); SendNotification(state.SendEmail, state.SendMessage, settings, roles, users, replacedSubject, replacedBody, comment, actionUserID, source, parameters); }
private int GetLastWorkflowStateID(ContentWorkflow workflow) { int intStateID = -1; var states = workflow.States; if (states.Any()) { intStateID = states.OrderBy(s => s.Order).LastOrDefault().StateID; } return(intStateID); }
public string ReplaceNotificationTokens(string text, ContentWorkflow workflow, ContentItem item, ContentWorkflowState state, int portalID, int userID, string comment = "") { var user = UserController.GetUserById(portalID, userID); var datetime = DateTime.Now; var result = text.Replace("[USER]", user != null ? user.DisplayName : ""); result = result.Replace("[DATE]", datetime.ToString("d-MMM-yyyy hh:mm") + datetime.ToString("tt").ToLowerInvariant()); result = result.Replace("[STATE]", state != null ? state.StateName : ""); result = result.Replace("[WORKFLOW]", workflow != null ? workflow.WorkflowName : ""); result = result.Replace("[CONTENT]", item != null ? item.ContentTitle : ""); result = result.Replace("[COMMENT]", !String.IsNullOrEmpty(comment) ? comment : ""); return(result); }
private int GetPreviousWorkflowStateID(ContentWorkflow workflow, int stateID) { int intPreviousStateID = -1; var states = workflow.States.OrderBy(s => s.Order); int intItem = 0; // locate the current state var initState = states.SingleOrDefault(s => s.StateID == stateID); if (initState != null) { intPreviousStateID = initState.StateID; } for (int i = 0; i < states.Count(); i++) { if (states.ElementAt(i).StateID == stateID) { intPreviousStateID = stateID; intItem = i; } } // get previous active state if (intPreviousStateID == stateID) { intItem = intItem - 1; while (intItem >= 0) { if (states.ElementAt(intItem).IsActive) { intPreviousStateID = states.ElementAt(intItem).StateID; break; } intItem = intItem - 1; } } // if none found then reset to first state if (intPreviousStateID == -1) { intPreviousStateID = this.GetFirstWorkflowStateID(workflow); } return(intPreviousStateID); }
private int GetNextWorkflowStateID(ContentWorkflow workflow, int stateID) { int intNextStateID = -1; var states = workflow.States.OrderBy(s => s.Order); int intItem = 0; // locate the current state for (intItem = 0; intItem < states.Count(); intItem++) { if (states.ElementAt(intItem).StateID == stateID) { intNextStateID = stateID; break; } } // get next active state if (intNextStateID == stateID) { intItem = intItem + 1; while (intItem < states.Count()) { if (states.ElementAt(intItem).IsActive) { intNextStateID = states.ElementAt(intItem).StateID; break; } intItem = intItem + 1; } } // if none found then reset to first state if (intNextStateID == -1) { intNextStateID = this.GetFirstWorkflowStateID(workflow); } return(intNextStateID); }
private bool IsWorkflowCompleted(ContentWorkflow workflow, ContentItem item) { var endStateID = GetLastWorkflowStateID(workflow); return(item.StateID == Null.NullInteger || endStateID == item.StateID); }
public void CreateDefaultWorkflows(int portalId) { if (GetWorkflows(portalId).Any(w => w.WorkflowName == Localization.GetString("DefaultWorkflowName"))) { return; } var worflow = new ContentWorkflow { PortalID = portalId, WorkflowName = Localization.GetString("DefaultWorkflowName"), Description = Localization.GetString("DefaultWorkflowDescription"), IsDeleted = false, StartAfterCreating = false, StartAfterEditing = true, DispositionEnabled = false, States = new List <ContentWorkflowState> { new ContentWorkflowState { StateName = Localization.GetString("DefaultWorkflowState1.StateName"), Order = 1, IsActive = true, SendEmail = false, SendMessage = true, IsDisposalState = false, OnCompleteMessageSubject = Localization.GetString( "DefaultWorkflowState1.OnCompleteMessageSubject"), OnCompleteMessageBody = Localization.GetString( "DefaultWorkflowState1.OnCompleteMessageBody"), OnDiscardMessageSubject = Localization.GetString( "DefaultWorkflowState1.OnDiscardMessageSubject"), OnDiscardMessageBody = Localization.GetString( "DefaultWorkflowState1.OnDiscardMessageBody") }, new ContentWorkflowState { StateName = Localization.GetString("DefaultWorkflowState2.StateName"), Order = 2, IsActive = true, SendEmail = false, SendMessage = true, IsDisposalState = false, OnCompleteMessageSubject = Localization.GetString( "DefaultWorkflowState2.OnCompleteMessageSubject"), OnCompleteMessageBody = Localization.GetString( "DefaultWorkflowState2.OnCompleteMessageBody"), OnDiscardMessageSubject = Localization.GetString( "DefaultWorkflowState2.OnDiscardMessageSubject"), OnDiscardMessageBody = Localization.GetString( "DefaultWorkflowState2.OnDiscardMessageBody") }, new ContentWorkflowState { StateName = Localization.GetString("DefaultWorkflowState3.StateName"), Order = 3, IsActive = true, SendEmail = false, SendMessage = true, IsDisposalState = false, OnCompleteMessageSubject = Localization.GetString( "DefaultWorkflowState3.OnCompleteMessageSubject"), OnCompleteMessageBody = Localization.GetString( "DefaultWorkflowState3.OnCompleteMessageBody"), OnDiscardMessageSubject = Localization.GetString( "DefaultWorkflowState3.OnDiscardMessageSubject"), OnDiscardMessageBody = Localization.GetString( "DefaultWorkflowState3.OnDiscardMessageBody") } } }; AddWorkflow(worflow); foreach (var state in worflow.States) { state.WorkflowID = worflow.WorkflowID; AddWorkflowState(state); } }
public void UpdateWorkflow(ContentWorkflow workflow) { DataProvider.Instance().UpdateContentWorkflow(workflow.WorkflowID, workflow.WorkflowName, workflow.Description, workflow.IsDeleted, workflow.StartAfterCreating, workflow.StartAfterEditing, workflow.DispositionEnabled); }
public void AddWorkflow(ContentWorkflow workflow) { var id = DataProvider.Instance().AddContentWorkflow(workflow.PortalID, workflow.WorkflowName, workflow.Description, workflow.IsDeleted, workflow.StartAfterCreating, workflow.StartAfterEditing, workflow.DispositionEnabled); workflow.WorkflowID = id; }
public void CreateDefaultWorkflows(int portalId) { var wf = new ContentWorkflow { PortalID = portalId, WorkflowName = Localization.GetString("DefaultWorkflowName"), Description = Localization.GetString("DefaultWorkflowDescription"), IsDeleted = false, StartAfterCreating = false, StartAfterEditing = true, DispositionEnabled = false, States = new List <ContentWorkflowState> { new ContentWorkflowState { StateName = Localization.GetString("DefaultWorkflowState1.StateName"), Order = 1, IsActive = true, SendEmail = false, SendMessage = true, IsDisposalState = false, OnCompleteMessageSubject = Localization.GetString("DefaultWorkflowState1.OnCompleteMessageSubject"), OnCompleteMessageBody = Localization.GetString("DefaultWorkflowState1.OnCompleteMessageBody"), OnDiscardMessageSubject = Localization.GetString("DefaultWorkflowState1.OnDiscardMessageSubject"), OnDiscardMessageBody = Localization.GetString("DefaultWorkflowState1.OnDiscardMessageBody") }, new ContentWorkflowState { StateName = Localization.GetString("DefaultWorkflowState2.StateName"), Order = 2, IsActive = true, SendEmail = false, SendMessage = true, IsDisposalState = false, OnCompleteMessageSubject = Localization.GetString("DefaultWorkflowState2.OnCompleteMessageSubject"), OnCompleteMessageBody = Localization.GetString("DefaultWorkflowState2.OnCompleteMessageBody"), OnDiscardMessageSubject = Localization.GetString("DefaultWorkflowState2.OnDiscardMessageSubject"), OnDiscardMessageBody = Localization.GetString("DefaultWorkflowState2.OnDiscardMessageBody") }, new ContentWorkflowState { StateName = Localization.GetString("DefaultWorkflowState3.StateName"), Order = 3, IsActive = true, SendEmail = false, SendMessage = true, IsDisposalState = false, OnCompleteMessageSubject = Localization.GetString("DefaultWorkflowState3.OnCompleteMessageSubject"), OnCompleteMessageBody = Localization.GetString("DefaultWorkflowState3.OnCompleteMessageBody"), OnDiscardMessageSubject = Localization.GetString("DefaultWorkflowState3.OnDiscardMessageSubject"), OnDiscardMessageBody = Localization.GetString("DefaultWorkflowState3.OnDiscardMessageBody") } } }; AddWorkflow(wf); foreach (var wfs in wf.States) { wfs.WorkflowID = wf.WorkflowID; AddWorkflowState(wfs); } }