ApprovalExecutionAssignmentHandlers.cs
1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow.ApprovalExecutionAssignment;
namespace Sungero.Docflow
{
partial class ApprovalExecutionAssignmentReworkPerformerPropertyFilteringServerHandler<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 ApprovalExecutionAssignmentServerHandlers
{
public override void BeforeComplete(Sungero.Workflow.Server.BeforeCompleteEventArgs e)
{
// Проверить зарегистрированность документа, если схлопнуто с этапом регистрации.
if (_obj.Result == Result.Complete && 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);
return;
}
}
if (_obj.Result == Result.ForRevision)
e.Result = ApprovalTasks.Resources.ForRework;
else
e.Result = Functions.ApprovalTask.GetCollapsedResult(ApprovalTasks.As(_obj.Task), _obj.Result);
}
}
}