Ejemplo n.º 1
0
 /// <summary>
 /// Получить все завершенные задания последней итерации с результатом на доработку, для которых не созданы уведомления.
 /// </summary>
 /// <param name="task">Задача.</param>
 /// <param name="lastIterationId">Ид последней итерации.</param>
 /// <returns>Список заданий.</returns>
 public static List <IFreeApprovalAssignment> GetLastAssignmentWithoutNotice(IFreeApprovalTask task, int?lastIterationId)
 {
     return(FreeApprovalAssignments.GetAll(asg => asg.Task.Equals(task) &&
                                           asg.TaskStartId == task.StartId &&
                                           asg.IterationId == lastIterationId &&
                                           asg.Status == Sungero.Workflow.AssignmentBase.Status.Completed &&
                                           asg.Result == Sungero.Docflow.FreeApprovalAssignment.Result.ForRework &&
                                           !FreeApprovalNotifications.GetAll().Any(n => Equals(n.LinkedFreeApprovalAssignment, asg))).ToList());
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Выдать права на вложения, не выше прав инициатора задачи.
        /// </summary>
        /// <param name="task">Задача.</param>
        /// <param name="performers">Исполнители.</param>
        public static void GrantRightForAttachmentsToPerformers(IFreeApprovalTask task, List <IRecipient> performers)
        {
            foreach (var performer in performers)
            {
                // На основной документ - на изменение.
                var approvalDocument = task.ForApprovalGroup.ElectronicDocuments.First();
                if (!approvalDocument.AccessRights.IsGrantedDirectly(DefaultAccessRightsTypes.FullAccess, performer))
                {
                    approvalDocument.AccessRights.Grant(performer, DefaultAccessRightsTypes.Change);
                }

                // На приложения - на изменение, но не выше, чем у инициатора.
                foreach (var document in task.AddendaGroup.ElectronicDocuments)
                {
                    if (document.AccessRights.IsGrantedDirectly(DefaultAccessRightsTypes.FullAccess, performer))
                    {
                        continue;
                    }

                    var rightType = document.AccessRights.CanUpdate(task.Author) ? DefaultAccessRightsTypes.Change : DefaultAccessRightsTypes.Read;
                    document.AccessRights.Grant(performer, rightType);
                }
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Получить номер последней итерации заданий на согласование.
 /// </summary>
 /// <param name="task">Задача.</param>
 /// <returns>Номер итерации.</returns>
 public static int?GetApprovalAssignmentLastIterationId(IFreeApprovalTask task)
 {
     return(FreeApprovalAssignments.GetAll(asg => asg.Task.Equals(task) && asg.TaskStartId == task.StartId).Select(asg => asg.IterationId).Max());
 }