ApprovalExecutionAssignmentClientFunctions.cs 1.26 KB
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow.ApprovalExecutionAssignment;

namespace Sungero.Docflow.Client
{
  partial class ApprovalExecutionAssignmentFunctions
  {
    /// <summary>
    /// Получить значение для поля Выдал.
    /// </summary>
    /// <returns>Значение поля Выдал.</returns>
    public virtual Company.IEmployee GetAssignedBy()
    {
      var assignedBy = Sungero.Company.Employees.Null;
      var document = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault();
      if (document == null)
        return assignedBy;
      var task = ApprovalTasks.As(_obj.Task);
      var stages = Functions.ApprovalRuleBase.Remote.GetStages(task.ApprovalRule, document, task).Stages;
      
      // Автором резолюции вычислить адресата, либо подписывающего.
      if (stages.Any(s => s.StageType == Docflow.ApprovalRuleBaseStages.StageType.Review))
        assignedBy = PublicFunctions.Module.Remote.GetResolutionAuthor(task);
      else if (stages.Any(s => s.StageType == Docflow.ApprovalRuleBaseStages.StageType.Sign))
        assignedBy = task.Signatory;
      return assignedBy;
    }
  }
}