ExternalEntityActions.cs
3.46 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
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Domain.Shared;
using DirRX.Storage.ExternalEntity;
namespace DirRX.Storage.Client
{
partial class ExternalEntityActions
{
public virtual void ShowMapping(Sungero.Domain.Client.ExecuteActionArgs e)
{
var title = ExternalEntities.Resources.SyncEntityFormat(_obj.Name);
var records = Functions.ExternalEntity.Remote.GetEntityMapping(_obj);
if (records.Any())
{
records.Show(title);
}
else
e.AddWarning("Сопоставленные записи не найдены.");
}
public virtual bool CanShowMapping(Sungero.Domain.Client.CanExecuteActionArgs e)
{
// Показывать сопоставленные только для автоматического режима.
return _obj.MappingMode.Value == Storage.ExternalEntity.MappingMode.Auto &&
_obj.ExternalSystem != null &&
!string.IsNullOrEmpty(_obj.Uid);
}
public virtual void ChangeSyncProperies(Sungero.Domain.Client.ExecuteActionArgs e)
{
var entityMetadata = Sungero.Domain.Shared.TypeExtension.GetTypeByGuid(Guid.Parse(_obj.EntityType)).GetFinalType().GetEntityMetadata();
var dialog = Dialogs.CreateInputDialog(ExternalEntities.Resources.SyncPropertiesTitle);
var selectorList = new List<CommonLibrary.IBooleanDialogValue>();
var allProperties = entityMetadata.Properties.Where(x => x.Name != "Id").ToList();
var addedNames = _obj.SyncProperties.Where(x => x.Name != "_sourceId").Select(x => x.Name).ToList();
foreach (var property in allProperties)
selectorList.Add(dialog.AddBoolean(property.GetLocalizedName(), addedNames.Contains(property.Name)));
if (dialog.Show() == DialogButtons.Ok)
{
_obj.SyncProperties.Clear();
foreach (var selector in selectorList.Where(x => x.Value == true))
{
var property = allProperties[selectorList.IndexOf(selector)];
var item = _obj.SyncProperties.AddNew();
item.Name = property.Name;
item.Description = property.GetLocalizedName();
}
if (_obj.SyncProperties.Any())
{
var item = _obj.SyncProperties.AddNew();
item.Name = "_sourceId";
item.Description = ExternalEntities.Resources.SourceIdDescription.ToString();
}
}
}
public virtual bool CanChangeSyncProperies(Sungero.Domain.Client.CanExecuteActionArgs e)
{
return _obj.MappingMode != Storage.ExternalEntity.MappingMode.Manual;
}
public virtual void SetMapping(Sungero.Domain.Client.ExecuteActionArgs e)
{
if (_obj.ExternalSystem == null)
e.AddWarning(ExternalEntities.Resources.SpecifyExternalSystem);
else if (string.IsNullOrEmpty(_obj.Uid))
e.AddWarning(ExternalEntities.Resources.SpecifyExternalEntity);
else if (string.IsNullOrEmpty(_obj.EntityType))
e.AddWarning(ExternalEntities.Resources.SpecifyDirectumEntity);
else
{
if (_obj.State.IsChanged)
_obj.Save();
var title = ExternalEntities.Resources.SyncEntityFormat(_obj.Name);
Functions.ExternalEntity.Remote.GetEntityMapping(_obj).Show(title);
}
}
public virtual bool CanSetMapping(Sungero.Domain.Client.CanExecuteActionArgs e)
{
return _obj.MappingMode == Storage.ExternalEntity.MappingMode.Manual;
}
}
}