Ejemplo n.º 1
0
        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));
            }
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        /// <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);
        }