public void Can_Get_Task_By_id()
        {
            IContent root = Scaffold.Node(_contentService);

            Guid guid = Guid.NewGuid();

            _instancesService.InsertInstance(Scaffold.Instance(guid, 1, root.Id));
            _service.InsertTask(Scaffold.Task(guid));

            List <WorkflowTaskViewModel> tasks = _service.GetPendingTasks(new List <int>
            {
                (int)TaskStatus.PendingApproval
            }, 10, 1);
            int id = tasks.First().TaskId;

            WorkflowTaskViewModel taskViewModel = _service.GetTask(id);

            Assert.NotNull(taskViewModel);
            Assert.Equal(id, taskViewModel.TaskId);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Converts a list of workflowTaskInstances into a list of UI-ready workflowTasks
        /// </summary>
        /// <param name="taskInstances"></param>
        /// <param name="sorted">Depending on the caller, the response may not be sorted</param>
        /// <param name="instance"></param>
        /// <returns></returns>
        public List <WorkflowTaskViewModel> ConvertToWorkflowTaskList(List <WorkflowTaskPoco> taskInstances, bool sorted = true, WorkflowInstancePoco instance = null)
        {
            List <WorkflowTaskViewModel> workflowItems = new List <WorkflowTaskViewModel>();

            if (!taskInstances.Any())
            {
                return(workflowItems);
            }

            bool useInstanceFromTask = instance == null;

            foreach (WorkflowTaskPoco taskInstance in taskInstances)
            {
                instance = useInstanceFromTask ? taskInstance.WorkflowInstance : instance;

                // ignore workflows where node has been deleted
                if (instance.Node == null || instance.Node.Path.Contains(Constants.System.RecycleBinContentString))
                {
                    continue;
                }

                // if the instance has been rejected/resubmitted, get the most recent comment from that stage
                if (instance.WorkflowStatus.In(WorkflowStatus.Rejected, WorkflowStatus.Resubmitted))
                {
                }

                var item = new WorkflowTaskViewModel
                {
                    InstanceGuid = instance.Guid,
                    TaskId       = taskInstance.Id,

                    Type        = instance.WorkflowType.Description(instance.ScheduledDate),
                    TypeId      = instance.Type,
                    CurrentStep = taskInstance.ApprovalStep,

                    Status         = taskInstance.Status,
                    StatusName     = taskInstance.StatusName,
                    CssStatus      = taskInstance.StatusName.ToLower().Replace(' ', '-'),
                    InstanceStatus = instance.WorkflowStatus.ToString().ToLower(),

                    NodeId   = instance.NodeId,
                    NodeName = instance.Node.Name,

                    RequestedById   = instance.AuthorUserId,
                    RequestedBy     = instance.AuthorUser?.Name,
                    RequestedOn     = taskInstance.CreatedDate.ToFriendlyDate(),
                    Comment         = taskInstance.Comment,
                    InstanceComment = instance.AuthorComment,

                    ApprovalGroupId = taskInstance.UserGroup?.GroupId,
                    ApprovalGroup   = taskInstance.UserGroup?.Name,
                    CompletedBy     = taskInstance.ActionedByUser?.Name,
                    CompletedOn     = taskInstance.CompletedDate?.ToFriendlyDate(),

                    ActionedByAdmin = taskInstance.ActionedByAdmin,

                    Permissions = _configService.GetRecursivePermissionsForNode(instance.Node)
                };

                workflowItems.Add(item);
            }

            return(sorted ? workflowItems.OrderByDescending(x => x.CurrentStep).ToList() : workflowItems.ToList());
        }