VI.UI.Controls.Common.Base/VI.UI.Controls.Common.Data.Relations/MemberRelationDataStore.cs
Decompiler Source FileVI.UI.Controls.Common.Base.MemberRelationDataStoreDecompiled Source
Interpretation
- Decompiled source file. Use method/event registrations and call-site extraction to connect back to DialogMethod, QBMEvent, and API layers.
Relations
- CallMethod: AssignDirect at line 926
Typed Edges
- No typed edges extracted for this source.
References
- No direct source references extracted.
Referenced By
- No direct source references extracted.
C# source-derived context
Generated by pattern extraction from the decompiled C# source and decompile index. This is factual source evidence, not inferred behavior.
reads entity values references DB/Dialog objects
Summary: classes MemberRelationDataStore, DeferredOperationInfo, MNLoadMemberInfo, OriginInformation; methods StateImageInfo, GetStateKey, Compare, MoveNext, SetStateMachine, IsMember; references DialogDeferredOperation, DynamicGroup, ESet; markers reads entity values, references DB/Dialog objects
Classes
MemberRelationDataStore DeferredOperationInfo MNLoadMemberInfo OriginInformation StateImageInfo StateComparerMethods
- StateImageInfo
- GetStateKey
- Compare
- MoveNext
- SetStateMachine
- IsMember
- MakeMember
- MakeNoMember
- OnLoading
- OnSetState
- OnSaveChanges
- OnLoaded
- OnSavedChanges
- OnGetStateImage
- OnGetEffectiveState
- GetEffectiveMemberState
- GetCurMemberEffectiveState
- OnGetStateComparer
- OnToggleEntries
- OnAssignEntries
- OnRemoveEntries
- OnGetHistoryChangeInfosAsync
- OnGetSettings
- OnBaseEntityChanged
- _LoadDeferredOperationInformation
- _TagDeferredOperations
- RefreshDeferredOperationStates
- _ClearInsertTaggedDataEntryStateRecursive
DB/Dialog object references
OIM key/entity markers
None extracted.API/entity calls
GetValueAsync GetValue CreateNewRegistrations / handlers
None extracted.
Complete Source
1using System;2using System.Collections;3using System.Collections.Generic;4using System.Diagnostics;5using System.Linq;6using System.Runtime.CompilerServices;7using System.Runtime.InteropServices;8using System.Threading;9using System.Threading.Tasks;10using VI.Base;11using VI.UI.Base;12using VI.UI.Base.Components;13using VI.UI.Base.Data;14using VI.UI.Base.Data.Entities;15using VI.UI.Base.Data.Hierarchy;16using VI.UI.Base.Data.Meta;17using VI.UI.Base.Data.Queries;18using VI.UI.Base.IoC.InversiveAPI;19using VI.UI.Base.TimeTrace;2021namespace VI.UI.Controls.Common.Data.Relations;2223public class MemberRelationDataStore : RelationDataStoreBase24{25 [RequiredMember]26 protected internal class DeferredOperationInfo27 {28 [RequiredMember]29 [field: CompilerGenerated]30 public string Operation31 {32 [CompilerGenerated]33 get;34 [CompilerGenerated]35 init;36 }3738 [RequiredMember]39 [field: CompilerGenerated]40 public System.DateTime Date41 {42 [CompilerGenerated]43 get;44 [CompilerGenerated]45 init;46 }4748 [Obsolete("Constructors of types with required members are not supported in this version of your compiler.", true)]49 [CompilerFeatureRequired("RequiredMembers")]50 public DeferredOperationInfo()51 {52 }53 }5455 internal class MNLoadMemberInfo56 {57 [field: CompilerGenerated]58 internal int DirectAssignmentCounter59 {60 [CompilerGenerated]61 get;62 [CompilerGenerated]63 set;64 }6566 [field: CompilerGenerated]67 internal int IndirectAssignmentCounter68 {69 [CompilerGenerated]70 get;71 [CompilerGenerated]72 set;73 }7475 [field: CompilerGenerated]76 internal int DynamicGroupAssignmentCounter77 {78 [CompilerGenerated]79 get;80 [CompilerGenerated]81 set;82 }8384 [field: CompilerGenerated]85 internal int EffectiveAssignmentCounter86 {87 [CompilerGenerated]88 get;89 [CompilerGenerated]90 set;91 }9293 [field: CompilerGenerated]94 internal int MarkedForDeletionCounter95 {96 [CompilerGenerated]97 get;98 [CompilerGenerated]99 set;100 }101102 [field: CompilerGenerated]103 internal int OutstandingCounter104 {105 [CompilerGenerated]106 get;107 [CompilerGenerated]108 set;109 }110 }111112 protected internal class OriginInformation113 {114 [field: CompilerGenerated]115 internal bool Available116 {117 [CompilerGenerated]118 get;119 }120121 [field: CompilerGenerated]122 internal bool HasDynamicGroupInfo123 {124 [CompilerGenerated]125 get;126 }127128 internal OriginInformation(IMetaType metaType)129 {130 //IL_000e: Unknown result type (might be due to invalid IL or missing references)131 if (metaType == null)132 {133 throw new ArgumentNullException("metaType");134 }135 IMetaProperty metaProperty = metaType.Properties["XOrigin", false];136 Available = metaProperty != null;137 int num;138 if (metaProperty == null)139 {140 num = 0;141 }142 else143 {144 BitDescriptor[]? bitMask = metaProperty.BitMask;145 num = ((((bitMask != null) ? new bool?(Enumerable.Any<BitDescriptor>((System.Collections.Generic.IEnumerable<BitDescriptor>)bitMask, (Func<BitDescriptor, bool>)((BitDescriptor b) => b.Position == 2))) : ((bool?)null)) == true) ? 1 : 0);146 }147 HasDynamicGroupInfo = (byte)num != 0;148 }149 }150151 internal class StateImageInfo(DataEntryState memberState, DataEntryState indirectDynamicState, DataEntryState effectiveState, RelationStateImage image)152 {153 [field: CompilerGenerated]154 public DataEntryState MemberState155 {156 [CompilerGenerated]157 get;158 } = memberState;159160 [field: CompilerGenerated]161 public DataEntryState IndirectDynamicState162 {163 [CompilerGenerated]164 get;165 } = indirectDynamicState;166167 [field: CompilerGenerated]168 public DataEntryState EffectiveState169 {170 [CompilerGenerated]171 get;172 } = effectiveState;173174 [field: CompilerGenerated]175 public RelationStateImage Image176 {177 [CompilerGenerated]178 get;179 } = image;180181 public static int GetStateKey(DataEntryState memberState, DataEntryState indirectDynamicState, DataEntryState effectiveState)182 {183 return (int)((uint)memberState | (uint)((int)indirectDynamicState << 4)) | ((int)effectiveState << 8);184 }185 }186187 public class StateComparer : IComparer<DataEntry>188 {189 internal static readonly StateComparer Instance = new StateComparer();190191 private const int ConstRawStateMask = 30;192193 public int Compare(DataEntry e1, DataEntry e2)194 {195 if (e1 == null || e2 == null)196 {197 return 0;198 }199 bool flag = !e1.IsHierarchyPart;200 bool flag2 = !e2.IsHierarchyPart;201 if (!flag && flag2)202 {203 return -1;204 }205 if (flag && !flag2)206 {207 return 1;208 }209 if (!flag && !flag2)210 {211 return string.Compare(e1.Display, e2.Display, (StringComparison)3);212 }213 int num = (((e1.RawState & 0x1E) > 0) ? 1 : 0);214 int num2 = (((e2.RawState & 0x1E) > 0) ? 1 : 0);215 int num3 = num.CompareTo(num2) * -1;216 if (num3 == 0)217 {218 return string.Compare(e1.Display, e2.Display, (StringComparison)3);219 }220 return num3;221 }222 }223224 [StructLayout((LayoutKind)3)]225 [CompilerGenerated]226 private struct _003COnGetHistoryChangeInfosAsync_003Ed__27 : IAsyncStateMachine227 {228 public int _003C_003E1__state;229230 public AsyncTaskMethodBuilder<DataTimeTrace[]> _003C_003Et__builder;231232 public MemberRelationDataStore _003C_003E4__this;233234 public CancellationToken ct;235236 public System.DateTime startTime;237238 public System.DateTime endTime;239240 private ITimeTraceDataService _003Csrv_003E5__2;241242 private Dictionary<string, object> _003C_003E7__wrap2;243244 private string _003C_003E7__wrap3;245246 private Dictionary<string, object> _003C_003E7__wrap4;247248 private ConfiguredTaskAwaiter<object> _003C_003Eu__1;249250 private ConfiguredTaskAwaiter<DataTimeTrace[]> _003C_003Eu__2;251252 private void MoveNext()253 {254 //IL_0102: Unknown result type (might be due to invalid IL or missing references)255 //IL_0107: Unknown result type (might be due to invalid IL or missing references)256 //IL_010f: Unknown result type (might be due to invalid IL or missing references)257 //IL_0180: Unknown result type (might be due to invalid IL or missing references)258 //IL_018b: Unknown result type (might be due to invalid IL or missing references)259 //IL_0190: Unknown result type (might be due to invalid IL or missing references)260 //IL_0194: Unknown result type (might be due to invalid IL or missing references)261 //IL_0199: Unknown result type (might be due to invalid IL or missing references)262 //IL_01c6: Unknown result type (might be due to invalid IL or missing references)263 //IL_01cb: Unknown result type (might be due to invalid IL or missing references)264 //IL_01d3: Unknown result type (might be due to invalid IL or missing references)265 //IL_01ae: Unknown result type (might be due to invalid IL or missing references)266 //IL_01b0: Unknown result type (might be due to invalid IL or missing references)267 //IL_00b9: Unknown result type (might be due to invalid IL or missing references)268 //IL_00c4: Unknown result type (might be due to invalid IL or missing references)269 //IL_00c9: Unknown result type (might be due to invalid IL or missing references)270 //IL_00cd: Unknown result type (might be due to invalid IL or missing references)271 //IL_00d2: Unknown result type (might be due to invalid IL or missing references)272 //IL_00e7: Unknown result type (might be due to invalid IL or missing references)273 //IL_00e9: Unknown result type (might be due to invalid IL or missing references)274 int num = _003C_003E1__state;275 MemberRelationDataStore memberRelationDataStore = _003C_003E4__this;276 DataTimeTrace[] result;277 try278 {279 ConfiguredTaskAwaiter<object> val;280 if (num == 0)281 {282 val = _003C_003Eu__1;283 _003C_003Eu__1 = default(ConfiguredTaskAwaiter<object>);284 num = (_003C_003E1__state = -1);285 goto IL_011e;286 }287 ConfiguredTaskAwaiter<DataTimeTrace[]> val2;288 if (num == 1)289 {290 val2 = _003C_003Eu__2;291 _003C_003Eu__2 = default(ConfiguredTaskAwaiter<DataTimeTrace[]>);292 num = (_003C_003E1__state = -1);293 goto IL_01e2;294 }295 if (memberRelationDataStore.BaseEntity == null)296 {297 result = null;298 }299 else300 {301 _003Csrv_003E5__2 = memberRelationDataStore.IoCContainer.Resolve<ITimeTraceDataService>(throwEx: false);302 if (_003Csrv_003E5__2 != null)303 {304 _003C_003E7__wrap4 = new Dictionary<string, object>((IEqualityComparer<string>)(object)StringComparer.OrdinalIgnoreCase);305 _003C_003E7__wrap2 = _003C_003E7__wrap4;306 _003C_003E7__wrap3 = memberRelationDataStore.BaseReference.Source.Name;307 val = Enumerable.First<IMetaProperty>((System.Collections.Generic.IEnumerable<IMetaProperty>)memberRelationDataStore.m_MemberRelation.BaseType.Properties, (Func<IMetaProperty, bool>)((IMetaProperty p) => p.IsKeyMember)).GetValueAsync<object>(memberRelationDataStore.BaseEntity, null, ct).ConfigureAwait(false)308 .GetAwaiter();309 if (!val.IsCompleted)310 {311 num = (_003C_003E1__state = 0);312 _003C_003Eu__1 = val;313 _003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<object>, _003COnGetHistoryChangeInfosAsync_003Ed__27>(ref val, ref this);314 return;315 }316 goto IL_011e;317 }318 result = null;319 }320 goto end_IL_000e;321 IL_011e:322 object result2 = val.GetResult();323 _003C_003E7__wrap2.Add(_003C_003E7__wrap3, result2);324 Dictionary<string, object> queryByExampleValues = _003C_003E7__wrap4;325 _003C_003E7__wrap2 = null;326 _003C_003E7__wrap3 = null;327 _003C_003E7__wrap4 = null;328 val2 = _003Csrv_003E5__2.GetTimeTracesAsync(memberRelationDataStore.MemberReference.Source.Type, (IReadOnlyDictionary<string, object>)(object)queryByExampleValues, new GetTimeTracesOption(startTime, endTime), ct).ConfigureAwait(false).GetAwaiter();329 if (!val2.IsCompleted)330 {331 num = (_003C_003E1__state = 1);332 _003C_003Eu__2 = val2;333 _003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<DataTimeTrace[]>, _003COnGetHistoryChangeInfosAsync_003Ed__27>(ref val2, ref this);334 return;335 }336 goto IL_01e2;337 IL_01e2:338 result = val2.GetResult();339 end_IL_000e:;340 }341 catch (System.Exception exception)342 {343 _003C_003E1__state = -2;344 _003Csrv_003E5__2 = null;345 _003C_003Et__builder.SetException(exception);346 return;347 }348 _003C_003E1__state = -2;349 _003Csrv_003E5__2 = null;350 _003C_003Et__builder.SetResult(result);351 }352353 [DebuggerHidden]354 private void SetStateMachine(IAsyncStateMachine stateMachine)355 {356 _003C_003Et__builder.SetStateMachine(stateMachine);357 }358 }359360 internal const string ConstXOriginColumn = "XOrigin";361362 internal const string ConstXIsInEffectColumn = "XIsInEffect";363364 internal const int ConstXOriginDirectAssigned = 1;365366 internal const int ConstXOriginIndirectAssigned = 2;367368 internal const int ConstXOriginAssignedByDynamicGroup = 4;369370 internal const int ConstXMarkedForDeletionOutstanding = 2;371372 internal const int ConstXMarkedForDeletionDelayed = 1;373374 private static readonly StateImageInfo[] m_StateImageInfos;375376 private static readonly Dictionary<int, RelationStateImage> m_StateImageMap;377378 private OriginInformation m_OriginInfo;379380 private MemberRelationInfo m_MemberRelation;381382 private MemberRelationInfo m_MemberRelationOriginal;383384 internal const string ConstDefOpsTag = "DefOps";385386 private const string ApiKeyGetDeferredOperations = "Hierarchy.MemberRelationDataStore.GetDeferredOperations";387388 private IDictionary<string, DeferredOperationInfo> m_DeferredOperationsDict;389390 public override string RelationCaption391 {392 get393 {394 if (!string.IsNullOrEmpty(base.RelationCaption))395 {396 return base.RelationCaption;397 }398 IMetaType memberType = m_MemberRelation.MemberType;399 return GetOrCreateContextSensitiveRelationCaption(memberType.Name) ?? memberType.DisplayName.Translated;400 }401 set402 {403 base.RelationCaption = value;404 }405 }406407 protected override SupportedEntityTypes SupportedObjectType => SupportedEntityTypes.Single | SupportedEntityTypes.Composite;408409 protected internal OriginInformation OriginInfo => LazyInitializer.EnsureInitialized<OriginInformation>(ref m_OriginInfo, (Func<OriginInformation>)([CompilerGenerated] () => new OriginInformation(MemberReference.Source.Type)));410411 protected IMetaType MNTableName => MemberRelation.MNType;412413 protected IMetaReference BaseReference => MemberRelation.BaseProperty.Reference;414415 protected IMetaReference MemberReference => MemberRelation.MemberProperty.Reference;416417 protected MemberRelationInfo MemberRelation => LazyInitializer.EnsureInitialized<MemberRelationInfo>(ref m_MemberRelation, (Func<MemberRelationInfo>)([CompilerGenerated] () => base.IoCContainer.Resolve<ISchemeDescriptionService>().GetMemberRelation(base.BaseEntity, m_MemberRelationOriginal.BaseProperty.Reference, [CompilerGenerated] (MetaReferenceTarget memberTarget) => memberTarget.Target.Type == m_MemberRelationOriginal.MemberType)));418419 protected override bool RelationNeedsSavedBaseObject => true;420421 static MemberRelationDataStore()422 {423 m_StateImageInfos = new StateImageInfo[27]424 {425 new StateImageInfo(DataEntryState.None, DataEntryState.None, DataEntryState.None, RelationStateImage.AssignedNone),426 new StateImageInfo(DataEntryState.None, DataEntryState.None, DataEntryState.Set, RelationStateImage.AssignedIndirect),427 new StateImageInfo(DataEntryState.None, DataEntryState.None, DataEntryState.TriState, RelationStateImage.TriState),428 new StateImageInfo(DataEntryState.None, DataEntryState.Set, DataEntryState.None, RelationStateImage.AssignedIndirect),429 new StateImageInfo(DataEntryState.None, DataEntryState.Set, DataEntryState.Set, RelationStateImage.AssignedIndirect),430 new StateImageInfo(DataEntryState.None, DataEntryState.Set, DataEntryState.TriState, RelationStateImage.AssignedIndirect),431 new StateImageInfo(DataEntryState.None, DataEntryState.TriState, DataEntryState.None, RelationStateImage.None),432 new StateImageInfo(DataEntryState.None, DataEntryState.TriState, DataEntryState.Set, RelationStateImage.None),433 new StateImageInfo(DataEntryState.None, DataEntryState.TriState, DataEntryState.TriState, RelationStateImage.AssignedIndirect),434 new StateImageInfo(DataEntryState.Set, DataEntryState.None, DataEntryState.None, RelationStateImage.AssignedDirect),435 new StateImageInfo(DataEntryState.Set, DataEntryState.None, DataEntryState.Set, RelationStateImage.AssignedDirect),436 new StateImageInfo(DataEntryState.Set, DataEntryState.None, DataEntryState.TriState, RelationStateImage.AssignedDirect),437 new StateImageInfo(DataEntryState.Set, DataEntryState.Set, DataEntryState.None, RelationStateImage.AssignedDirectIndirect),438 new StateImageInfo(DataEntryState.Set, DataEntryState.Set, DataEntryState.Set, RelationStateImage.AssignedDirectIndirect),439 new StateImageInfo(DataEntryState.Set, DataEntryState.Set, DataEntryState.TriState, RelationStateImage.None),440 new StateImageInfo(DataEntryState.Set, DataEntryState.TriState, DataEntryState.None, RelationStateImage.None),441 new StateImageInfo(DataEntryState.Set, DataEntryState.TriState, DataEntryState.Set, RelationStateImage.AssignedDirectIndirect),442 new StateImageInfo(DataEntryState.Set, DataEntryState.TriState, DataEntryState.TriState, RelationStateImage.AssignedDirectIndirect),443 new StateImageInfo(DataEntryState.TriState, DataEntryState.None, DataEntryState.None, RelationStateImage.TriState),444 new StateImageInfo(DataEntryState.TriState, DataEntryState.None, DataEntryState.Set, RelationStateImage.TriState),445 new StateImageInfo(DataEntryState.TriState, DataEntryState.None, DataEntryState.TriState, RelationStateImage.TriState),446 new StateImageInfo(DataEntryState.TriState, DataEntryState.Set, DataEntryState.None, RelationStateImage.TriState),447 new StateImageInfo(DataEntryState.TriState, DataEntryState.Set, DataEntryState.Set, RelationStateImage.TriState),448 new StateImageInfo(DataEntryState.TriState, DataEntryState.Set, DataEntryState.TriState, RelationStateImage.TriState),449 new StateImageInfo(DataEntryState.TriState, DataEntryState.TriState, DataEntryState.None, RelationStateImage.TriState),450 new StateImageInfo(DataEntryState.TriState, DataEntryState.TriState, DataEntryState.Set, RelationStateImage.TriState),451 new StateImageInfo(DataEntryState.TriState, DataEntryState.TriState, DataEntryState.TriState, RelationStateImage.TriState)452 };453 m_StateImageMap = new Dictionary<int, RelationStateImage>();454 StateImageInfo[] stateImageInfos = m_StateImageInfos;455 foreach (StateImageInfo stateImageInfo in stateImageInfos)456 {457 m_StateImageMap[StateImageInfo.GetStateKey(stateImageInfo.MemberState, stateImageInfo.IndirectDynamicState, stateImageInfo.EffectiveState)] = stateImageInfo.Image;458 }459 }460461 public MemberRelationDataStore(IResolve iocContainer, MemberRelationInfo memberRelation, HierarchyHistoryLoadOption historyLoadOption)462 : base(iocContainer, memberRelation?.MemberType ?? throw new ArgumentNullException("memberRelation"), historyLoadOption)463 {464 //IL_0017: Unknown result type (might be due to invalid IL or missing references)465 m_MemberRelation = (m_MemberRelationOriginal = memberRelation);466 }467468 public static bool IsMember(DataEntry entry)469 {470 if (entry == null || entry.IsHierarchyPart)471 {472 return false;473 }474 return GetEffectiveMemberState(entry) == DataEntryState.Set;475 }476477 public bool MakeMember(DataEntry entry, bool recursive)478 {479 if (base.ReadOnly || entry == null)480 {481 return false;482 }483 bool result = false;484 if (!entry.IsHierarchyPart)485 {486 while (entry.Enabled && GetEffectiveMemberState(entry) != DataEntryState.Set)487 {488 entry.SignalChange();489 result = true;490 }491 }492 if (recursive)493 {494 System.Collections.Generic.IEnumerator<DataEntry> enumerator = ((System.Collections.Generic.IEnumerable<DataEntry>)entry.Children).GetEnumerator();495 try496 {497 while (((System.Collections.IEnumerator)enumerator).MoveNext())498 {499 DataEntry current = enumerator.Current;500 if (MakeMember(current, recursive: true))501 {502 result = true;503 }504 }505 }506 finally507 {508 ((System.IDisposable)enumerator)?.Dispose();509 }510 }511 return result;512 }513514 public bool MakeNoMember(DataEntry entry, bool recursive)515 {516 if (base.ReadOnly || entry == null)517 {518 return false;519 }520 bool result = false;521 if (!entry.IsHierarchyPart)522 {523 while (entry.Enabled && GetEffectiveMemberState(entry) != DataEntryState.None)524 {525 entry.SignalChange();526 result = true;527 }528 }529 if (recursive)530 {531 System.Collections.Generic.IEnumerator<DataEntry> enumerator = ((System.Collections.Generic.IEnumerable<DataEntry>)entry.Children).GetEnumerator();532 try533 {534 while (((System.Collections.IEnumerator)enumerator).MoveNext())535 {536 DataEntry current = enumerator.Current;537 if (MakeNoMember(current, recursive: true))538 {539 result = true;540 }541 }542 }543 finally544 {545 ((System.IDisposable)enumerator)?.Dispose();546 }547 }548 return result;549 }550551 protected override bool OnLoading(HierarchicalDataStoreLoadMode loadMode)552 {553 //IL_01e1: Unknown result type (might be due to invalid IL or missing references)554 //IL_01e7: Unknown result type (might be due to invalid IL or missing references)555 //IL_01ff: Unknown result type (might be due to invalid IL or missing references)556 //IL_0205: Unknown result type (might be due to invalid IL or missing references)557 bool cancel = false;558 IDataFilterExpression dataFilterExpression = ((loadMode == HierarchicalDataStoreLoadMode.Complete) ? GetQueryLimit(DataQuery.From(base.BaseType).Filter(base.BaseDataFilter).OptionalFilter([CompilerGenerated] (IQueryFilterBuilder b) => MemberRelation.MembersFilter, LanguageManager.Get("§CtrlCommonBase_Relations_Caption_ShowMembersOnly")), out cancel) : null);559 if (cancel)560 {561 return true;562 }563 List<IDataFilterExpression> val = new List<IDataFilterExpression>();564 if (base.BaseDataFilter != null)565 {566 val.Add(base.BaseDataFilter);567 }568 if (dataFilterExpression != null)569 {570 val.Add(dataFilterExpression);571 }572 if (base.ForceLoadCurrentAssignmentData && base.BaseEntity != null && val.Count > 0)573 {574 IDataFilterExpression membersFilter = MemberRelation.MembersFilter;575 if (membersFilter != null)576 {577 val.Add(membersFilter);578 IDataFilterExpression dataFilterExpression2 = ExpressionBuilder.Instance.Or("MemberRelationStore", val.ToArray());579 val.Clear();580 val.Add(dataFilterExpression2);581 }582 }583 bool flag = base.ForceFlatMode || (base.AutoFilterFlatMode && dataFilterExpression != null);584 HierarchyLoadOption hierarchyLoadOption = new HierarchyLoadOption(base.BaseType.Name)585 {586 DisplayPattern = (flag ? base.DisplayPatternFlat : base.DisplayPattern),587 Filters = (System.Collections.Generic.IReadOnlyCollection<IDataFilterExpression>)val,588 PostFilterRegex = base.PostFilterRegex,589 OrderBy = base.OrderBy,590 LoadDescription = true,591 LoadHierarchyDisplay = true592 };593 if (base.HandleCutNode)594 {595 hierarchyLoadOption.AddPropertyToLoad("IsCutNode");596 }597 if (base.BaseType.Properties["XMarkedForDeletion", false] != null)598 {599 hierarchyLoadOption.AddPropertyToLoad("XMarkedForDeletion");600 }601 base.LoadOptions = new HierarchyLoadOption[1] { hierarchyLoadOption };602 base.Hierarchy = HierarchyPath.FromParentPath(base.BaseType, flag ? "" : base.HierarchyDefinition?.ParentConnectProperty, base.HierarchyDefinition?.OuterHierarchy);603 List<RightsFilter> val2 = new List<RightsFilter>();604 IUserRightsAuthority userRightsAuthority = base.IoCContainer.Resolve<IUserRightsAuthority>(throwEx: false);605 bool flag2 = userRightsAuthority?.CanInsert(MNTableName) ?? true;606 bool flag3 = userRightsAuthority?.CanDelete(MNTableName) ?? true;607 if (base.ReadOnly || (!flag2 && !flag3))608 {609 val2.Add((RightsFilter)new NoRightsFilter());610 }611 else612 {613 if (!flag2 && flag3)614 {615 val2.Add((RightsFilter)new DataFilterBasedRightsFilter(base.IoCContainer, base.BaseType, MemberRelation.MembersFilter));616 }617 if (!flag3 && flag2)618 {619 val2.Add((RightsFilter)new DataFilterBasedRightsFilter(base.IoCContainer, base.BaseType, MemberRelation.NotMembersFilter));620 }621 if (base.EditFilter != null)622 {623 val2.Add((RightsFilter)new DataFilterBasedRightsFilter(base.IoCContainer, base.BaseType, base.EditFilter));624 }625 }626 base.RightsFilter = RelationDataStoreBase.BuildFilter((System.Collections.Generic.IEnumerable<RightsFilter>)val2);627 _LoadDeferredOperationInformation();628 return false;629 }630631 protected override void OnSetState()632 {633 //IL_0031: Unknown result type (might be due to invalid IL or missing references)634 //IL_0037: Unknown result type (might be due to invalid IL or missing references)635 //IL_0215: Unknown result type (might be due to invalid IL or missing references)636 //IL_021b: Unknown result type (might be due to invalid IL or missing references)637 //IL_03b4: Unknown result type (might be due to invalid IL or missing references)638 //IL_03b9: Unknown result type (might be due to invalid IL or missing references)639 //IL_03c2: Unknown result type (might be due to invalid IL or missing references)640 //IL_03c7: Unknown result type (might be due to invalid IL or missing references)641 if (base.BaseEntity == null)642 {643 return;644 }645 IMetaType baseMetaType = base.BaseEntity.Resolve<IMetaType>(throwException: true);646 IMetaProperty baseKeyProp = Enumerable.FirstOrDefault<MetaReferenceTarget>((System.Collections.Generic.IEnumerable<MetaReferenceTarget>)BaseReference.GetTargets(), (Func<MetaReferenceTarget, bool>)((MetaReferenceTarget t) => t.Target.Type == baseMetaType))?.Target;647 if (baseKeyProp == null)648 {649 return;650 }651 string[] baseEntityKeyValues = Enumerable.SelectMany<IUIEntity, string>(GetBaseEntities(), (Func<IUIEntity, System.Collections.Generic.IEnumerable<string>>)((IUIEntity e) => Enumerable.OfType<string>((System.Collections.IEnumerable)BaseReference.GetVariations(e.GetValue<string>(baseKeyProp.Name))))).ToArraySmart();652 IMetaType mNType = MemberRelation.MNType;653 IDataQueryService srv = base.IoCContainer.Resolve<IDataQueryService>(throwEx: true);654 IBuildDataQueryFilter buildDataQueryFilter = DataQuery.From(mNType).Filter((IQueryFilterBuilder b) => b.In(BaseReference.Source.Name, baseEntityKeyValues));655 if (base.IsHistoryMode)656 {657 buildDataQueryFilter.GoBackTo(base.HistoryLoadOption.DataTimeTrace);658 buildDataQueryFilter.Filter(ExpressionBuilder.Instance.QueryByExample(BaseReference.Source, Enumerable.First<string>((System.Collections.Generic.IEnumerable<string>)baseEntityKeyValues), "MNRelStore.History"));659 }660 bool flag = mNType.Properties["XOrigin", false] != null;661 bool flag2 = mNType.Properties["XIsInEffect", false] != null;662 bool flag3 = mNType.Properties["XMarkedForDeletion", false] != null;663 IDataQuery query = buildDataQueryFilter.Select(Enumerable.ToArray<string>(Enumerable.Select<IMetaProperty, string>(Enumerable.Where<IMetaProperty>((System.Collections.Generic.IEnumerable<IMetaProperty>)new IMetaProperty[5]664 {665 flag3 ? mNType.Properties["XMarkedForDeletion", false] : null,666 flag ? mNType.Properties["XOrigin", false] : null,667 flag2 ? mNType.Properties["XIsInEffect", false] : null,668 BaseReference.Source,669 MemberReference.Source670 }, (Func<IMetaProperty, bool>)((IMetaProperty p) => p != null)), (Func<IMetaProperty, string>)((IMetaProperty p) => p.Name))));671 System.Collections.Generic.IReadOnlyList<IUIEntityLightweight> result = srv.QueryData(query, DataQueryOption.Slim).Result;672 if (((System.Collections.Generic.IReadOnlyCollection<IUIEntityLightweight>)result).Count == 0)673 {674 return;675 }676 string name = MemberReference.Source.Name;677 Dictionary<string, MNLoadMemberInfo> val = new Dictionary<string, MNLoadMemberInfo>((IEqualityComparer<string>)(object)StringComparer.OrdinalIgnoreCase);678 System.Collections.Generic.IEnumerator<IUIEntityLightweight> enumerator = ((System.Collections.Generic.IEnumerable<IUIEntityLightweight>)result).GetEnumerator();679 try680 {681 MNLoadMemberInfo mNLoadMemberInfo = default(MNLoadMemberInfo);682 while (((System.Collections.IEnumerator)enumerator).MoveNext())683 {684 IUIEntityLightweight current = enumerator.Current;685 string value = current.GetValue<string>(name);686 value = MemberReference.ConvertToKey(value).ToString();687 if (!val.TryGetValue(value, ref mNLoadMemberInfo))688 {689 mNLoadMemberInfo = (val[value] = new MNLoadMemberInfo());690 }691 int num = ((!flag) ? 1 : current.GetValue("XOrigin", 0));692 if (num == 0 && base.IsHistoryMode)693 {694 num = 1;695 }696 if ((num & 1) > 0)697 {698 mNLoadMemberInfo.DirectAssignmentCounter++;699 }700 if ((num & 2) > 0)701 {702 mNLoadMemberInfo.IndirectAssignmentCounter++;703 }704 if ((num & 4) > 0)705 {706 mNLoadMemberInfo.DynamicGroupAssignmentCounter++;707 }708 if (base.IsHistoryMode || !flag2 || current.GetValue("XIsInEffect", defaultValue: false))709 {710 mNLoadMemberInfo.EffectiveAssignmentCounter++;711 }712 if (flag3)713 {714 int value2 = current.GetValue("XMarkedForDeletion", 0);715 if ((value2 & 2) > 0)716 {717 mNLoadMemberInfo.OutstandingCounter++;718 }719 if ((value2 & 1) > 0)720 {721 mNLoadMemberInfo.MarkedForDeletionCounter++;722 }723 }724 }725 }726 finally727 {728 ((System.IDisposable)enumerator)?.Dispose();729 }730 int num2 = baseEntityKeyValues.Length;731 Enumerator<string, MNLoadMemberInfo> enumerator2 = val.GetEnumerator();732 try733 {734 while (enumerator2.MoveNext())735 {736 KeyValuePair<string, MNLoadMemberInfo> current2 = enumerator2.Current;737 DataEntry dataEntry = base.BaseDictionary[current2.Key];738 if (dataEntry != null)739 {740 MNLoadMemberInfo value3 = current2.Value;741 int directAssignmentCounter = value3.DirectAssignmentCounter;742 if (directAssignmentCounter == num2)743 {744 dataEntry.SetState(2, DataEntryState.Set);745 }746 else747 {748 dataEntry.SetState(2, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);749 }750 directAssignmentCounter = value3.IndirectAssignmentCounter;751 if (directAssignmentCounter == num2)752 {753 dataEntry.SetState(4, DataEntryState.Set);754 }755 else756 {757 dataEntry.SetState(4, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);758 }759 directAssignmentCounter = value3.DynamicGroupAssignmentCounter;760 if (directAssignmentCounter == num2)761 {762 dataEntry.SetState(8, DataEntryState.Set);763 }764 else765 {766 dataEntry.SetState(8, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);767 }768 directAssignmentCounter = value3.EffectiveAssignmentCounter;769 if (directAssignmentCounter == num2)770 {771 dataEntry.SetState(16, DataEntryState.Set);772 }773 else774 {775 dataEntry.SetState(16, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);776 }777 directAssignmentCounter = value3.OutstandingCounter;778 if (directAssignmentCounter == num2)779 {780 dataEntry.SetState(32, DataEntryState.Set);781 }782 else783 {784 dataEntry.SetState(32, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);785 }786 directAssignmentCounter = value3.MarkedForDeletionCounter;787 if (directAssignmentCounter == num2)788 {789 dataEntry.SetState(64, DataEntryState.Set);790 }791 else792 {793 dataEntry.SetState(64, (directAssignmentCounter > 0) ? DataEntryState.TriState : DataEntryState.None);794 }795 if (value3.OutstandingCounter > 0 || value3.MarkedForDeletionCounter > 0)796 {797 dataEntry.Enabled = false;798 }799 }800 }801 }802 finally803 {804 ((System.IDisposable)enumerator2/*cast due to .constrained prefix*/).Dispose();805 }806 if (!base.HandleCutNode)807 {808 return;809 }810 System.Collections.Generic.IEnumerator<DataEntry> enumerator3 = base.BaseDictionary.GetEnumerator();811 try812 {813 while (((System.Collections.IEnumerator)enumerator3).MoveNext())814 {815 DataEntry current3 = enumerator3.Current;816 if ((bool)current3.GetRaw("IsCutNode", DataEntryValueKind.Raw))817 {818 current3.SetState(1, DataEntryState.Set);819 }820 }821 }822 finally823 {824 ((System.IDisposable)enumerator3)?.Dispose();825 }826 }827828 protected override void OnSaveChanges(System.Collections.Generic.IReadOnlyCollection<DataEntry> entriesToSave)829 {830 //IL_005c: Unknown result type (might be due to invalid IL or missing references)831 //IL_0062: Unknown result type (might be due to invalid IL or missing references)832 //IL_0186: Unknown result type (might be due to invalid IL or missing references)833 //IL_018c: Unknown result type (might be due to invalid IL or missing references)834 //IL_0266: Unknown result type (might be due to invalid IL or missing references)835 //IL_026c: Unknown result type (might be due to invalid IL or missing references)836 //IL_01fd: Unknown result type (might be due to invalid IL or missing references)837 //IL_0203: Unknown result type (might be due to invalid IL or missing references)838 //IL_02b7: Unknown result type (might be due to invalid IL or missing references)839 //IL_02bd: Unknown result type (might be due to invalid IL or missing references)840 //IL_0349: Unknown result type (might be due to invalid IL or missing references)841 //IL_034f: Unknown result type (might be due to invalid IL or missing references)842 List<IUIEntity> val = new List<IUIEntity>();843 List<IUIEntity> val2 = new List<IUIEntity>();844 string mnBaseProp = BaseReference.Source.Name;845 string mnMemberProp = MemberReference.Source.Name;846 IDataQueryService srv = base.IoCContainer.Resolve<IDataQueryService>();847 string text = null;848 IMetaProperty target = Enumerable.First<MetaReferenceTarget>((System.Collections.Generic.IEnumerable<MetaReferenceTarget>)MemberReference.GetTargets(), (Func<MetaReferenceTarget, bool>)((MetaReferenceTarget t) => t.Target.Type == base.BaseType)).Target;849 System.Collections.Generic.IEnumerator<DataEntry> enumerator = ((System.Collections.Generic.IEnumerable<DataEntry>)entriesToSave).GetEnumerator();850 try851 {852 while (((System.Collections.IEnumerator)enumerator).MoveNext())853 {854 DataEntry entryToSave = enumerator.Current;855 DataEntryState effectiveMemberState = GetEffectiveMemberState(entryToSave);856 bool flag = false;857 switch (entryToSave.GetState(2))858 {859 case DataEntryState.None:860 if (effectiveMemberState != DataEntryState.Set)861 {862 continue;863 }864 break;865 case DataEntryState.Set:866 if (effectiveMemberState != DataEntryState.None)867 {868 continue;869 }870 flag = true;871 break;872 case DataEntryState.TriState:873 if (effectiveMemberState != DataEntryState.None)874 {875 if (effectiveMemberState != DataEntryState.Set)876 {877 continue;878 }879 }880 else881 {882 flag = true;883 }884 break;885 }886 string memberKeyValue;887 if (target.IsKeyMember)888 {889 memberKeyValue = entryToSave.Key;890 }891 else892 {893 memberKeyValue = Enumerable.First<IUIEntity>((System.Collections.Generic.IEnumerable<IUIEntity>)srv.QueryData<IUIEntity>(DataQuery.From(base.BaseType).Filter((IQueryFilterBuilder b) => b.KeyIs(entryToSave.Key)).Select(target.Name), DataQueryOption.Default).Result).GetValue<string>(target.Name);894 }895 System.Collections.Generic.IEnumerator<IUIEntity> enumerator2 = GetBaseEntities().GetEnumerator();896 try897 {898 while (((System.Collections.IEnumerator)enumerator2).MoveNext())899 {900 IUIEntity current = enumerator2.Current;901 if (text == null)902 {903 IMetaType baseType = current.Resolve<IMetaType>(throwException: true);904 text = Enumerable.First<MetaReferenceTarget>((System.Collections.Generic.IEnumerable<MetaReferenceTarget>)BaseReference.GetTargets(), (Func<MetaReferenceTarget, bool>)((MetaReferenceTarget t) => t.Target.Type == baseType)).Target.Name;905 }906 string baseKeyValue = current.GetValue<string>(text);907 System.Collections.Generic.IReadOnlyList<IUIEntity> result = srv.QueryData<IUIEntity>(DataQuery.From(MNTableName).Filter((IQueryFilterBuilder b) => b.And(b.Is(mnBaseProp, baseKeyValue), b.Is(mnMemberProp, memberKeyValue))).Select(), DataQueryOption.Default).Result;908 IUIEntity iUIEntity = null;909 if (flag && ((System.Collections.Generic.IReadOnlyCollection<IUIEntity>)result).Count == 1)910 {911 val.Add(result[0]);912 }913 else if (!flag)914 {915 if (((System.Collections.Generic.IReadOnlyCollection<IUIEntity>)result).Count == 0)916 {917 iUIEntity = srv.CreateNew(MNTableName);918 iUIEntity.SetValue(mnBaseProp, baseKeyValue);919 iUIEntity.SetValue(mnMemberProp, memberKeyValue);920 }921 else922 {923 iUIEntity = result[0];924 if (MNTableName.Properties["XOrigin", false] != null)925 {926 iUIEntity.Resolve<IUIEntityController>(throwException: true).CallMethod("AssignDirect");927 }928 }929 }930 if (iUIEntity != null)931 {932 val2.Add(iUIEntity);933 }934 }935 }936 finally937 {938 ((System.IDisposable)enumerator2)?.Dispose();939 }940 if (flag)941 {942 entryToSave.SetState(18, DataEntryState.None, resetChangeLevel: true);943 }944 else945 {946 entryToSave.SetState(2, DataEntryState.Set, resetChangeLevel: true);947 }948 }949 }950 finally951 {952 ((System.IDisposable)enumerator)?.Dispose();953 }954 if (val2.Count > 0)955 {956 UIEntityComposite.CreateSmart((System.Collections.Generic.IEnumerable<IUIEntity>)val2).Resolve<IUIEntityController>(throwException: true).Save();957 }958 if (val.Count > 0)959 {960 UIEntityComposite.CreateSmart((System.Collections.Generic.IEnumerable<IUIEntity>)val).Resolve<IUIEntityController>(throwException: true).Delete();961 }962 }963964 protected override void OnLoaded(EventArgs e)965 {966 _TagDeferredOperations(base.BaseDictionary);967 base.OnLoaded(e);968 }969970 protected override void OnSavedChanges()971 {972 RefreshDeferredOperationStates();973 base.OnSavedChanges();974 }975976 protected override RelationStateImage OnGetStateImage(DataEntry entry)977 {978 bool flag = base.HandleCutNode && entry.GetState(1) == DataEntryState.Set;979 DataEntryState indirectDynamicState = entry.GetState(4);980 switch (entry.GetState(8))981 {982 case DataEntryState.Set:983 indirectDynamicState = DataEntryState.Set;984 break;985 case DataEntryState.TriState:986 indirectDynamicState = DataEntryState.TriState;987 break;988 }989 int stateKey = StateImageInfo.GetStateKey(GetEffectiveMemberState(entry), indirectDynamicState, GetCurMemberEffectiveState(entry));990 RelationStateImage relationStateImage = default(RelationStateImage);991 if (!m_StateImageMap.TryGetValue(stateKey, ref relationStateImage))992 {993 return RelationStateImage.None;994 }995 if (!flag)996 {997 return relationStateImage;998 }999 return relationStateImage + 1;1000 }10011002 protected override DataEntryState OnGetEffectiveState(DataEntry entry)1003 {1004 return GetEffectiveMemberState(entry);1005 }10061007 internal static DataEntryState GetEffectiveMemberState(DataEntry entry)1008 {1009 int changeLevel = entry.ChangeLevel;1010 switch (entry.GetState(2))1011 {1012 case DataEntryState.Set:1013 if (changeLevel % 2 != 1)1014 {1015 return DataEntryState.Set;1016 }1017 return DataEntryState.None;1018 case DataEntryState.None:1019 if (changeLevel % 2 != 1)1020 {1021 return DataEntryState.None;1022 }1023 return DataEntryState.Set;1024 case DataEntryState.TriState:1025 switch (changeLevel % 3)1026 {1027 case 0:1028 return DataEntryState.TriState;1029 case 1:1030 return DataEntryState.Set;1031 case 2:1032 return DataEntryState.None;1033 }1034 break;1035 }1036 return DataEntryState.None;1037 }10381039 public static DataEntryState GetCurMemberEffectiveState(DataEntry entry)1040 {1041 int changeLevel = entry.ChangeLevel;1042 switch (entry.GetState(16))1043 {1044 case DataEntryState.Set:1045 if (changeLevel % 2 != 1)1046 {1047 return DataEntryState.Set;1048 }1049 return DataEntryState.None;1050 case DataEntryState.None:1051 if (changeLevel % 2 != 1)1052 {1053 return DataEntryState.None;1054 }1055 return DataEntryState.Set;1056 case DataEntryState.TriState:1057 switch (changeLevel % 3)1058 {1059 case 0:1060 return DataEntryState.TriState;1061 case 1:1062 return DataEntryState.Set;1063 case 2:1064 return DataEntryState.None;1065 }1066 break;1067 }1068 return DataEntryState.None;1069 }10701071 protected override IComparer<DataEntry> OnGetStateComparer()1072 {1073 return StateComparer.Instance;1074 }10751076 protected override void OnToggleEntries(DataEntry refEntry, DataEntry[] entries)1077 {1078 bool flag = !IsMember(refEntry);1079 foreach (DataEntry entry in entries)1080 {1081 if (flag && !IsMember(entry))1082 {1083 MakeMember(entry, recursive: false);1084 }1085 else if (!flag && IsMember(entry))1086 {1087 MakeNoMember(entry, recursive: false);1088 }1089 }1090 }10911092 protected override void OnAssignEntries(DataEntry[] entries)1093 {1094 entries.ForEach([CompilerGenerated] (DataEntry e) =>1095 {1096 MakeMember(e, recursive: false);1097 });1098 }10991100 protected override void OnRemoveEntries(DataEntry[] entries)1101 {1102 entries.ForEach([CompilerGenerated] (DataEntry e) =>1103 {1104 MakeNoMember(e, recursive: false);1105 });1106 }11071108 [AsyncStateMachine(typeof(_003COnGetHistoryChangeInfosAsync_003Ed__27))]1109 protected override async System.Threading.Tasks.Task<DataTimeTrace[]> OnGetHistoryChangeInfosAsync(System.DateTime startTime, System.DateTime endTime, CancellationToken ct)1110 {1111 //IL_0002: Unknown result type (might be due to invalid IL or missing references)1112 //IL_0007: Unknown result type (might be due to invalid IL or missing references)1113 //IL_0026: Unknown result type (might be due to invalid IL or missing references)1114 //IL_0027: Unknown result type (might be due to invalid IL or missing references)1115 if (base.BaseEntity == null)1116 {1117 return null;1118 }1119 ITimeTraceDataService srv = base.IoCContainer.Resolve<ITimeTraceDataService>(throwEx: false);1120 if (srv == null)1121 {1122 return null;1123 }1124 Dictionary<string, object> val = new Dictionary<string, object>((IEqualityComparer<string>)(object)StringComparer.OrdinalIgnoreCase);1125 Dictionary<string, object> val2 = val;1126 string name = BaseReference.Source.Name;1127 val2.Add(name, await Enumerable.First<IMetaProperty>((System.Collections.Generic.IEnumerable<IMetaProperty>)m_MemberRelation.BaseType.Properties, (Func<IMetaProperty, bool>)((IMetaProperty p) => p.IsKeyMember)).GetValueAsync<object>(base.BaseEntity, null, ct).ConfigureAwait(false));1128 return await srv.GetTimeTracesAsync(MemberReference.Source.Type, (IReadOnlyDictionary<string, object>)(object)val, new GetTimeTracesOption(startTime, endTime), ct).ConfigureAwait(false);1129 }11301131 protected override void OnGetSettings(System.Collections.Generic.IList<KeyValuePair<string, string>> settings)1132 {1133 //IL_0025: Unknown result type (might be due to invalid IL or missing references)1134 //IL_004a: Unknown result type (might be due to invalid IL or missing references)1135 //IL_0074: Unknown result type (might be due to invalid IL or missing references)1136 ((System.Collections.Generic.ICollection<KeyValuePair<string, string>>)settings).Add(new KeyValuePair<string, string>(LanguageManager.Instance["§CtrlCommonBase_RelationControl_DefMode_MNTable"], MemberReference.Source.Type.Name));1137 ((System.Collections.Generic.ICollection<KeyValuePair<string, string>>)settings).Add(new KeyValuePair<string, string>(LanguageManager.Instance["§CtrlCommonBase_RelationControl_DefMode_MNMemberTable"], base.BaseType.Name));1138 ((System.Collections.Generic.ICollection<KeyValuePair<string, string>>)settings).Add(new KeyValuePair<string, string>(LanguageManager.Instance["§CtrlCommonBase_RelationControl_DefMode_MNMemberColumn"], MemberReference.Source.Name));1139 }11401141 protected override void OnBaseEntityChanged(IUIEntity old)1142 {1143 base.OnBaseEntityChanged(old);1144 m_MemberRelation = null;1145 }11461147 protected IDictionary<string, DeferredOperationInfo> OnLoadDeferredOperationDictionary(IMetaType mnType, IMetaProperty sourceKeyProperty, string sourceKeyValue)1148 {1149 //IL_0065: Unknown result type (might be due to invalid IL or missing references)1150 //IL_006b: Unknown result type (might be due to invalid IL or missing references)1151 if (!mnType.IsMNType)1152 {1153 return null;1154 }1155 IInversiveAPIService inversiveAPIService = base.IoCContainer.Resolve<IInversiveAPIService>(throwEx: false);1156 if (inversiveAPIService == null || !inversiveAPIService.IsImplemented(mnType.Model.Scheme, "Hierarchy.MemberRelationDataStore.GetDeferredOperations"))1157 {1158 return null;1159 }1160 return (IDictionary<string, DeferredOperationInfo>)(object)Enumerable.ToDictionary<IGrouping<string, object[]>, string, DeferredOperationInfo>(Enumerable.GroupBy<object[], string>((System.Collections.Generic.IEnumerable<object[]>)(List<object[]>)inversiveAPIService.Call<GenericCallResult>(mnType.Model.Scheme, "Hierarchy.MemberRelationDataStore.GetDeferredOperations", new GenericCallParameter1161 {1162 Param1 = mnType.Name,1163 Param2 = sourceKeyValue1164 }).Result1, (Func<object[], string>)((object[] o) => (string)o[0])), (Func<IGrouping<string, object[]>, string>)((IGrouping<string, object[]> g) => g.Key), (Func<IGrouping<string, object[]>, DeferredOperationInfo>)delegate(IGrouping<string, object[]> g)1165 {1166 object[] array = Enumerable.First<object[]>((System.Collections.Generic.IEnumerable<object[]>)g);1167 return new DeferredOperationInfo1168 {1169 Operation = (string)array[1],1170 Date = (System.DateTime)array[2]1171 };1172 }, (IEqualityComparer<string>)(object)StringComparer.OrdinalIgnoreCase);1173 }11741175 private void _LoadDeferredOperationInformation()1176 {1177 //IL_0093: Unknown result type (might be due to invalid IL or missing references)1178 //IL_0099: Unknown result type (might be due to invalid IL or missing references)1179 if (!MNTableName.IsMAllType && base.BaseEntity != null)1180 {1181 IMetaProperty metaProperty = Enumerable.First<IMetaProperty>((System.Collections.Generic.IEnumerable<IMetaProperty>)base.BaseEntity.Resolve<IMetaType>(throwException: true).Properties, (Func<IMetaProperty, bool>)((IMetaProperty p) => p.IsKeyMember));1182 string value = base.BaseEntity.GetValue<string>(metaProperty.Name);1183 m_DeferredOperationsDict = null;1184 if (base.IoCContainer.Resolve<IDataQueryService>().CountData(DataQuery.From(base.BaseType.Model.Scheme, "DialogDeferredOperation").SelectDisplays()) > 0)1185 {1186 m_DeferredOperationsDict = OnLoadDeferredOperationDictionary(MNTableName, metaProperty, value);1187 }1188 }1189 }11901191 private void _TagDeferredOperations(System.Collections.Generic.IEnumerable<DataEntry> entries)1192 {1193 if (m_DeferredOperationsDict == null || ((System.Collections.Generic.ICollection<KeyValuePair<string, DeferredOperationInfo>>)m_DeferredOperationsDict).Count == 0)1194 {1195 return;1196 }1197 System.Collections.Generic.IEnumerator<DataEntry> enumerator = entries.GetEnumerator();1198 try1199 {1200 DeferredOperationInfo value = default(DeferredOperationInfo);1201 while (((System.Collections.IEnumerator)enumerator).MoveNext())1202 {1203 DataEntry current = enumerator.Current;1204 if (m_DeferredOperationsDict.TryGetValue(current.Key, ref value))1205 {1206 current.Tags.Set("DefOps", value);1207 }1208 }1209 }1210 finally1211 {1212 ((System.IDisposable)enumerator)?.Dispose();1213 }1214 }12151216 internal void RefreshDeferredOperationStates()1217 {1218 _LoadDeferredOperationInformation();1219 if (m_DeferredOperationsDict != null && ((System.Collections.Generic.ICollection<KeyValuePair<string, DeferredOperationInfo>>)m_DeferredOperationsDict).Count != 0)1220 {1221 _TagDeferredOperations(base.BaseDictionary);1222 if (Enumerable.Any<DeferredOperationInfo>((System.Collections.Generic.IEnumerable<DeferredOperationInfo>)m_DeferredOperationsDict.Values, (Func<DeferredOperationInfo, bool>)((DeferredOperationInfo doi) => doi.Operation.Equals("delete", (StringComparison)5))))1223 {1224 OnSetState();1225 }1226 if (Enumerable.Any<DeferredOperationInfo>((System.Collections.Generic.IEnumerable<DeferredOperationInfo>)m_DeferredOperationsDict.Values, (Func<DeferredOperationInfo, bool>)((DeferredOperationInfo doi) => doi.Operation.Equals("insert", (StringComparison)5))))1227 {1228 _ClearInsertTaggedDataEntryStateRecursive(base.BaseDictionary);1229 }1230 }1231 }12321233 private void _ClearInsertTaggedDataEntryStateRecursive(System.Collections.Generic.IEnumerable<DataEntry> entries)1234 {1235 System.Collections.Generic.IEnumerator<DataEntry> enumerator = entries.GetEnumerator();1236 try1237 {1238 while (((System.Collections.IEnumerator)enumerator).MoveNext())1239 {1240 DataEntry current = enumerator.Current;1241 DeferredOperationInfo deferredOperationInfo = current.Tags.Get<DeferredOperationInfo>("DefOps");1242 if (deferredOperationInfo != null && deferredOperationInfo.Operation.Equals("insert", (StringComparison)5))1243 {1244 current.SetState(2, DataEntryState.None);1245 }1246 }1247 }1248 finally1249 {1250 ((System.IDisposable)enumerator)?.Dispose();1251 }1252 }1253}1254