ApprovalReworkAssignmentHandlers.cs
5.1 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow.ApprovalReworkAssignment;
namespace Sungero.Docflow
{
partial class ApprovalReworkAssignmentApproversClientHandlers
{
public virtual void ApproversApproverValueInput(Sungero.Docflow.Client.ApprovalReworkAssignmentApproversApproverValueInputEventArgs e)
{
if (Equals(e.OldValue, e.NewValue))
return;
// Запрещено изменять обязательных согласующих.
if (_obj.IsRequiredApprover == true)
e.AddError(ApprovalReworkAssignments.Resources.CannotChangeRquiredApprovers);
else
{
_obj.Approved = Sungero.Docflow.ApprovalReworkAssignmentApprovers.Approved.NotApproved;
_obj.Action = Sungero.Docflow.ApprovalReworkAssignmentApprovers.Action.SendForApproval;
}
// Запрещено добавлять повторяющихся согласующих.
if (_obj.ApprovalReworkAssignment.Approvers.Any(app => Equals(app.Approver, e.NewValue) && app.Id != _obj.Id))
e.AddError(_obj.Info.Properties.Approver, ApprovalReworkAssignments.Resources.CantAddApproverTwice);
}
public virtual IEnumerable<Enumeration> ApproversActionFiltering(IEnumerable<Enumeration> query)
{
// Если согласующий еще не согласовал документ, то для выбора доступно только действие отправки задания.
if (_obj.Approved == Sungero.Docflow.ApprovalReworkAssignmentApprovers.Approved.NotApproved)
return query.Where(q => q == Sungero.Docflow.ApprovalReworkAssignmentApprovers.Action.SendForApproval);
return query;
}
}
partial class ApprovalReworkAssignmentClientHandlers
{
public override void Showing(Sungero.Presentation.FormShowingEventArgs e)
{
if (!Functions.ApprovalTask.SchemeVersionSupportsRework(ApprovalTasks.As(_obj.Task)))
e.HideAction(_obj.Info.Actions.Forward);
Functions.ApprovalReworkAssignment.Remote.CreateParamsCache(_obj);
}
public virtual void DeliveryMethodValueInput(Sungero.Docflow.Client.ApprovalReworkAssignmentDeliveryMethodValueInputEventArgs e)
{
var task = ApprovalTasks.As(_obj.Task);
if (e.NewValue != null && e.NewValue.Sid == Constants.MailDeliveryMethod.Exchange)
{
var services = Functions.ApprovalTask.Remote.GetExchangeServices(task).Services;
if (!services.Any())
e.AddError(ApprovalTasks.Resources.DeliveryByExchangeNotAllowed, e.Property);
return;
}
Functions.ApprovalTask.ShowExchangeHint(task, _obj.State.Properties.DeliveryMethod, _obj.Info.Properties.DeliveryMethod, e.NewValue, e);
}
public virtual void AddresseeValueInput(Sungero.Docflow.Client.ApprovalReworkAssignmentAddresseeValueInputEventArgs e)
{
_obj.State.Controls.Control.Refresh();
}
public virtual void SignatoryValueInput(Sungero.Docflow.Client.ApprovalReworkAssignmentSignatoryValueInputEventArgs e)
{
_obj.State.Controls.Control.Refresh();
}
public override void Refresh(Sungero.Presentation.FormRefreshEventArgs e)
{
var task = ApprovalTasks.As(_obj.Task);
if (task == null)
return;
var refreshParameters = Functions.ApprovalTask.GetOrUpdateAssignmentRefreshParams(task, _obj, false);
_obj.State.Properties.ForwardPerformer.IsVisible = refreshParameters.ForwardPerformerIsVisible;
// Область карточки "Параметры согласования".
_obj.State.Properties.Signatory.IsVisible = refreshParameters.SignatoryIsVisible;
_obj.State.Properties.Signatory.IsRequired = refreshParameters.SignatoryIsRequired;
_obj.State.Properties.Addressee.IsVisible = refreshParameters.AddresseeIsVisible;
_obj.State.Properties.Addressee.IsRequired = refreshParameters.AddresseeIsRequired;
_obj.State.Properties.Addressees.IsVisible = refreshParameters.AddresseesIsVisible;
_obj.State.Properties.Addressees.IsRequired = refreshParameters.AddresseesIsRequired;
_obj.State.Properties.DeliveryMethod.IsVisible = refreshParameters.DeliveryMethodIsVisible;
_obj.State.Properties.ExchangeService.IsVisible = refreshParameters.ExchangeServiceIsVisible;
_obj.State.Properties.Approvers.Properties.Action.IsEnabled = refreshParameters.ApproversActionIsEnabled;
_obj.State.Properties.Approvers.IsVisible = refreshParameters.ApproversIsVisible;
_obj.State.Properties.AddApprovers.IsVisible = refreshParameters.AddApproversIsVisible;
Functions.ApprovalReworkAssignment.UpdatePropertiesEnableState(_obj);
if (_obj.Status == Status.InProcess && !Functions.Module.IsLockedByOther(_obj) && _obj.AccessRights.CanUpdate())
Functions.ApprovalTask.ShowExchangeHint(task, _obj.State.Properties.DeliveryMethod, _obj.Info.Properties.DeliveryMethod, _obj.DeliveryMethod, e);
if (!Functions.ApprovalTask.HasDocumentAndCanRead(task))
e.AddError(ApprovalTasks.Resources.NoRightsToDocument);
}
}
}