/// <summary> /// Валидация задания на доработку. /// </summary> /// <param name="approvalStages">Этапы регламента.</param> /// <param name="e">Аргументы действия.</param> /// <returns>True, если валидация прошла успешно, и False, если были ошибки.</returns> public virtual bool ValidateApprovalReworkAssignment(Structures.Module.DefinedApprovalStages approvalStages, Sungero.Core.IValidationArgs e) { var hasError = false; var deletedApprovers = _obj.State.Properties.Approvers.Deleted; var addedApprovers = _obj.State.Properties.Approvers.Added; // Запрещено изменять действие, если результат согласования отрицателен. if (_obj.Approvers.Any(a => a.Approved == Sungero.Docflow.ApprovalReworkAssignmentApprovers.Approved.NotApproved && a.Action != Sungero.Docflow.ApprovalReworkAssignmentApprovers.Action.SendForApproval)) { e.AddError(ApprovalReworkAssignments.Resources.CannotChangeAction); hasError = true; } // Запрещено удалять обязательных согласующих. if (deletedApprovers.Any(app => app.IsRequiredApprover == true)) { e.AddError(ApprovalReworkAssignments.Resources.CannotDeleteRequiredApprovers); hasError = true; } // Запрещено добавлять согласующих, если нет этапа согласования с дополнительными согласующими. if (addedApprovers.Any(a => a.IsRequiredApprover != true) && !approvalStages.Stages.Any(s => s.StageType == Docflow.ApprovalStage.StageType.Approvers && s.Stage.AllowAdditionalApprovers == true)) { e.AddError(ApprovalReworkAssignments.Resources.CannotAddApproversIfNoAdditionalInRule); hasError = true; } return(!hasError); }
/// <summary> /// Валидация старта задачи на ознакомление. /// </summary> /// <param name="e">Аргументы действия.</param> /// <returns>True, если валидация прошла успешно, и False, если были ошибки.</returns> public virtual bool ValidateAcquaintanceTaskStart(Sungero.Core.IValidationArgs e) { var errorMessages = Sungero.RecordManagement.Functions.AcquaintanceTask.Remote.GetStartValidationMessage(_obj); if (errorMessages.Any()) { foreach (var error in errorMessages) { if (error.IsShowNotAutomatedEmployeesMessage) { e.AddError(error.Message, _obj.Info.Actions.ShowNotAutomatedEmployees); } else if (error.IsCantSendTaskByNonEmployeeMessage) { e.AddError(_obj.Info.Properties.Author, error.Message); } else { e.AddError(error.Message); } } return(false); } return(true); }
/// <summary> /// Валидация сохранения задачи на исполнение поручения. /// </summary> /// <param name="e">Аргументы действия.</param> /// <returns>True, если валидация прошла успешно, и False, если были ошибки.</returns> public virtual bool ValidateActionItemExecutionTaskSave(Sungero.Core.IValidationArgs e) { var isValid = true; // Проверить заполненость Общего срока (а также корректность), исполнителей, текста поручения у составного поручения. var isCompoundActionItem = _obj.IsCompoundActionItem ?? false; if (isCompoundActionItem) { if (_obj.ActionItemParts.Count == 0) { e.AddError(_obj.Info.Properties.ActionItemParts, ActionItemExecutionTasks.Resources.ActionItemsNotFilled); isValid = false; } if (_obj.FinalDeadline == null && _obj.ActionItemParts.Any(i => i.Deadline == null)) { e.AddError(_obj.Info.Properties.FinalDeadline, ActionItemExecutionTasks.Resources.EmptyFinalDeadline); isValid = false; } if (string.IsNullOrEmpty(_obj.ActionItem) && _obj.ActionItemParts.Any(i => string.IsNullOrEmpty(i.ActionItemPart))) { e.AddError(_obj.Info.Properties.ActionItem, ActionItemExecutionTasks.Resources.EmptyActionItem); isValid = false; } } return(isValid); }
/// <summary> /// Валидация старта задачи на исполнение поручения. /// </summary> /// <param name="e">Аргументы действия.</param> /// <param name="startedFromUI">Признак того, что задача была стартована через UI.</param> /// <returns>True, если валидация прошла успешно, и False, если были ошибки.</returns> public virtual bool ValidateActionItemExecutionTaskStart(Sungero.Core.IValidationArgs e, bool startedFromUI) { var isValid = Docflow.PublicFunctions.Module.ValidateTaskAuthor(_obj, e); // Проверить корректность заполнения свойства Выдал. if (!(Sungero.Company.Employees.Current == null && Users.Current.IncludedIn(Roles.Administrators)) && !Docflow.PublicFunctions.Module.Remote.IsUsersCanBeResolutionAuthor(_obj.DocumentsGroup.OfficialDocuments.SingleOrDefault(), _obj.AssignedBy)) { e.AddError(_obj.Info.Properties.AssignedBy, ActionItemExecutionTasks.Resources.ActionItemCanNotAssignedByUser); isValid = false; } // Проверить количество исполнителей по поручению. if (_obj.ActionItemParts.Count() + _obj.CoAssignees.Count() > Constants.ActionItemExecutionTask.MaxActionItemAssignee) { e.AddError(Sungero.RecordManagement.ActionItemExecutionTasks.Resources.ActionItemAsigneeTooMatchFormat(Constants.ActionItemExecutionTask.MaxActionItemAssignee)); isValid = false; } // Проверить корректность срока (только при старте через UI). if (startedFromUI && Functions.ActionItemExecutionTask.CheckOverdueActionItemExecutionTask(_obj)) { e.AddError(RecordManagement.Resources.ImpossibleSpecifyDeadlineLessThanToday); isValid = false; } return(isValid); }
/// <summary> /// Валидация задания на приемку работ контролером при отправке на доработку. /// </summary> /// <param name="e">Аргументы действия.</param> /// <returns>True, если валидация прошла успешно, и False, если были ошибки.</returns> public virtual bool ValidateActionItemSupervisorAssignment(Sungero.Core.IValidationArgs e) { bool isValid = true; if (string.IsNullOrWhiteSpace(_obj.ActiveText)) { e.AddError(ActionItemSupervisorAssignments.Resources.ReportCommentIsEmpty); isValid = false; } if (_obj.NewDeadline == null) { e.AddError(_obj.Info.Properties.NewDeadline, ActionItemSupervisorAssignments.Resources.EmptyNewDeadline); isValid = false; } return(isValid); }
public static bool ValidateTaskAuthor(ITask task, Sungero.Core.IValidationArgs e) { var authorIsNonEmployeeMessage = ValidateTaskAuthor(task); if (!string.IsNullOrWhiteSpace(authorIsNonEmployeeMessage)) { e.AddError(task.Info.Properties.Author, authorIsNonEmployeeMessage); return(false); } return(true); }