ApprovalReviewAssignmentHandlers.cs 2 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow.ApprovalReviewAssignment;

namespace Sungero.Docflow
{
  partial class ApprovalReviewAssignmentReworkPerformerPropertyFilteringServerHandler<T>
  {

    public virtual IQueryable<T> ReworkPerformerFiltering(IQueryable<T> query, Sungero.Domain.PropertyFilteringEventArgs e)
    {
      var reworkPerformersIds = Functions.ApprovalTask.GetReworkPerformers(ApprovalTasks.As(_obj.Task))
        .Select(p => p.Id).ToList();
      return query.Where(x => reworkPerformersIds.Contains(x.Id));
    }
  }

  partial class ApprovalReviewAssignmentServerHandlers
  {

    public override void BeforeComplete(Sungero.Workflow.Server.BeforeCompleteEventArgs e)
    {
      if (_obj.Result.Value == Result.AddResolution && (_obj.Texts.Last().IsAutoGenerated ?? false))
        e.AddError(ApprovalReviewAssignments.Resources.ResolutionTextNeeded);
      
      // Проверить зарегистрированность документа, если схлопнуто с этапом регистрации.
      if ((_obj.Result.Value == Result.AddActionItem || _obj.Result.Value == Result.AddResolution || _obj.Result.Value == Result.Informed) &&
          Functions.ApprovalTask.CurrentStageCollapsedWithSpecificStage(ApprovalTasks.As(_obj.Task), _obj.StageNumber, Docflow.ApprovalStage.StageType.Register))
      {
        var registrationState = _obj.DocumentGroup.OfficialDocuments.First().RegistrationState;
        if (registrationState == null || registrationState != Docflow.OfficialDocument.RegistrationState.Registered)
        {
          e.AddError(ApprovalTasks.Resources.ToPerformNeedRegisterDocument);
        }
      }
      
      // Добавить автотекст.
      if (_obj.Result == Result.ForRework)
        e.Result = ApprovalTasks.Resources.ForRework;
      else
        e.Result = Functions.ApprovalTask.GetCollapsedResult(ApprovalTasks.As(_obj.Task), _obj.Result);
    }
  }

}