/// <summary>
        /// Получить сообщения валидации при старте.
        /// </summary>
        /// <returns>Сообщения валидации.</returns>
        public virtual List <StartValidationMessage> GetStartValidationMessages()
        {
            var errors = new List <StartValidationMessage>();

            // Задачу может отправить только сотрудник.
            var authorIsNonEmployeeMessage = Docflow.PublicFunctions.Module.ValidateTaskAuthor(_obj);

            if (!string.IsNullOrWhiteSpace(authorIsNonEmployeeMessage))
            {
                errors.Add(StartValidationMessage.Create(authorIsNonEmployeeMessage, false, true));
            }

            // Проверить корректность срока.
            if (!Functions.Module.CheckDeadline(_obj.MaxDeadline, Calendar.Now))
            {
                errors.Add(StartValidationMessage.Create(FreeApprovalTasks.Resources.ImpossibleSpecifyDeadlineLessThanToday, true, false));
            }

            // Проверить права на изменение документа.
            if (!_obj.ForApprovalGroup.ElectronicDocuments.First().AccessRights.CanUpdate())
            {
                errors.Add(StartValidationMessage.Create(FreeApprovalTasks.Resources.CantSendDocumentsWithoutUpdateRights, false, false));
            }

            return(errors);
        }
示例#2
0
        /// <summary>
        /// Получить сообщения валидации при старте.
        /// </summary>
        /// <returns>Сообщения валидации.</returns>
        public virtual List <StartValidationMessage> GetStartValidationMessages()
        {
            var document = _obj.DocumentForReviewGroup.OfficialDocuments.FirstOrDefault();
            var errors   = new List <StartValidationMessage>();

            var authorIsNonEmployeeMessage = Docflow.PublicFunctions.Module.ValidateTaskAuthor(_obj);

            if (!string.IsNullOrWhiteSpace(authorIsNonEmployeeMessage))
            {
                errors.Add(StartValidationMessage.Create(authorIsNonEmployeeMessage, false, true));
            }

            // Документ на исполнении нельзя отправлять на рассмотрение.
            if (document != null && document.ExecutionState == Docflow.OfficialDocument.ExecutionState.OnExecution)
            {
                errors.Add(StartValidationMessage.Create(DocumentReviewTasks.Resources.DocumentOnExecution, false, false));
            }

            // Проверить корректность срока.
            if (!Docflow.PublicFunctions.Module.CheckDeadline(_obj.Addressee, _obj.Deadline, Calendar.Now))
            {
                errors.Add(StartValidationMessage.Create(RecordManagement.Resources.ImpossibleSpecifyDeadlineLessThanToday, true, false));
            }

            // Проверить, что входящий документ зарегистрирован.
            if (!Functions.DocumentReviewTask.IncomingDocumentRegistered(document))
            {
                errors.Add(StartValidationMessage.Create(DocumentReviewTasks.Resources.IncomingDocumentMustBeRegistered, false, false));
            }

            return(errors);
        }
示例#3
0
        public virtual List <StartValidationMessage> GetStartValidationMessage()
        {
            var document = _obj.DocumentGroup.OfficialDocuments.First();
            var errors   = new List <StartValidationMessage>();

            var authorIsNonEmployeeMessage = Docflow.PublicFunctions.Module.ValidateTaskAuthor(_obj);

            if (!string.IsNullOrWhiteSpace(authorIsNonEmployeeMessage))
            {
                errors.Add(StartValidationMessage.Create(authorIsNonEmployeeMessage, false, true));
            }

            // Проверить существование тела документа.
            if (_obj.IsElectronicAcquaintance.Value && !document.HasVersions)
            {
                errors.Add(StartValidationMessage.Create(AcquaintanceTasks.Resources.AcquaintanceTaskDocumentWithoutBodyMessage, false, false));
            }

            // Валидация подписи документа.
            var validationMessages = document.HasVersions
        ? Functions.Module.GetDocumentSignatureValidationErrors(document.LastVersion, true)
        : new List <string>();

            if (validationMessages.Any())
            {
                validationMessages.Insert(0, RecordManagement.Resources.SignatureValidationErrorMessage);
                errors.Add(StartValidationMessage.Create(string.Join(Environment.NewLine, validationMessages), false, false));
            }

            // Проверить корректность срока.
            if (!Docflow.PublicFunctions.Module.CheckDeadline(_obj.Deadline, Calendar.Now))
            {
                errors.Add(StartValidationMessage.Create(RecordManagement.Resources.ImpossibleSpecifyDeadlineLessThanToday, false, false));
            }

            // Проверить наличие участников ознакомления.
            var employees = Functions.AcquaintanceTask.GetParticipants(_obj);

            if (employees.Count == 0)
            {
                errors.Add(StartValidationMessage.Create(AcquaintanceTasks.Resources.PerformersCantBeEmpty, false, false));
            }

            // Техническое ограничение платформы на запуск задачи для большого числа участников.
            var performersLimit = Docflow.PublicFunctions.Module.Remote.GetDocflowParamsNumbericValue(Constants.AcquaintanceTask.PerformersLimitParamName);

            if (employees.Count > performersLimit)
            {
                errors.Add(StartValidationMessage.Create(AcquaintanceTasks.Resources.TooManyPerformersFormat(performersLimit), false, false));
            }

            // Запрещено отправлять ознакомления неавтоматизированным сотрудникам без замещения.
            var notAutomatedEmployees = Company.PublicFunctions.Module.Remote.GetNotAutomatedEmployees(employees);

            if (notAutomatedEmployees.Any())
            {
                errors.Add(StartValidationMessage.Create(AcquaintanceTasks.Resources.NotAutomatedUserWithoutSubstitutionError, true, false));
            }

            return(errors);
        }