public void UpdateWorkflowState(ContentWorkflowState state)
 {
     DataProvider.Instance().UpdateContentWorkflowState(state.StateID,
                                                        state.StateName,
                                                        state.Order,
                                                        state.IsActive,
                                                        state.SendEmail,
                                                        state.SendMessage,
                                                        state.IsDisposalState,
                                                        state.OnCompleteMessageSubject,
                                                        state.OnCompleteMessageBody,
                                                        state.OnDiscardMessageSubject,
                                                        state.OnDiscardMessageBody);
 }
        public void AddWorkflowState(ContentWorkflowState state)
        {
            var id = DataProvider.Instance().AddContentWorkflowState(state.WorkflowID,
                                                                     state.StateName,
                                                                     state.Order,
                                                                     state.IsActive,
                                                                     state.SendEmail,
                                                                     state.SendMessage,
                                                                     state.IsDisposalState,
                                                                     state.OnCompleteMessageSubject,
                                                                     state.OnCompleteMessageBody,
                                                                     state.OnDiscardMessageSubject,
                                                                     state.OnDiscardMessageBody);

            state.StateID = id;
        }
        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 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);
        }