private void CreatePendingWorkflowItem(Repository repository, TextContent content, string userName, Workflow workflow, WorkflowItem workflowItem, string previousComment) { PendingWorkflowItem pendingWorkflowItem = new PendingWorkflowItem() { Repository = repository, Name = content.UUID, WorkflowName = workflow.Name, WorkflowItemSequence = workflowItem.Sequence, ItemDisplayName = workflowItem.DisplayName, RoleName = workflowItem.RoleName, ContentFolder = content.FolderName, ContentUUID = content.UUID, ContentSummary = content.GetSummary(), CreationUtcDate = DateTime.UtcNow, CreationUser = userName, PreviousComment = previousComment }; PendingWorkflowItemProvider.Add(pendingWorkflowItem); }
public virtual PendingWorkflowItem GetPendingWorkflowItem(Repository repository, string roleName, string id) { return(PendingWorkflowItemProvider.Get(new PendingWorkflowItem { Repository = repository, RoleName = roleName, Name = id })); }
public virtual IEnumerable <PendingWorkflowItem> GetPendingWorkflowItems(Repository repository, string userName) { var roles = GetRoles(userName); return(roles.Select(it => PendingWorkflowItemProvider.All(repository, it)).SelectMany(it => it).ToArray()); }
public virtual void ProcessPendingWorkflowItem(Repository repository, string workflowName, string roleName, string pendingWorkflowItemId, string userName, bool passed, string comment) { var pendingItem = PendingWorkflowItemProvider.Get(new PendingWorkflowItem() { RoleName = roleName, Name = pendingWorkflowItemId, Repository = repository }); if (pendingItem != null) { var content = new TextFolder(repository, pendingItem.ContentFolder).CreateQuery().WhereEquals("UUID", pendingItem.ContentUUID).FirstOrDefault(); if (content != null) { var workflow = Get(repository, workflowName); bool finished = false; if (workflow != null) { WorkflowItem nextWorkflowItem = null; if (passed) { nextWorkflowItem = GetNextWorkflowItem(repository, workflow, pendingItem.WorkflowItemSequence + 1); if (nextWorkflowItem == null) { finished = true; } } else { nextWorkflowItem = GetNextWorkflowItem(repository, workflow, pendingItem.WorkflowItemSequence - 1); } if (nextWorkflowItem != null) { CreatePendingWorkflowItem(repository, content, userName, workflow, nextWorkflowItem, comment); } } if (finished) { var published = content.Published.HasValue ? content.Published.Value : false; if (passed && !published) { ServiceFactory.TextContentManager.Update(repository, new Schema(repository, content.SchemaName), content.UUID , new string[] { "Published" }, new object[] { true }, userName); } } WorkflowHistory history = new WorkflowHistory() { Id = WorkflowHistoryProvider.All(content).Count() + 1, Repository = repository, WorkflowName = pendingItem.WorkflowName, WorkflowItemSequence = pendingItem.WorkflowItemSequence, ItemDisplayName = pendingItem.ItemDisplayName, ContentFolder = pendingItem.ContentFolder, ContentUUID = pendingItem.ContentUUID, ContentSummary = content.GetSummary(), RoleName = pendingItem.RoleName, Passed = passed, ProcessingUtcDate = DateTime.UtcNow, ProcessingUser = userName, Finished = finished, Comment = comment }; WorkflowHistoryProvider.Add(history); } PendingWorkflowItemProvider.Remove(pendingItem); } }