public IWorkflowAction GetWorkflowActionInstance(int contentTypeId, WorkflowActionTypes actionType) { var action = _workflowActionRepository.GetWorkflowAction(contentTypeId, actionType.ToString()); if (action == null) { return(null); } return(Reflection.CreateInstance(Reflection.CreateType(action.ActionSource)) as IWorkflowAction); }
private void PerformWorkflowActionOnStateChanging(StateTransaction stateTransaction, WorkflowActionTypes actionType) { var contentItem = _contentController.GetContentItem(stateTransaction.ContentItemId); var workflowAction = GetWorkflowActionInstance(contentItem, actionType); if (workflowAction != null) { workflowAction.DoActionOnStateChanging(stateTransaction); } }
private void SendNotificationsToReviewers(ContentItem contentItem, WorkflowState state, StateTransaction stateTransaction, WorkflowActionTypes workflowActionType, PortalSettings portalSettings) { try { if (!state.SendNotification && !state.SendNotificationToAdministrators) { return; } var reviewers = GetUserAndRolesForStateReviewers(portalSettings, state); if (!reviewers.Roles.Any() && !reviewers.Users.Any()) { return; // If there are no receivers, the notification is avoided } var workflowAction = GetWorkflowActionInstance(contentItem, workflowActionType); if (workflowAction == null) { return; } var message = workflowAction.GetActionMessage(stateTransaction, state); var notification = GetNotification(GetWorkflowNotificationContext(contentItem, state), stateTransaction, message, ContentWorkflowNotificationType); _notificationsController.SendNotification(notification, portalSettings.PortalId, reviewers.Roles.ToList(), reviewers.Users.ToList()); } catch (Exception ex) { Services.Exceptions.Exceptions.LogException(ex); } }
private void SendNotificationToWorkflowStarter(StateTransaction stateTransaction, Entities.Workflow workflow, ContentItem contentItem, int starterUserId, WorkflowActionTypes workflowActionType) { try { if (!workflow.FirstState.SendNotification) { return; } var workflowAction = GetWorkflowActionInstance(contentItem, workflowActionType); if (workflowAction == null) { return; } var user = _userController.GetUser(workflow.PortalID, starterUserId); var message = workflowAction.GetActionMessage(stateTransaction, workflow.FirstState); var notification = GetNotification(GetWorkflowNotificationContext(contentItem, workflow.FirstState), stateTransaction, message, ContentWorkflowNotificatioStartWorkflowType); _notificationsController.SendNotification(notification, workflow.PortalID, null, new[] { user }); } catch (Exception ex) { Services.Exceptions.Exceptions.LogException(ex); } }
private void SendNotificationToAuthor(StateTransaction stateTransaction, WorkflowState state, Entities.Workflow workflow, ContentItem contentItem, WorkflowActionTypes workflowActionType) { try { if (!state.SendNotification) { return; } var user = GetUserThatHaveStartedOrSubmittedDraftState(workflow, contentItem, stateTransaction); if (user == null) { //Services.Exceptions.Exceptions.LogException(new WorkflowException(Localization.GetExceptionMessage("WorkflowAuthorNotFound", "Author cannot be found. Notification won't be sent"))); return; } if (user.UserID == stateTransaction.UserId) { return; } var workflowAction = GetWorkflowActionInstance(contentItem, workflowActionType); if (workflowAction == null) { return; } var message = workflowAction.GetActionMessage(stateTransaction, state); var notification = GetNotification(GetWorkflowNotificationContext(contentItem, state), stateTransaction, message, ContentWorkflowNotificationNoActionType); _notificationsController.SendNotification(notification, workflow.PortalID, null, new[] { user }); } catch (Exception ex) { Services.Exceptions.Exceptions.LogException(ex); } }
private IWorkflowAction GetWorkflowActionInstance(ContentItem contentItem, WorkflowActionTypes actionType) { return(_workflowActionManager.GetWorkflowActionInstance(contentItem.ContentTypeId, actionType)); }
private void SendNotificationToWorkflowStarter(StateTransaction stateTransaction, Entities.Workflow workflow, ContentItem contentItem, int starterUserId, WorkflowActionTypes workflowActionType) { try { var workflowAction = GetWorkflowActionInstance(contentItem, workflowActionType); if (workflowAction == null) { return; } var user = _userController.GetUser(workflow.PortalID, starterUserId); var message = workflowAction.GetActionMessage(stateTransaction, workflow.FirstState); var notification = new Notification { NotificationTypeID = _notificationsController.GetNotificationType(ContentWorkflowNotificatioStartWorkflowType).NotificationTypeId, Subject = message.Subject, Body = message.Body, IncludeDismissAction = true, SenderUserID = stateTransaction.UserId, Context = GetWorkflowNotificationContext(contentItem, workflow.FirstState) }; _notificationsController.SendNotification(notification, workflow.PortalID, null, new[] { user }); } catch (Exception ex) { Services.Exceptions.Exceptions.LogException(ex); } }