Beispiel #1
0
        /// <summary>
        /// Показать диалог выбора исполнителя доработки с запросом выдачи прав на вложения.
        /// </summary>
        /// <param name="assignment">Задание.</param>
        /// <param name="attachments">Вложения.</param>
        /// <param name="additionalAssignees">Дополнительные согласующие.</param>
        /// <param name="reworkPerformer">Ответственный за доработку.</param>
        /// <param name="e">Аргументы.</param>
        /// <param name="dialogId">Ид диалога.</param>
        public virtual void ShowReworkConfirmationDialog(IAssignmentBase assignment, List <Domain.Shared.IEntity> attachments,
                                                         List <IRecipient> additionalAssignees, Sungero.Company.IEmployee reworkPerformer,
                                                         Sungero.Workflow.Client.ExecuteResultActionArgs e, string dialogId)
        {
            if (reworkPerformer != null)
            {
                additionalAssignees.Add(reworkPerformer);
            }

            // Диалог выдачи прав (отображается, если нет прав на вложения).
            if (Functions.Module.ShowDialogGrantAccessRightsWithConfirmationDialog(_obj, attachments, additionalAssignees, e.Action, dialogId) == false)
            {
                e.Cancel();
            }
        }
        public static Sungero.Core.StateBlock GetAssignmentBlock(IAssignmentBase assignment)
        {
            // Стили.
            var headerStyle            = Docflow.PublicFunctions.Module.CreateHeaderStyle();
            var performerDeadlineStyle = Docflow.PublicFunctions.Module.CreatePerformerDeadlineStyle();
            // var boldStyle = Docflow.PublicFunctions.Module.CreateStyle(true, false);
            var grayStyle      = Docflow.PublicFunctions.Module.CreateStyle(false, true);
            var separatorStyle = Docflow.PublicFunctions.Module.CreateSeparatorStyle();

            var block = StateView.Create().AddBlock();

            block.Entity = assignment;

            // Заголовок.
            block.AddLabel("Обработка входящего документа", headerStyle);
            block.AddLineBreak();

            // Кому.
            var assigneShortName = Company.PublicFunctions.Employee.GetShortName(Company.Employees.As(assignment.Performer), false);
            var performerInfo    = string.Format("{0}: {1}", Docflow.OfficialDocuments.Resources.StateViewTo, assigneShortName);

            block.AddLabel(performerInfo, performerDeadlineStyle);

            // Срок.
            if (assignment.Deadline.HasValue)
            {
                var deadlineLabel = Docflow.PublicFunctions.Module.ToShortDateShortTime(assignment.Deadline.Value.ToUserTime());
                block.AddLabel(string.Format("{0}: {1}", Docflow.OfficialDocuments.Resources.StateViewDeadline, deadlineLabel), performerDeadlineStyle);
            }

            // Разделитель.
            block.AddLineBreak();
            block.AddLabel(Docflow.Constants.Module.SeparatorText, separatorStyle);
            block.AddLineBreak();
            block.AddEmptyLine(Docflow.Constants.Module.EmptyLineMargin);

            // Текст задания.
            block.AddLabel(Docflow.PublicFunctions.Module.GetFormatedUserText(assignment.ActiveText), grayStyle);

            // Статус.
            var status = AssignmentBases.Info.Properties.Status.GetLocalizedValue(assignment.Status);

            // Для непрочитанных заданий указать это.
            if (assignment.IsRead == false)
            {
                status = Docflow.ApprovalTasks.Resources.StateViewUnRead.ToString();
            }

            if (!string.IsNullOrWhiteSpace(status))
            {
                Docflow.PublicFunctions.Module.AddInfoToRightContent(block, status);
            }

            // Задержка исполнения.
            if (assignment.Deadline.HasValue &&
                (assignment.Status == Workflow.AssignmentBase.Status.InProcess ||
                 assignment.Status == Workflow.AssignmentBase.Status.Completed))
            {
                Docflow.PublicFunctions.OfficialDocument.AddDeadlineHeaderToRight(block, assignment.Deadline.Value, assignment.Performer);
            }

            return(block);
        }