AcquaintanceTaskRouteHandlers.cs
5.49 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.RecordManagement.AcquaintanceTask;
using Sungero.Workflow;
namespace Sungero.RecordManagement.Server
{
partial class AcquaintanceTaskRouteHandlers
{
#region 6. Уведомление инициатору о завершении ознакомления
public virtual void StartBlock6(Sungero.RecordManagement.Server.AcquaintanceCompleteNotificationArguments e)
{
e.Block.Performers.Add(_obj.Author);
e.Block.Subject = AcquaintanceTasks.Resources.AcquaintanceCompletedSubjectFormat(_obj.DocumentGroup.OfficialDocuments.First().Name);
}
#endregion
#region 5. Нужно задание на завершение ознакомления?
public virtual bool Decision5Result()
{
return _obj.ReceiveOnCompletion == ReceiveOnCompletion.Assignment;
}
#endregion
#region 3. Ознакомление
public virtual void StartBlock3(Sungero.RecordManagement.Server.AcquaintanceAssignmentArguments e)
{
if (_obj.Deadline.HasValue)
e.Block.AbsoluteDeadline = _obj.Deadline.Value;
e.Block.IsParallel = true;
e.Block.Subject = AcquaintanceTasks.Resources.AcquaintanceAssignmentSubjectFormat(_obj.DocumentGroup.OfficialDocuments.First().DisplayValue);
var recipients = Functions.AcquaintanceTask.GetParticipants(_obj);
foreach (var recipient in recipients)
e.Block.Performers.Add(recipient);
// Запомнить участников ознакомления.
Functions.AcquaintanceTask.StoreAcquainters(_obj);
// Синхронизировать приложения отправляемого документа.
var document = _obj.DocumentGroup.OfficialDocuments.First();
Functions.AcquaintanceTask.SynchronizeAddendaAndAttachmentsGroup(_obj);
Functions.AcquaintanceTask.RelateAddedAddendaToPrimaryDocument(_obj);
// Выдать права на просмотр наблюдателям.
var documents = _obj.DocumentGroup.OfficialDocuments.Concat(_obj.AddendaGroup.OfficialDocuments).Concat(_obj.OtherGroup.All).ToList();
var observers = _obj.Observers.Select(x => x.Observer).ToList();
Docflow.PublicFunctions.Module.GrantReadAccessRightsForAttachments(documents, observers);
// Выдать права на просмотр исполнителям.
Docflow.PublicFunctions.Module.GrantReadAccessRightsForAttachments(documents, _obj.Performers.Select(p => p.Performer));
// Отправить запрос на подготовку предпросмотра для документов.
Docflow.PublicFunctions.Module.PrepareAllAttachmentsPreviews(_obj);
// Запомнить номер версии и хеш для отчета.
if (document != null)
{
_obj.AcquaintanceVersions.Clear();
Functions.AcquaintanceTask.StoreAcquaintanceVersion(_obj, document, true);
var addenda = _obj.AddendaGroup.OfficialDocuments;
foreach (var addendum in addenda)
Functions.AcquaintanceTask.StoreAcquaintanceVersion(_obj, addendum, false);
}
}
public virtual void StartAssignment3(Sungero.RecordManagement.IAcquaintanceAssignment assignment, Sungero.RecordManagement.Server.AcquaintanceAssignmentArguments e)
{
// Для ознакомления под подпись указать пояснение.
if (_obj.IsElectronicAcquaintance == false)
assignment.Description = AcquaintanceTasks.Resources.FromSignAssignmentDesription;
}
public virtual void CompleteAssignment3(Sungero.RecordManagement.IAcquaintanceAssignment assignment, Sungero.RecordManagement.Server.AcquaintanceAssignmentArguments e)
{
// Запомнить номер версии и хеш для отчета.
var mainDocumentTaskVersionNumber = _obj.AcquaintanceVersions
.Where(a => a.IsMainDocument == true)
.Select(a => a.Number)
.FirstOrDefault();
var mainDocument = _obj.DocumentGroup.OfficialDocuments.First();
Functions.AcquaintanceAssignment.StoreAcquaintanceVersion(assignment, mainDocument, true, mainDocumentTaskVersionNumber);
var addenda = _obj.AddendaGroup.OfficialDocuments;
foreach (var addendum in addenda)
Functions.AcquaintanceAssignment.StoreAcquaintanceVersion(assignment, addendum, false, null);
}
#endregion
#region 4. Завершение работ по ознакомлению
public virtual void StartBlock4(Sungero.RecordManagement.Server.AcquaintanceFinishAssignmentArguments e)
{
e.Block.RelativeDeadlineDays = 2;
e.Block.Performers.Add(_obj.Author);
e.Block.Subject = AcquaintanceTasks.Resources.AcquaintanceFinishAssignmentSubjectFormat(_obj.DocumentGroup.OfficialDocuments.First().DisplayValue);
}
public virtual void StartAssignment4(Sungero.RecordManagement.IAcquaintanceFinishAssignment assignment, Sungero.RecordManagement.Server.AcquaintanceFinishAssignmentArguments e)
{
// Для ознакомления под подпись указать пояснение.
if (_obj.IsElectronicAcquaintance == false)
assignment.Description = AcquaintanceTasks.Resources.SelfSignAcquaintanceDecription;
else
assignment.Description = AcquaintanceTasks.Resources.ElectronicAcquaintanceDecription;
}
#endregion
}
}