/// <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); }
/// <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); }
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); }