ActionItemExecutionAssignmentActions.cs
6.03 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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Company;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.RecordManagement.ActionItemExecutionAssignment;
namespace Sungero.RecordManagement.Client
{
partial class ActionItemExecutionAssignmentActions
{
public virtual void Forwarded(Sungero.Workflow.Client.ExecuteResultActionArgs e)
{
_obj.Performer = _obj.ForwardedTo.SingleOrDefault();
_obj.Save();
}
public virtual bool CanForwarded(Sungero.Workflow.Client.CanExecuteResultActionArgs e)
{
return true;
}
public virtual void PrintActionItem(Sungero.Domain.Client.ExecuteActionArgs e)
{
var report = Reports.GetActionItemPrintReport();
report.Task = ActionItemExecutionTasks.As(_obj.Task);
report.Assignment = ActionItemExecutionAssignments.As(_obj);
report.Open();
}
public virtual bool CanPrintActionItem(Sungero.Domain.Client.CanExecuteActionArgs e)
{
return _obj.Status == Workflow.Task.Status.InProcess;
}
public virtual void CreateReplyLetter(Sungero.Domain.Client.ExecuteActionArgs e)
{
var document = _obj.DocumentsGroup.OfficialDocuments.FirstOrDefault();
if (document != null)
{
// TODO Reshetnikov_MA переполучаем документ для обновления связей в десктоп, #71595.
var officialDocument = Docflow.PublicFunctions.OfficialDocument.Remote.GetOfficialDocument(document.Id);
if (officialDocument != null)
{
var outgoingLetter = Docflow.PublicFunctions.OfficialDocument.Remote.CreateReplyDocument(officialDocument);
outgoingLetter.ShowModal();
if (!outgoingLetter.State.IsInserted)
_obj.ResultGroup.OfficialDocuments.Add(outgoingLetter);
}
}
}
public virtual bool CanCreateReplyLetter(Sungero.Domain.Client.CanExecuteActionArgs e)
{
return _obj.Status == Workflow.Task.Status.InProcess;
}
public virtual void Done(Sungero.Workflow.Client.ExecuteResultActionArgs e)
{
// Прекратить задание, если оно было скорректировано.
var actionItemTask = ActionItemExecutionTasks.As(_obj.Task);
if (!Equals(actionItemTask.Assignee, _obj.Performer) && _obj.ForwardedTo != null)
{
Dialogs.ShowMessage(ActionItemExecutionAssignments.Resources.AbortAssignmentWhenAssigneeChanged, MessageType.Error);
e.Cancel();
}
if (string.IsNullOrWhiteSpace(_obj.ActiveText))
{
e.AddError(ActionItemExecutionAssignments.Resources.ReportIsNotFilled);
return;
}
if (!Functions.ActionItemExecutionAssignment.Remote.AllCoAssigneeAssignmentsCreated(_obj))
{
Dialogs.NotifyMessage(ActionItemExecutionAssignments.Resources.AssignmentsNotCreated);
e.Cancel();
}
var giveRights = Docflow.PublicFunctions.Module.ShowDialogGrantAccessRights(_obj, _obj.ResultGroup.All.Concat(_obj.OtherGroup.All).ToList());
if (giveRights == false)
e.Cancel();
if (giveRights == null)
{
// Замена стандартного диалога подтверждения выполнения действия.
if (!Docflow.PublicFunctions.Module.ShowConfirmationDialog(e.Action.ConfirmationMessage, null, null,
Constants.ActionItemExecutionTask.ActionItemExecutionAssignmentConfirmDialogID))
e.Cancel();
}
// Проверить наличие подчиненных поручений.
var notCompletedExecutionSubTasks = Functions.ActionItemExecutionAssignment.Remote.GetNotCompletedSubActionItems(_obj);
if (notCompletedExecutionSubTasks.Any())
if (!Functions.Module.ShowAbortSubActionItemsConfirmationDialog(_obj, notCompletedExecutionSubTasks))
e.Cancel();
}
public virtual bool CanDone(Sungero.Workflow.Client.CanExecuteResultActionArgs e)
{
return true;
}
public virtual void RequireReport(Sungero.Domain.Client.ExecuteActionArgs e)
{
if (!Functions.ActionItemExecutionAssignment.Remote.AllCoAssigneeAssignmentsCreated(_obj))
{
Dialogs.NotifyMessage(ActionItemExecutionAssignments.Resources.AssignmentsNotCreated);
return;
}
var task = Functions.StatusReportRequestTask.Remote.CreateStatusReportRequest(_obj);
if (task == null)
e.AddWarning(ActionItemExecutionTasks.Resources.NoActiveChildActionItems);
else
task.Show();
}
public virtual bool CanRequireReport(Sungero.Domain.Client.CanExecuteActionArgs e)
{
return _obj.AccessRights.CanUpdate();
}
public virtual void ExtendDeadline(Sungero.Domain.Client.ExecuteActionArgs e)
{
var task = Sungero.Docflow.PublicFunctions.DeadlineExtensionTask.Remote.GetDeadlineExtension(_obj);
task.Show();
}
public virtual bool CanExtendDeadline(Sungero.Domain.Client.CanExecuteActionArgs e)
{
return _obj.Status == Workflow.AssignmentBase.Status.InProcess && _obj.AccessRights.CanUpdate()
&& ActionItemExecutionTasks.As(_obj.Task).HasIndefiniteDeadline != true;
}
public virtual void CreateChildActionItem(Sungero.Domain.Client.ExecuteActionArgs e)
{
Logger.DebugFormat("ActionItemExecutionAssignment (ID={0}). Start CreateChildActionItem.", _obj.Id);
var subTask = Functions.ActionItemExecutionTask.Remote.CreateActionItemExecutionFromExecution(_obj);
// Синхронизировать вложения из основной задачи с учётом удалённых.
Functions.Module.SynchronizeAttachmentsToActionItem(_obj.Task, subTask);
subTask.Show();
Logger.DebugFormat("ActionItemExecutionAssignment (ID={0}). End CreateChildActionItem.", _obj.Id);
}
public virtual bool CanCreateChildActionItem(Sungero.Domain.Client.CanExecuteActionArgs e)
{
return _obj.AccessRights.CanUpdate();
}
}
}