Back to OIM Explorer

VI.DB/VI.DB.Entities/LockedEntityLogic.cs

Decompiler Source FileVI.DB.LockedEntityLogicDecompiled Source

1 extracted method/event/call references in LockedEntityLogic.

Source: F:\Claude\.tmp\oim-decompiled-full\1178_One_Identity_Manager_VI.DB.dll\VI.DB.Entities\LockedEntityLogic.cs

Source size: 24.864 characters

Interpretation

  • Decompiled source file. Use method/event registrations and call-site extraction to connect back to DialogMethod, QBMEvent, and API layers.

Relations

  • Method registration: SetLockStateForDisplay at line 493

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.

references DB/Dialog objects

Summary: classes LockedEntityLogic, _003C_003Ec__DisplayClass5_0; methods _003COnSavedAsync_003Eb__0, MoveNext, SetStateMachine, OnLoadedAsync, OnSavingAsync, OnSavedAsync; references QBMLock; markers references DB/Dialog objects

Classes

LockedEntityLogic _003C_003Ec__DisplayClass5_0

DB/Dialog object references

OIM key/entity markers

ObjectKeyOfRow

API/entity calls

CreateAsync MetaData From GetInitialData

Registrations / handlers

None extracted.

Complete Source

C#590 lines
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 NLog;11using VI.Base;1213namespace VI.DB.Entities;1415internal class LockedEntityLogic : StateLessEntityLogic16{17	[CompilerGenerated]18	private sealed class _003C_003Ec__DisplayClass5_019	{20		public string keyString;2122		internal ExpressionClause _003COnSavedAsync_003Eb__0(IExpressionContext t)23		{24			return t.Column("ObjectKeyOfRow") == keyString;25		}26	}2728	[StructLayout((LayoutKind)3)]29	[CompilerGenerated]30	private struct _003COnLoadedAsync_003Ed__3 : IAsyncStateMachine31	{32		public int _003C_003E1__state;3334		public AsyncTaskMethodBuilder<Diff> _003C_003Et__builder;3536		public IEntity entity;3738		public LogicReadOnlyParameters parameters;3940		public CancellationToken cancellationToken;4142		public LockedEntityLogic _003C_003E4__this;4344		private Logger _003Clog_003E5__2;4546		private LogSessionId _003Cid_003E5__3;4748		private ConfiguredTaskAwaiter<DbObjectKey> _003C_003Eu__1;4950		private ConfiguredTaskAwaiter<string[]> _003C_003Eu__2;5152		private void MoveNext()53		{54			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)55			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)56			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)57			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)58			//IL_0102: Unknown result type (might be due to invalid IL or missing references)59			//IL_0107: Unknown result type (might be due to invalid IL or missing references)60			//IL_010b: Unknown result type (might be due to invalid IL or missing references)61			//IL_0110: Unknown result type (might be due to invalid IL or missing references)62			//IL_0140: Unknown result type (might be due to invalid IL or missing references)63			//IL_0145: Unknown result type (might be due to invalid IL or missing references)64			//IL_014d: Unknown result type (might be due to invalid IL or missing references)65			//IL_0125: Unknown result type (might be due to invalid IL or missing references)66			//IL_0127: Unknown result type (might be due to invalid IL or missing references)67			//IL_007d: Unknown result type (might be due to invalid IL or missing references)68			//IL_0088: Unknown result type (might be due to invalid IL or missing references)69			//IL_008d: Unknown result type (might be due to invalid IL or missing references)70			//IL_0091: Unknown result type (might be due to invalid IL or missing references)71			//IL_0096: Unknown result type (might be due to invalid IL or missing references)72			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)73			//IL_00ad: Unknown result type (might be due to invalid IL or missing references)74			int num = _003C_003E1__state;75			LockedEntityLogic CS_0024_003C_003E8__locals1 = _003C_003E4__this;76			Diff result;77			try78			{79				ConfiguredTaskAwaiter<DbObjectKey> val;80				if (num == 0)81				{82					val = _003C_003Eu__1;83					_003C_003Eu__1 = default(ConfiguredTaskAwaiter<DbObjectKey>);84					num = (_003C_003E1__state = -1);85					goto IL_00e2;86				}87				ConfiguredTaskAwaiter<string[]> val2;88				if (num == 1)89				{90					val2 = _003C_003Eu__2;91					_003C_003Eu__2 = default(ConfiguredTaskAwaiter<string[]>);92					num = (_003C_003E1__state = -1);93					goto IL_015c;94				}95				if (entity.State.HasFlagFast(EntityState.Locked))96				{97					_003Clog_003E5__2 = LogManager.GetLogger("ObjectLog");98					_003Cid_003E5__3 = new LogSessionId(parameters.Session.Id, useMultiLanguage: false);99					val = DbObjectKey.CreateAsync(parameters.Session.MetaData(), entity, cancellationToken).ConfigureAwait(false).GetAwaiter();100					if (!val.IsCompleted)101					{102						num = (_003C_003E1__state = 0);103						_003C_003Eu__1 = val;104						_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<DbObjectKey>, _003COnLoadedAsync_003Ed__3>(ref val, ref this);105						return;106					}107					goto IL_00e2;108				}109				result = Diff.Empty;110				goto end_IL_000e;111				IL_015c:112				string[] result2 = val2.GetResult();113				NLogExtensions.Debug(_003Clog_003E5__2, _003Cid_003E5__3, "Lock entity columns: {0}", string.Join(",", result2));114				result = new Diff(Enumerable.SelectMany<string, DiffOperation>((System.Collections.Generic.IEnumerable<string>)result2, (Func<string, System.Collections.Generic.IEnumerable<DiffOperation>>)([CompilerGenerated] (string c) => new DiffOperation[2]115				{116					new DiffOperation117					{118						Name = c,119						Type = DiffOperationType.CanEdit,120						Value = false121					},122					new DiffOperation123					{124						Name = c,125						Type = DiffOperationType.LogicDisallowCanEdit,126						Value = "-" + CS_0024_003C_003E8__locals1.Name127					}128				})));129				goto end_IL_000e;130				IL_00e2:131				DbObjectKey result3 = val.GetResult();132				val2 = EntityLock.GetLockedColumnsAsync(parameters.Session, result3, cancellationToken).ConfigureAwait(false).GetAwaiter();133				if (!val2.IsCompleted)134				{135					num = (_003C_003E1__state = 1);136					_003C_003Eu__2 = val2;137					_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<string[]>, _003COnLoadedAsync_003Ed__3>(ref val2, ref this);138					return;139				}140				goto IL_015c;141				end_IL_000e:;142			}143			catch (System.Exception exception)144			{145				_003C_003E1__state = -2;146				_003Clog_003E5__2 = null;147				_003Cid_003E5__3 = null;148				_003C_003Et__builder.SetException(exception);149				return;150			}151			_003C_003E1__state = -2;152			_003Clog_003E5__2 = null;153			_003Cid_003E5__3 = null;154			_003C_003Et__builder.SetResult(result);155		}156157		[DebuggerHidden]158		private void SetStateMachine(IAsyncStateMachine stateMachine)159		{160			_003C_003Et__builder.SetStateMachine(stateMachine);161		}162	}163164	[StructLayout((LayoutKind)3)]165	[CompilerGenerated]166	private struct _003COnSavedAsync_003Ed__5 : IAsyncStateMachine167	{168		public int _003C_003E1__state;169170		public AsyncTaskMethodBuilder _003C_003Et__builder;171172		public IEntity entity;173174		public LogicReadWriteParameters parameters;175176		public CancellationToken cancellationToken;177178		private _003C_003Ec__DisplayClass5_0 _003C_003E8__1;179180		public LockedEntityLogic _003C_003E4__this;181182		private Logger _003Clog_003E5__2;183184		private LogSessionId _003Cid_003E5__3;185186		private ConfiguredTaskAwaiter<DbObjectKey> _003C_003Eu__1;187188		private ConfiguredTaskAwaiter<IEntityCollection> _003C_003Eu__2;189190		private System.Collections.Generic.IEnumerator<IEntity> _003C_003E7__wrap3;191192		private ConfiguredTaskAwaiter _003C_003Eu__3;193194		private void MoveNext()195		{196			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)197			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)198			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)199			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)200			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)201			//IL_01b2: Unknown result type (might be due to invalid IL or missing references)202			//IL_02f2: Unknown result type (might be due to invalid IL or missing references)203			//IL_02f7: Unknown result type (might be due to invalid IL or missing references)204			//IL_02ff: Unknown result type (might be due to invalid IL or missing references)205			//IL_015c: Unknown result type (might be due to invalid IL or missing references)206			//IL_0167: Unknown result type (might be due to invalid IL or missing references)207			//IL_016c: Unknown result type (might be due to invalid IL or missing references)208			//IL_0170: Unknown result type (might be due to invalid IL or missing references)209			//IL_0175: Unknown result type (might be due to invalid IL or missing references)210			//IL_008b: Unknown result type (might be due to invalid IL or missing references)211			//IL_0096: Unknown result type (might be due to invalid IL or missing references)212			//IL_009b: Unknown result type (might be due to invalid IL or missing references)213			//IL_009f: Unknown result type (might be due to invalid IL or missing references)214			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)215			//IL_018a: Unknown result type (might be due to invalid IL or missing references)216			//IL_018c: Unknown result type (might be due to invalid IL or missing references)217			//IL_024a: Unknown result type (might be due to invalid IL or missing references)218			//IL_024f: Unknown result type (might be due to invalid IL or missing references)219			//IL_0257: Unknown result type (might be due to invalid IL or missing references)220			//IL_00b9: Unknown result type (might be due to invalid IL or missing references)221			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)222			//IL_0201: Unknown result type (might be due to invalid IL or missing references)223			//IL_020c: Unknown result type (might be due to invalid IL or missing references)224			//IL_0211: Unknown result type (might be due to invalid IL or missing references)225			//IL_0215: Unknown result type (might be due to invalid IL or missing references)226			//IL_021a: Unknown result type (might be due to invalid IL or missing references)227			//IL_022f: Unknown result type (might be due to invalid IL or missing references)228			//IL_0231: Unknown result type (might be due to invalid IL or missing references)229			//IL_02ac: Unknown result type (might be due to invalid IL or missing references)230			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)231			//IL_02bc: Unknown result type (might be due to invalid IL or missing references)232			//IL_02c0: Unknown result type (might be due to invalid IL or missing references)233			//IL_02c5: Unknown result type (might be due to invalid IL or missing references)234			//IL_02da: Unknown result type (might be due to invalid IL or missing references)235			//IL_02dc: Unknown result type (might be due to invalid IL or missing references)236			int num = _003C_003E1__state;237			LockedEntityLogic lockedEntityLogic = _003C_003E4__this;238			try239			{240				ConfiguredTaskAwaiter<DbObjectKey> val3;241				ConfiguredTaskAwaiter<IEntityCollection> val2;242				ConfiguredTaskAwaiter val;243				IEntityCollection result;244				DbObjectKey result2;245				switch (num)246				{247				default:248					_003C_003E8__1 = new _003C_003Ec__DisplayClass5_0();249					if (entity.State.HasFlagFast(EntityState.ToDeletePhysical | EntityState.Locked))250					{251						_003Clog_003E5__2 = LogManager.GetLogger("ObjectLog");252						_003Cid_003E5__3 = new LogSessionId(parameters.Session.Id, useMultiLanguage: false);253						val3 = DbObjectKey.CreateAsync(parameters.Session.MetaData(), entity, cancellationToken).ConfigureAwait(false).GetAwaiter();254						if (!val3.IsCompleted)255						{256							num = (_003C_003E1__state = 0);257							_003C_003Eu__1 = val3;258							((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<DbObjectKey>, _003COnSavedAsync_003Ed__5>(ref val3, ref this);259							return;260						}261						goto IL_00f0;262					}263					goto end_IL_000e;264				case 0:265					val3 = _003C_003Eu__1;266					_003C_003Eu__1 = default(ConfiguredTaskAwaiter<DbObjectKey>);267					num = (_003C_003E1__state = -1);268					goto IL_00f0;269				case 1:270					val2 = _003C_003Eu__2;271					_003C_003Eu__2 = default(ConfiguredTaskAwaiter<IEntityCollection>);272					num = (_003C_003E1__state = -1);273					goto IL_01c1;274				case 2:275				{276					ConfiguredTaskAwaitable val4;277					try278					{279						if (num != 2)280						{281							goto IL_026d;282						}283						val = _003C_003Eu__3;284						_003C_003Eu__3 = default(ConfiguredTaskAwaiter);285						num = (_003C_003E1__state = -1);286						goto IL_0266;287						IL_0266:288						((ConfiguredTaskAwaiter)(ref val)).GetResult();289						goto IL_026d;290						IL_026d:291						if (((System.Collections.IEnumerator)_003C_003E7__wrap3).MoveNext())292						{293							IEntity current = _003C_003E7__wrap3.Current;294							current.MarkForDeletion();295							val4 = parameters.UnitOfWork.PutAsync(current, cancellationToken).ConfigureAwait(false);296							val = ((ConfiguredTaskAwaitable)(ref val4)).GetAwaiter();297							if (!((ConfiguredTaskAwaiter)(ref val)).IsCompleted)298							{299								num = (_003C_003E1__state = 2);300								_003C_003Eu__3 = val;301								((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter, _003COnSavedAsync_003Ed__5>(ref val, ref this);302								return;303							}304							goto IL_0266;305						}306					}307					finally308					{309						if (num < 0 && _003C_003E7__wrap3 != null)310						{311							((System.IDisposable)_003C_003E7__wrap3).Dispose();312						}313					}314					_003C_003E7__wrap3 = null;315					val4 = ((StateLessEntityLogic)lockedEntityLogic).OnSavedAsync(entity, parameters, cancellationToken).ConfigureAwait(false);316					val = ((ConfiguredTaskAwaitable)(ref val4)).GetAwaiter();317					if (!((ConfiguredTaskAwaiter)(ref val)).IsCompleted)318					{319						num = (_003C_003E1__state = 3);320						_003C_003Eu__3 = val;321						((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter, _003COnSavedAsync_003Ed__5>(ref val, ref this);322						return;323					}324					break;325				}326				case 3:327					{328						val = _003C_003Eu__3;329						_003C_003Eu__3 = default(ConfiguredTaskAwaiter);330						num = (_003C_003E1__state = -1);331						break;332					}333					IL_01c1:334					result = val2.GetResult();335					_003C_003E7__wrap3 = ((System.Collections.Generic.IEnumerable<IEntity>)result).GetEnumerator();336					goto case 2;337					IL_00f0:338					result2 = val3.GetResult();339					_003C_003E8__1.keyString = result2.ToXmlString();340					NLogExtensions.Debug(_003Clog_003E5__2, _003Cid_003E5__3, "Removing lock information for : {0}", _003C_003E8__1.keyString);341					val2 = parameters.EntitySource.GetCollectionAsync((from t in Query.From("QBMLock")342						where t.Column("ObjectKeyOfRow") == _003C_003E8__1.keyString343						select t).SelectNonLobs(), EntityCollectionLoadType.Bulk, cancellationToken).ConfigureAwait(false).GetAwaiter();344					if (!val2.IsCompleted)345					{346						num = (_003C_003E1__state = 1);347						_003C_003Eu__2 = val2;348						((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<IEntityCollection>, _003COnSavedAsync_003Ed__5>(ref val2, ref this);349						return;350					}351					goto IL_01c1;352				}353				((ConfiguredTaskAwaiter)(ref val)).GetResult();354				end_IL_000e:;355			}356			catch (System.Exception exception)357			{358				_003C_003E1__state = -2;359				_003C_003E8__1 = null;360				_003Clog_003E5__2 = null;361				_003Cid_003E5__3 = null;362				((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetException(exception);363				return;364			}365			_003C_003E1__state = -2;366			_003C_003E8__1 = null;367			_003Clog_003E5__2 = null;368			_003Cid_003E5__3 = null;369			((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetResult();370		}371372		[DebuggerHidden]373		private void SetStateMachine(IAsyncStateMachine stateMachine)374		{375			((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetStateMachine(stateMachine);376		}377	}378379	[StructLayout((LayoutKind)3)]380	[CompilerGenerated]381	private struct _003COnSavingAsync_003Ed__4 : IAsyncStateMachine382	{383		public int _003C_003E1__state;384385		public AsyncTaskMethodBuilder<Diff> _003C_003Et__builder;386387		public IEntity entity;388389		public LockedEntityLogic _003C_003E4__this;390391		public LogicReadWriteParameters parameters;392393		public CancellationToken cancellationToken;394395		private ConfiguredTaskAwaiter _003C_003Eu__1;396397		private ConfiguredTaskAwaiter<Diff> _003C_003Eu__2;398399		private void MoveNext()400		{401			//IL_0099: Unknown result type (might be due to invalid IL or missing references)402			//IL_009e: Unknown result type (might be due to invalid IL or missing references)403			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)404			//IL_010f: Unknown result type (might be due to invalid IL or missing references)405			//IL_0114: Unknown result type (might be due to invalid IL or missing references)406			//IL_011c: Unknown result type (might be due to invalid IL or missing references)407			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)408			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)409			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)410			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)411			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)412			//IL_00f7: Unknown result type (might be due to invalid IL or missing references)413			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)414			//IL_0052: Unknown result type (might be due to invalid IL or missing references)415			//IL_005d: Unknown result type (might be due to invalid IL or missing references)416			//IL_0062: Unknown result type (might be due to invalid IL or missing references)417			//IL_0066: Unknown result type (might be due to invalid IL or missing references)418			//IL_006b: Unknown result type (might be due to invalid IL or missing references)419			//IL_007f: Unknown result type (might be due to invalid IL or missing references)420			//IL_0080: Unknown result type (might be due to invalid IL or missing references)421			int num = _003C_003E1__state;422			LockedEntityLogic lockedEntityLogic = _003C_003E4__this;423			Diff result;424			try425			{426				ConfiguredTaskAwaiter<Diff> val;427				ConfiguredTaskAwaiter val3;428				if (num != 0)429				{430					if (num == 1)431					{432						val = _003C_003Eu__2;433						_003C_003Eu__2 = default(ConfiguredTaskAwaiter<Diff>);434						num = (_003C_003E1__state = -1);435						goto IL_012b;436					}437					if (!entity.State.HasFlagFast(EntityState.Locked) || lockedEntityLogic._GetOriginalXMarkedForDeletion(entity).HasFlagFast(XMarkedForDeletion.Locked))438					{439						goto IL_00bb;440					}441					ConfiguredTaskAwaitable val2 = EntityLock.CheckAllowedAsync(parameters.Session, cancellationToken).ConfigureAwait(false);442					val3 = ((ConfiguredTaskAwaitable)(ref val2)).GetAwaiter();443					if (!((ConfiguredTaskAwaiter)(ref val3)).IsCompleted)444					{445						num = (_003C_003E1__state = 0);446						_003C_003Eu__1 = val3;447						_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter, _003COnSavingAsync_003Ed__4>(ref val3, ref this);448						return;449					}450				}451				else452				{453					val3 = _003C_003Eu__1;454					_003C_003Eu__1 = default(ConfiguredTaskAwaiter);455					num = (_003C_003E1__state = -1);456				}457				((ConfiguredTaskAwaiter)(ref val3)).GetResult();458				goto IL_00bb;459				IL_00bb:460				val = ((EntityLogicBase)lockedEntityLogic).OnSavingAsync(entity, parameters, cancellationToken).ConfigureAwait(false).GetAwaiter();461				if (!val.IsCompleted)462				{463					num = (_003C_003E1__state = 1);464					_003C_003Eu__2 = val;465					_003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<Diff>, _003COnSavingAsync_003Ed__4>(ref val, ref this);466					return;467				}468				goto IL_012b;469				IL_012b:470				result = val.GetResult();471			}472			catch (System.Exception exception)473			{474				_003C_003E1__state = -2;475				_003C_003Et__builder.SetException(exception);476				return;477			}478			_003C_003E1__state = -2;479			_003C_003Et__builder.SetResult(result);480		}481482		[DebuggerHidden]483		private void SetStateMachine(IAsyncStateMachine stateMachine)484		{485			_003C_003Et__builder.SetStateMachine(stateMachine);486		}487	}488489	public override int Priority => 23;490491	public LockedEntityLogic()492	{493		RegisterMethod("SetLockStateForDisplay").As<string[], bool>(_LockColumns);494	}495496	[AsyncStateMachine(typeof(_003COnLoadedAsync_003Ed__3))]497	public override async System.Threading.Tasks.Task<Diff> OnLoadedAsync(IEntity entity, LogicReadOnlyParameters parameters, CancellationToken cancellationToken)498	{499		//IL_0002: Unknown result type (might be due to invalid IL or missing references)500		//IL_0007: Unknown result type (might be due to invalid IL or missing references)501		//IL_0026: Unknown result type (might be due to invalid IL or missing references)502		//IL_0027: Unknown result type (might be due to invalid IL or missing references)503		if (!entity.State.HasFlagFast(EntityState.Locked))504		{505			return Diff.Empty;506		}507		Logger log = LogManager.GetLogger("ObjectLog");508		LogSessionId id = new LogSessionId(parameters.Session.Id, useMultiLanguage: false);509		DbObjectKey key = await DbObjectKey.CreateAsync(parameters.Session.MetaData(), entity, cancellationToken).ConfigureAwait(false);510		string[] array = await EntityLock.GetLockedColumnsAsync(parameters.Session, key, cancellationToken).ConfigureAwait(false);511		NLogExtensions.Debug(log, id, "Lock entity columns: {0}", string.Join(",", array));512		return new Diff(Enumerable.SelectMany<string, DiffOperation>((System.Collections.Generic.IEnumerable<string>)array, (Func<string, System.Collections.Generic.IEnumerable<DiffOperation>>)([CompilerGenerated] (string c) => new DiffOperation[2]513		{514			new DiffOperation515			{516				Name = c,517				Type = DiffOperationType.CanEdit,518				Value = false519			},520			new DiffOperation521			{522				Name = c,523				Type = DiffOperationType.LogicDisallowCanEdit,524				Value = "-" + Name525			}526		})));527	}528529	[AsyncStateMachine(typeof(_003COnSavingAsync_003Ed__4))]530	public override async System.Threading.Tasks.Task<Diff> OnSavingAsync(IEntity entity, LogicReadWriteParameters parameters, CancellationToken cancellationToken)531	{532		//IL_0002: Unknown result type (might be due to invalid IL or missing references)533		//IL_0007: Unknown result type (might be due to invalid IL or missing references)534		//IL_0026: Unknown result type (might be due to invalid IL or missing references)535		//IL_0027: Unknown result type (might be due to invalid IL or missing references)536		if (entity.State.HasFlagFast(EntityState.Locked) && !_GetOriginalXMarkedForDeletion(entity).HasFlagFast(XMarkedForDeletion.Locked))537		{538			await EntityLock.CheckAllowedAsync(parameters.Session, cancellationToken).ConfigureAwait(false);539		}540		return await base.OnSavingAsync(entity, parameters, cancellationToken).ConfigureAwait(false);541	}542543	[AsyncStateMachine(typeof(_003COnSavedAsync_003Ed__5))]544	public override System.Threading.Tasks.Task OnSavedAsync(IEntity entity, LogicReadWriteParameters parameters, CancellationToken cancellationToken)545	{546		//IL_0002: Unknown result type (might be due to invalid IL or missing references)547		//IL_0007: Unknown result type (might be due to invalid IL or missing references)548		//IL_0026: Unknown result type (might be due to invalid IL or missing references)549		//IL_0027: Unknown result type (might be due to invalid IL or missing references)550		_003COnSavedAsync_003Ed__5 _003COnSavedAsync_003Ed__ = default(_003COnSavedAsync_003Ed__5);551		_003COnSavedAsync_003Ed__._003C_003Et__builder = AsyncTaskMethodBuilder.Create();552		_003COnSavedAsync_003Ed__._003C_003E4__this = this;553		_003COnSavedAsync_003Ed__.entity = entity;554		_003COnSavedAsync_003Ed__.parameters = parameters;555		_003COnSavedAsync_003Ed__.cancellationToken = cancellationToken;556		_003COnSavedAsync_003Ed__._003C_003E1__state = -1;557		((AsyncTaskMethodBuilder)(ref _003COnSavedAsync_003Ed__._003C_003Et__builder)).Start<_003COnSavedAsync_003Ed__5>(ref _003COnSavedAsync_003Ed__);558		return ((AsyncTaskMethodBuilder)(ref _003COnSavedAsync_003Ed__._003C_003Et__builder)).Task;559	}560561	private System.Threading.Tasks.Task _LockColumns(ISession s, IEntity e, string[] columns, bool locked, CancellationToken ct)562	{563		//IL_003a: Unknown result type (might be due to invalid IL or missing references)564		Diff diff = new Diff(Enumerable.SelectMany<string, DiffOperation>(columns ?? Enumerable.Empty<string>(), (Func<string, System.Collections.Generic.IEnumerable<DiffOperation>>)((string c) => new DiffOperation[1]565		{566			new DiffOperation567			{568				Name = c,569				Type = DiffOperationType.LogicDisallowCanEdit,570				Value = (locked ? "+" : "-") + Name571			}572		})));573		return e.ApplyAsync(diff, ct);574	}575576	private XMarkedForDeletion _GetOriginalXMarkedForDeletion(IEntity entity)577	{578		IEntityRawData initialData = entity.GetInitialData();579		if (initialData == null)580		{581			return XMarkedForDeletion.None;582		}583		if (!initialData.TryGetValue("xmarkedfordeletion", out var value))584		{585			return XMarkedForDeletion.None;586		}587		return (XMarkedForDeletion)DbVal.ConvertTo<int>(value);588	}589}590