public static void CancelWorkflow(AssetWorkflow assetWorkflow) { assetWorkflow.IsComplete = true; AssetWorkflow.Update(assetWorkflow); m_Logger.DebugFormat("Cancelled AssetWorkflow - AssetWorkflowId: {0}", assetWorkflow.AssetWorkflowId); if (AssetWorkflowCancelled != null) { AssetWorkflowCancelled(null, new AssetWorkflowEventArgs(assetWorkflow)); } }
private static void CompleteWorkflow(AssetWorkflow assetWorkflow) { assetWorkflow.IsComplete = true; AssetWorkflow.Update(assetWorkflow); assetWorkflow.Asset.AssetPublishStatus = AssetPublishStatus.Approved; Asset.Update(assetWorkflow.Asset); if (AssetWorkflowComplete != null) { AssetWorkflowComplete(null, new AssetWorkflowEventArgs(assetWorkflow)); } }
private static void RejectAndCompleteWorkflow(AssetWorkflow assetWorkflow, AssetWorkflowUser rejectingUser) { assetWorkflow.IsComplete = true; AssetWorkflow.Update(assetWorkflow); assetWorkflow.Asset.AssetPublishStatus = AssetPublishStatus.NotApproved; Asset.Update(assetWorkflow.Asset); if (AssetWorkflowRejected != null) { AssetWorkflowRejected(null, new AssetWorkflowRejectedEventArgs(assetWorkflow, rejectingUser)); } }
/// <summary> /// Submits an asset to a workflow, and starts the approval process /// </summary> public static void SubmitAssetToWorkflow(Asset asset, User submittedByUser) { m_Logger.DebugFormat("Asset: {0} submitted to workflow", asset.AssetId); // First ensure we have a workflow if (asset.WorkflowId.GetValueOrDefault() == 0) { throw new SystemException("Asset submitted to workflow, but workflow is not specified"); } // First get all of the users in the workflow WorkflowUserFinder finder = new WorkflowUserFinder { WorkflowId = asset.WorkflowId.GetValueOrDefault() }; finder.SortExpressions.Add(new AscendingSort(WorkflowUser.Columns.Position)); List <WorkflowUser> workflowUserList = WorkflowUser.FindMany(finder); // Ensure workflow has users if (workflowUserList.Count == 0) { throw new SystemException("Asset submitted to workflow, but workflow does not have any users"); } // Create a new asset workflow AssetWorkflow aw = AssetWorkflow.New(); aw.AssetId = asset.AssetId.GetValueOrDefault(); aw.IsComplete = false; aw.SubmittedByUserId = submittedByUser.UserId.GetValueOrDefault(); aw.CreateDate = DateTime.Now; AssetWorkflow.Update(aw); // Now add all the users to it for (int position = 0; position < workflowUserList.Count; position++) { // Get the current workflow user WorkflowUser wfu = workflowUserList[position]; // Ensure it's not a duplicate if (aw.AssetWorkflowUserList.Any(awfu => awfu.UserId == wfu.UserId)) { continue; } // Set-up the asset workflow user AssetWorkflowUser awu = AssetWorkflowUser.New(); awu.AssetWorkflowId = aw.AssetWorkflowId.GetValueOrDefault(); awu.UserId = wfu.UserId; awu.Position = position + 1; awu.AssetWorkflowUserStatus = AssetWorkflowUserStatus.Waiting; awu.CreateDate = DateTime.Now; awu.LastUpdate = DateTime.Now; // Save the workflow user to the DB AssetWorkflowUser.Update(awu); // Add the user to the workflow aw.AssetWorkflowUserList.Add(awu); } if (AssetSubmittedToWorkflow != null) { AssetSubmittedToWorkflow(null, new AssetEventArgs(asset)); } // Now notify the next user. First get them AssetWorkflowUser nextUserInWorkflow = aw.AssetWorkflowUserList[0]; // The send notification NotifyUser(nextUserInWorkflow); }