AccessRightsRuleSharedFunctions.cs
2.44 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Docflow.AccessRightsRule;
namespace Sungero.Docflow.Shared
{
partial class AccessRightsRuleFunctions
{
/// <summary>
/// Получить доступные категории договоров.
/// </summary>
/// <returns>Список категорий договоров.</returns>
public virtual List<IDocumentGroupBase> GetDocumentGroups()
{
var kinds = _obj.DocumentKinds.Select(k => k.DocumentKind).ToList();
var contractKinds = Functions.DocumentKind.GetAvailableDocumentKinds(typeof(Contracts.IContractBase)).ToList();
if (kinds.Any() && kinds.All(k => contractKinds.Contains(k)))
return Contracts.PublicFunctions.ContractCategory.GetFilteredContractCategoris(kinds);
return new List<IDocumentGroupBase>();
}
/// <summary>
/// Определить изменились ли критерии или участники правила.
/// </summary>
/// <returns>True - изменились, False - иначе.</returns>
public virtual bool CriteriaOrMembersChanged()
{
if (!_obj.State.IsChanged)
return false;
var significantPropsCount = _obj.State.Properties.ChangedCount;
if (_obj.State.Properties.Name.IsChanged)
significantPropsCount--;
if (_obj.State.Properties.Note.IsChanged)
significantPropsCount--;
if (_obj.State.Properties.BulkProcessingState.IsChanged)
significantPropsCount--;
if (_obj.State.Properties.Members.IsChanged &&
_obj.State.Properties.Members.Added.Count() == 0 &&
_obj.State.Properties.Members.Changed.Count() == 0 &&
_obj.State.Properties.Members.Deleted.Count() == 0)
significantPropsCount--;
return significantPropsCount > 0;
}
/// <summary>
/// Запланировать выдачу прав по правилу.
/// </summary>
public virtual void PlanBulkProcessing()
{
_obj.BulkProcessingState = Docflow.AccessRightsRule.BulkProcessingState.Planned;
_obj.LaunchId = Guid.NewGuid().ToString();
}
/// <summary>
/// Прекратить выдачу прав по правилу.
/// </summary>
public virtual void CancelBulkProcessing()
{
_obj.BulkProcessingState = null;
_obj.LaunchId = string.Empty;
}
}
}