CheckReturnTaskRouteHandlers.cs
4.72 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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Content;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow.CheckReturnTask;
using Sungero.Workflow;
namespace Sungero.Docflow.Server
{
partial class CheckReturnTaskRouteHandlers
{
#region Отсрочка создания задания (блок 2)
public virtual void StartBlock2(Sungero.Workflow.Server.Route.MonitoringStartBlockEventArguments e)
{
}
public virtual bool Monitoring2Result()
{
var document = _obj.DocumentGroup.OfficialDocuments.First();
var tracking = document.Tracking.Where(r => Equals(r.ReturnTask, _obj)).FirstOrDefault();
Logger.DebugFormat("ReturnControlMonitoring: Task {0}, AssignmentStartDate {1}, tracking is not null {2} and row date = {3}",
_obj.Id, _obj.AssignmentStartDate, tracking != null, tracking != null ? tracking.ReturnDate : DateTime.MinValue);
return !_obj.AssignmentStartDate.HasValue || _obj.AssignmentStartDate.Value <= Calendar.Today ||
tracking == null || tracking.ReturnDate != null;
}
#endregion
#region Задание на возврат документа (блок 3)
public virtual void StartBlock3(Sungero.Docflow.Server.CheckReturnAssignmentArguments e)
{
var tracking = Functions.CheckReturnTask.GetTrackingByTask(_obj);
if (tracking == null)
return;
e.Block.Performers.Add(_obj.Assignee);
var document = _obj.DocumentGroup.OfficialDocuments.First();
e.Block.Subject = tracking.Action == Docflow.OfficialDocumentTracking.Action.Sending ?
ApprovalTasks.Resources.ControlReturnAsgSubjectFormat(document.Name) :
CheckReturnTasks.Resources.ReturnAssignmentSubjectFormat(document.Name);
// Выдаем исполнителю права на чтение документа.
document.AccessRights.Grant(_obj.Assignee, DefaultAccessRightsTypes.Read);
}
public virtual void StartAssignment3(Sungero.Docflow.ICheckReturnAssignment assignment, Sungero.Docflow.Server.CheckReturnAssignmentArguments e)
{
assignment.Deadline = _obj.Deadline;
var document = _obj.DocumentGroup.OfficialDocuments.First();
// Выполнить задание, если документ уже вернули.
var tracking = document.Tracking.Where(r => Equals(r.ReturnTask, _obj) && r.ReturnDate != null && r.ReturnResult != null).FirstOrDefault();
if (tracking != null)
assignment.Complete(Docflow.CheckReturnAssignment.Result.Complete);
}
public virtual void CompleteAssignment3(Sungero.Docflow.ICheckReturnAssignment assignment, Sungero.Docflow.Server.CheckReturnAssignmentArguments e)
{
Functions.CheckReturnTask.SetReturnResult(_obj, assignment.Performer, true);
}
public virtual void EndBlock3(Sungero.Docflow.Server.CheckReturnAssignmentEndBlockEventArguments e)
{
}
#endregion
#region Контроль возврата (блок 4)
public virtual void StartBlock4(Sungero.Docflow.Server.CheckReturnCheckAssignmentArguments e)
{
// Если документ уже возвращен, то задание на контроль возврата не создавать.
var tracking = Functions.CheckReturnTask.GetTrackingByTask(_obj);
if (tracking == null || Equals(tracking.ReturnResult, Docflow.OfficialDocumentTracking.ReturnResult.Returned))
return;
if (!Equals(_obj.Author, _obj.Assignee))
e.Block.Performers.Add(_obj.Author);
var document = _obj.DocumentGroup.OfficialDocuments.First();
e.Block.Subject = CheckReturnTasks.Resources.CheckReturnSubjectFormat(document.Name);
e.Block.RelativeDeadlineDays = 1;
}
public virtual void StartAssignment4(Sungero.Docflow.ICheckReturnCheckAssignment assignment, Sungero.Docflow.Server.CheckReturnCheckAssignmentArguments e)
{
}
public virtual void CompleteAssignment4(Sungero.Docflow.ICheckReturnCheckAssignment assignment, Sungero.Docflow.Server.CheckReturnCheckAssignmentArguments e)
{
var documentIsReturned = assignment.Result == Docflow.CheckReturnCheckAssignment.Result.Returned;
Functions.CheckReturnTask.SetReturnResult(_obj, assignment.Performer, documentIsReturned);
}
public virtual void EndBlock4(Sungero.Docflow.Server.CheckReturnCheckAssignmentEndBlockEventArguments e)
{
}
#endregion
#region Задание-контроль задачи (блок 99)
public virtual void StartReviewAssignment99(Sungero.Workflow.IReviewAssignment reviewAssignment)
{
}
#endregion
}
}