示例#1
0
        public override void BeforeComplete(Sungero.Workflow.Server.BeforeCompleteEventArgs e)
        {
            // Заменить результат выполнения, если задание выполнено не лично.
            var isElectronicAcquaintance = AcquaintanceTasks.As(_obj.Task).IsElectronicAcquaintance == true;

            if (!Equals(_obj.CompletedBy, _obj.Performer) && isElectronicAcquaintance)
            {
                e.Result = AcquaintanceTasks.Resources.CompletedByAnother;
            }
            else
            {
                e.Result = AcquaintanceTasks.Resources.Acquainted;
            }
        }
示例#2
0
        public virtual void Acquainted(Sungero.Workflow.Client.ExecuteResultActionArgs e)
        {
            var document = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault();

            if (!_obj.DocumentGroup.OfficialDocuments.Any())
            {
                e.AddError(Docflow.ApprovalTasks.Resources.NoRightsToDocument);
                return;
            }

            // Проверка прав на выполнение по замещению.
            var isCurrentUserPerformer = Equals(_obj.Performer, Users.Current);

            if (!isCurrentUserPerformer)
            {
                // Задание может выполнить только замещающий, и только за виртуальных или уволенных сотрудников.
                var isCurrentUserSubstitute = Functions.AcquaintanceAssignment.Remote.IsSubstituteOf(_obj, Users.Current, _obj.Performer);
                var isPerformerActive       = _obj.Performer.Status == CoreEntities.DatabookEntry.Status.Active;
                var isPerformerAutomated    = _obj.Performer.Login != null;
                if (!isCurrentUserSubstitute || isCurrentUserSubstitute && isPerformerActive && isPerformerAutomated)
                {
                    e.AddError(Sungero.RecordManagement.AcquaintanceAssignments.Resources.EmployeeMustPersonallyConfirmAcquaintance);
                    return;
                }

                // Требовать оставить комментарий при выполнении по замещению.
                if (string.IsNullOrWhiteSpace(_obj.ActiveText))
                {
                    e.AddError(AcquaintanceTasks.Resources.CompletedBySubstitution);
                    return;
                }
            }
            else
            {
                // Требовать прочтения и валидировать подпись, только если сотрудник лично выполняет задание.
                var task = AcquaintanceTasks.As(_obj.Task);
                var isElectronicAcquaintance = task.IsElectronicAcquaintance.Value;
                if (isElectronicAcquaintance)
                {
                    // Требовать прочтение отправленной версии документа.
                    var acquaintanceVersion       = task.AcquaintanceVersions.FirstOrDefault(x => x.IsMainDocument.Value);
                    var acquaintanceVersionNumber = acquaintanceVersion.Number.Value;
                    if (!Functions.AcquaintanceTask.Remote.IsDocumentVersionReaded(document, acquaintanceVersionNumber))
                    {
                        var error = document.LastVersion.Number == acquaintanceVersionNumber
              ? AcquaintanceTasks.Resources.DocumentNotReadedLastVersion
              : AcquaintanceTasks.Resources.DocumentNotReadedFormat(acquaintanceVersionNumber);
                        e.AddError(error);
                        return;
                    }

                    // Валидация подписи.
                    if (!Functions.AcquaintanceTask.Remote.IsDocumentVersionSignatureValid(document, acquaintanceVersionNumber))
                    {
                        e.AddError(AcquaintanceTasks.Resources.DocumentSignatureNotValid);
                        return;
                    }
                }
            }

            // Замена стандартного диалога подтверждения выполнения действия.
            if (!Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, null, null,
                                                                       Constants.AcquaintanceTask.AcquaintedConfirmDialogID))
            {
                e.Cancel();
            }
        }
示例#3
0
        public virtual void ShowAcquaintanceReport(Sungero.Domain.Client.ExecuteActionArgs e)
        {
            var task = AcquaintanceTasks.As(_obj.Task);

            RecordManagement.Functions.Module.GetAcquaintanceReport(task).Open();
        }