/// <inheritdoc /> public bool Rename(DbRef reference, string newName) { if (string.IsNullOrWhiteSpace(newName)) { return(false); } var cts = new CancellationTokenSource(5000); // 5 seconds var getAsyncTask = ObjectBase.GetAsync(this.redis, reference, cts.Token); // 5 seconds if (!getAsyncTask.Wait(5000)) { return(false); } var target = getAsyncTask.Result; if (target == null) { return(false); } if (!target.Owner.Equals(this.caller.DbRef)) { return(false); } target.Name = newName; var saveAsyncTask = target.SaveAsync(this.redis, cts.Token); if (!saveAsyncTask.Wait(5000)) { return(false); } return(true); }
private static object GetDefaultValue(EntityField field) { if (field.Type == typeof(IDbRef)) { return(DbRef.CreateInstance(field.DbRefTable, Guid.Empty)); } if (field.AllowNull) { return(null); } if (field.Type.IsValueType) { return(Activator.CreateInstance(field.Type)); } if (field.Type == typeof(string)) { return(string.Empty); } throw new Exception("Unknown type: " + field.Type); }
internal void TopInfo_RightButton_OnClick(object sender, EventArgs e) { var name = ((EditText)Variables["NameEditText"]).Text; var surname = ((EditText)Variables["SurnameEditText"]).Text; var position = ((EditText)Variables["PositionEditText"]).Text; var phone = ((EditText)Variables["PhoneEditText"]).Text; var email = ((EditText)Variables["EMailEditText"]).Text; // TODO: Разбраться с Code if (string.IsNullOrWhiteSpace(name)) { Dialog.Message(Translator.Translate("forgot_name")); return; } Contact.Description = $"{name} {surname}"; Contact.Position = position; Contact.Tel = phone; Contact.EMail = email; DBHelper.SaveEntity(Contact); if (_clientId != null) { // TODO Разобраться с LineNumber var clientContacts = new Client_Contacts { Ref = DbRef.FromString(_clientId), Id = DbRef.CreateInstance("Catalog_Client_Contacts", Guid.NewGuid()), Contact = Contact.Id, Actual = false // Actual на самом деле означает "уволен" }; DBHelper.SaveEntity(clientContacts); } Navigation.Back(); }
public static DbRef GetDbRefFromEnum(StatusImportanceEnum @enum) { string res = null; switch (@enum) { case StatusImportanceEnum.Standart: res = "9deb314e-1bd6-1ee0-4eb2-ac621ba09b74"; break; case StatusImportanceEnum.High: res = "9495d0f0-6ef5-a7fe-473f-8e2d6e8586e2"; break; case StatusImportanceEnum.Critical: res = "a570aeea-0f88-54c3-4075-d0cb82f0dd95"; break; } if (string.IsNullOrEmpty(res)) { return(null); } return(DbRef.FromString($"@ref[Enum_StatusImportance]:{res}")); }
public static DbRef GetDbRefFromEnum(StatusTasksEnum @enum) { string res = null; switch (@enum) { case StatusTasksEnum.New: res = "a0a9e67f-483e-419a-a714-859f13c1245c"; break; case StatusTasksEnum.Done: res = "a0a9e67f-483e-423a-a714-859f13c1245c"; break; case StatusTasksEnum.Rejected: res = "a0a9e67f-483e-426b-a714-859f13c1245c"; break; } if (string.IsNullOrEmpty(res)) { return(null); } return(DbRef.FromString($"@ref[Enum_StatusTasks]:{res}")); }
public static DbRef GetDbRefFromEnum(CheckListStatusEnum @enum) { string res = null; switch (@enum) { case CheckListStatusEnum.Blank: res = "854946f6-fc1d-bec2-4968-1f7e3c8d3c61"; break; case CheckListStatusEnum.Active: res = "ba4d325a-f1b7-072d-4c3e-fd4bf9f33901"; break; case CheckListStatusEnum.Disactive: res = "ab0acbab-556c-7058-4ba9-e4cd72c2958d"; break; } if (string.IsNullOrEmpty(res)) { return(null); } return(DbRef.FromString($"@ref[Enum_CheckListStatus]:{res}")); }
public static DbRef GetDbRefFromEnum(ResultEventEnum @enum) { string res = null; switch (@enum) { case ResultEventEnum.New: res = "ae46ba49-b076-6c8c-4730-4709e7191d5b"; break; case ResultEventEnum.Done: res = "81270b2c-190a-faf2-440f-4a593042495e"; break; case ResultEventEnum.NotDone: res = "9956cf47-e216-522e-48f6-8aba06fc9a5e"; break; } if (string.IsNullOrEmpty(res)) { return(null); } return(DbRef.FromString($"@ref[Enum_ResultEvent]:{res}")); }
public void SetDbRefValue(string name, string tableName, string value) { var dbRef = DbRef.CreateInstance(tableName, Guid.Parse(value)); SetValue(name, dbRef); }
/// <inheritdoc /> public bool SetProperty(DbRef reference, string propertyName, object propertyValue) { var cts = new CancellationTokenSource(5000); // 5 seconds var getAsyncTask = ObjectBase.GetAsync(this.redis, reference, cts.Token); // 5 seconds if (!getAsyncTask.Wait(5000)) { return(false); } var target = getAsyncTask.Result; if (target == null) { return(false); } var existingProperty = target.Properties?.FirstOrDefault(p => p != null && string.Compare(p.Name, propertyName, StringComparison.OrdinalIgnoreCase) == 0); if (existingProperty == null) { // If unset and property to set to is null, don't do anything. if (propertyValue == null || DbRef.Nothing.Equals(propertyValue)) { return(false); } // TODO: We currently let anyone create an unset property on any other object. That should change, but how. var newProperty = new Property(propertyName, propertyValue, this.caller.DbRef); target.Properties = target.Properties == null ? new[] { newProperty } : (new List <Property>(target.Properties) { newProperty }).ToArray(); var saveAsyncTask = target.SaveAsync(this.redis, cts.Token); if (!saveAsyncTask.Wait(5000)) { return(false); } return(true); } // Property does exist // If I am not the owner, then to change this property, it must be publically writable if (!target.Owner.Equals(this.caller.DbRef) && !existingProperty.PublicWriteable) { return(false); } // If the new value is null, just delete the property if (propertyValue == null) { var newPropertyList = new List <Property>(target.Properties); newPropertyList.Remove(existingProperty); target.Properties = newPropertyList.ToArray(); } else { existingProperty.Value = propertyValue; } var saveAsyncTask2 = target.SaveAsync(this.redis, cts.Token); return(saveAsyncTask2.Wait(5000)); }
public static new async Task <Player> GetAsync([NotNull] ICacheClient redis, DbRef playerRef, CancellationToken cancellationToken) => (await CacheManager.LookupOrRetrieveAsync(playerRef, redis, async(d, token) => await redis.GetAsync <Player>($"mudpie::player:{d}"), cancellationToken))?.DataObject;
internal void Print_OnClick(object sender, EventArgs e) { _enteredSumEditText.Enabled = false; var checkParameters = new Event_EventFiskalProperties { Id = DbRef.CreateInstance($"Document_{nameof(Event_EventFiskalProperties)}" , Guid.NewGuid()), Ref = DbRef.FromString(_eventId), User = Settings.UserDetailedInfo.Id }; Dialog.ShowProgressDialog(Translator.Translate("please_wait"), true); TaskFactory.RunTaskWithTimeout(() => { var checkError = false; try { PrintCheck(); if (_fptr.CloseCheck() < 0) { _fptr.CheckError(); } checkParameters.Date = DateTime.Now; DBHelper.SaveEntity(checkParameters, false); } catch (FPTRException exception) { Utils.TraceMessage($"Error code {exception.Result} {exception.Message}"); checkError = true; Toast.MakeToast(Translator.Translate(exception.Message)); } catch (Exception exception) { Utils.TraceMessage($"{exception.Message}{Environment.NewLine}" + $"Type {exception.GetType()}"); } Utils.TraceMessage($"Check Error: {checkError}"); if (!checkError) { SaveFptrParameters(checkParameters); BusinessProcess.GlobalVariables[Parameters.IdCurrentEventId] = _eventId; Utils.TraceMessage($"GoTo {nameof(COCScreen)}"); Application.InvokeOnMainThread(() => { Navigation.ModalMove(nameof(COCScreen), new Dictionary <string, object> { { Parameters.IdCurrentEventId, _eventId }, { Parameters.IdIsReadonly, _readonly }, { Parameters.IdWasEventStarted, _wasStarted } }); }); } else { try { DBHelper.DeleteByRef(checkParameters.Id, false); _fptr.CancelCheck(); } catch (FPTRException exception) { Toast.MakeToast(Translator.Translate(exception.Message)); } finally { if (_choosedPaymentType == 0) { Application.InvokeOnMainThread(() => _enteredSumEditText.Enabled = true); } } } }, FptrAction.PrintingTimeOut, result => { if (result.Finished) { Dialog.HideProgressDialog(); return; } Dialog.HideProgressDialog(); Toast.MakeToast(Translator.Translate("сonnection_error")); }); }
internal void FinishButton_OnClick(object sender, EventArgs eventArgs) { if (_eventResults.Id == null) { Toast.MakeToast("Результат завершения не может быть пустым"); return; } Utils.TraceMessage($"_eventResult.Id.Empty: {_eventResults.Id.EmptyRef()} not {!_eventResults.Id.EmptyRef()}{Environment.NewLine}" + $"_evenResult.Negative {_eventResults.Negative} {Environment.NewLine}" + $"string.IsNullOrEmpty(_commentaryMemoEdit.Text) {string.IsNullOrEmpty(_commentaryMemoEdit.Text)}{Environment.NewLine}" + $"Total Result: {!_eventResults.Id.EmptyRef() && _eventResults.Negative && string.IsNullOrEmpty(_commentaryMemoEdit.Text)}"); if (!_eventResults.Id.EmptyRef() && _eventResults.Negative && string.IsNullOrEmpty(_commentaryMemoEdit.Text)) { Toast.MakeToast("Комментарий не может быть пустым"); return; } var eventRef = DbRef.FromString((string)BusinessProcess.GlobalVariables[Parameters.IdCurrentEventId]); var entitiesList = new ArrayList(); var @event = (Event)eventRef.GetObject(); if (((TypesEvents)@event.KindEvent.GetObject()).Name == "Visit") { var result = DBHelper.GetCoordinate(TimeRangeCoordinate.DefaultTimeRange); var latitude = Converter.ToDouble(result["Latitude"]); var longitude = Converter.ToDouble(result["Longitude"]); @event.Latitude = Converter.ToDecimal(latitude); @event.Longitude = Converter.ToDecimal(longitude); var text = ""; Utils.TraceMessage($"lat:{latitude} long:{longitude}"); if (latitude.Equals(0) & longitude.Equals(0)) { text += "Не удалось сохранить координаты встречи"; } else { text += "Координаты встречи успешно сохранены"; } Toast.MakeToast(text); } if (!string.IsNullOrEmpty(_commentaryMemoEdit.Text)) { @event.CommentContractor = _commentaryMemoEdit.Text; } if (!_eventResults.Id.EmptyRef()) { @event.EventResult = _eventResults.Id; } if (!string.IsNullOrEmpty(@event.CommentContractor) || [email protected]()) { entitiesList.Add(@event); } DBHelper.SaveEntities(entitiesList); _eventResults = null; _commentaryString = null; Navigation.CleanStack(); Navigation.ModalMove("EventListScreen"); }
internal string GenerateRequiredIndicatorId(DbRef id) { return(GenerateRequiredIndicatorId(id.ToString(CultureInfo.CurrentCulture))); }
public async Task <ProgramContext <T> > RunProgramAsync <T>( DbRef programRef, [CanBeNull] Connection connection, [NotNull] ObjectBase thisObject, [NotNull] ObjectBase caller, [CanBeNull] string verb, [CanBeNull] string argString, [CanBeNull] string[] args, [CanBeNull] string directObjectString, [CanBeNull] ObjectBase directObject, [CanBeNull] string prepositionString, [CanBeNull] string indirectObjectString, [CanBeNull] ObjectBase indirectObject, CancellationToken cancellationToken) { if (thisObject == null) { throw new ArgumentNullException(nameof(thisObject)); } if (caller == null) { throw new ArgumentNullException(nameof(caller)); } if (programRef.Equals(DbRef.Nothing)) { return(ProgramContext <T> .Error(null, ContextErrorNumber.ProgramNotSpecified, "No program was supplied")); } var program = await Program.GetAsync(this.redis, programRef, cancellationToken); if (program == null) { return(ProgramContext <T> .Error( null, ContextErrorNumber.ProgramNotFound, $"Unable to locate program {programRef}")); } // ReSharper disable once ConditionIsAlwaysTrueOrFalse if (connection?.Identity == null && !program.UnauthenticatedExecution) { return(ProgramContext <T> .Error(program, ContextErrorNumber.AuthenticationRequired, "No trigger was supplied")); } var context = new ProgramContext <T>(program); using (var outputStream = new MemoryStream(2048)) using (var outputStreamReader = new StreamReader(outputStream)) using (var outputStreamWriter = new StreamWriter(outputStream)) // Don't try to combine this with the method parameter version using (var outputCancellationTokenSource = new CancellationTokenSource()) { Debug.Assert(outputStream != null, "outputStream != null"); Debug.Assert(outputStreamWriter != null, "outputStreamWriter != null"); var scriptGlobals = new ProgramContextGlobals(thisObject, caller, outputStreamWriter, new Libraries.DatabaseLibrary(caller, this.redis)) { ArgString = argString, Args = args, DirectObject = directObject, DirectObjectString = directObjectString, IndirectObject = indirectObject, IndirectObjectString = indirectObjectString, Player = connection?.Identity, PlayerLocation = connection?.Identity == null ? null : (await CacheManager.LookupOrRetrieveAsync <ObjectBase>(connection.Identity.Location, this.Redis, async(d, token) => await Room.GetAsync(this.Redis, d, token), cancellationToken))?.DataObject, PrepositionString = prepositionString, Verb = verb }; var outputLastPositionRead = 0L; // OUTPUT var appendOutputTask = new Task( async() => { while (context.State == ContextState.Loaded || context.State == ContextState.Running) { if (context.State == ContextState.Running) { // Input await scriptGlobals.PlayerInputWriterInternal.FlushAsync(); // Output await scriptGlobals.PlayerOutput.FlushAsync(); outputStream.Position = Interlocked.Read(ref outputLastPositionRead); var outputString = await outputStreamReader.ReadToEndAsync(); if (!string.IsNullOrEmpty(outputString)) { context.AppendFeedback(outputString); } Interlocked.Exchange(ref outputLastPositionRead, outputStream.Position); // Send output to trigger, if capable of receiving. while (connection != null && context.Output.Count > 0) { string nextOutput; if (context.Output.TryDequeue(out nextOutput) && nextOutput != null) { await connection.SendAsync(nextOutput, cancellationToken); } else { break; } } } Thread.Sleep(100); } }, outputCancellationTokenSource.Token); appendOutputTask.Start(); // INPUT if (program.Interactive) { connection?.RedirectInputToProgram( async input => { await scriptGlobals.PlayerInputWriterInternal.WriteAsync(input); await scriptGlobals.PlayerInputWriterInternal.FlushAsync(); }); } try { await context.RunAsync(scriptGlobals, cancellationToken); } finally { connection?.ResetInputRedirection(); } outputCancellationTokenSource.Cancel(); // Do one last time to get any last feedback // Input await scriptGlobals.PlayerInputWriterInternal.FlushAsync(); // Output await scriptGlobals.PlayerOutput.FlushAsync(); outputStream.Position = Interlocked.Read(ref outputLastPositionRead); var feedbackString2 = await outputStreamReader.ReadToEndAsync(); Interlocked.Exchange(ref outputLastPositionRead, outputStream.Position); if (!string.IsNullOrEmpty(feedbackString2)) { context.AppendFeedback(feedbackString2); } // Send output to trigger, if capable of receiving. while (connection != null && context.Output.Count > 0) { string nextOutput; if (context.Output.TryDequeue(out nextOutput) && nextOutput != null) { await connection.SendAsync(nextOutput, cancellationToken); } else { break; } } } return(context); }
public static async Task <Tuple <DbRef, ObjectBase> > MatchVerbAsync([CanBeNull] Player player, [NotNull] ICacheClient redis, [NotNull] string text, DbRef directObjectRef, DbRef indirectObjectRef, CancellationToken cancellationToken) { var matched = await MatchTypeAsync <Link>(player, redis, text, cancellationToken); if (!matched.Item1.Equals(DbRef.FailedMatch)) { return(matched); } // We didn't find a verb, so try hunting on the Direct Object if (!directObjectRef.Equals(DbRef.Ambiguous) && !directObjectRef.Equals(DbRef.FailedMatch) && !directObjectRef.Equals(DbRef.Nothing)) { var exactMatch = DbRef.FailedMatch; ObjectBase lastExactMatchObject = null; var partialMatch = DbRef.FailedMatch; ObjectBase lastPartialMatchObject = null; var directObject = await CacheManager.LookupOrRetrieveAsync(directObjectRef, redis, async (d, token) => await ObjectBase.GetAsync(redis, d, token), cancellationToken); if (directObject == null) { return(new Tuple <DbRef, ObjectBase>(exactMatch, null)); } MatchTypeOnObject <Link, ObjectBase>(text, directObject, ref exactMatch, ref lastExactMatchObject, ref partialMatch, ref lastPartialMatchObject); if (exactMatch > 0) { return(exactMatch > 0 ? new Tuple <DbRef, ObjectBase>(exactMatch, lastExactMatchObject) : new Tuple <DbRef, ObjectBase>(exactMatch, null)); } if (partialMatch > 0) { return(partialMatch > 0 ? new Tuple <DbRef, ObjectBase>(partialMatch, lastPartialMatchObject) : new Tuple <DbRef, ObjectBase>(partialMatch, null)); } return(new Tuple <DbRef, ObjectBase>(exactMatch + partialMatch, null)); } // We didn't find a verb, so try hunting on the Indirect Object if (!indirectObjectRef.Equals(DbRef.Ambiguous) && !indirectObjectRef.Equals(DbRef.FailedMatch) && !indirectObjectRef.Equals(DbRef.Nothing)) { var exactMatch = DbRef.FailedMatch; ObjectBase lastExactMatchObject = null; var partialMatch = DbRef.FailedMatch; ObjectBase lastPartialMatchObject = null; var indirectObject = await CacheManager.LookupOrRetrieveAsync(indirectObjectRef, redis, async (d, token) => await ObjectBase.GetAsync(redis, d, token), cancellationToken); if (indirectObject == null) { return(new Tuple <DbRef, ObjectBase>(exactMatch, null)); } MatchTypeOnObject <Link, ObjectBase>(text, indirectObject, ref exactMatch, ref lastExactMatchObject, ref partialMatch, ref lastPartialMatchObject); if (exactMatch > 0) { return(exactMatch > 0 ? new Tuple <DbRef, ObjectBase>(exactMatch, lastExactMatchObject) : new Tuple <DbRef, ObjectBase>(exactMatch, null)); } if (partialMatch > 0) { return(partialMatch > 0 ? new Tuple <DbRef, ObjectBase>(partialMatch, lastPartialMatchObject) : new Tuple <DbRef, ObjectBase>(partialMatch, null)); } return(new Tuple <DbRef, ObjectBase>(exactMatch + partialMatch, null)); } return(new Tuple <DbRef, ObjectBase>(DbRef.FailedMatch, null)); }
private object Parse(Type type, object value) { object result = null; bool isNullable = !type.IsValueType; Type t = Nullable.GetUnderlyingType(type); if (t == null) { t = type; isNullable = true; } if (value == null) { return(isNullable ? null : Activator.CreateInstance(type)); } var str = value as string; if (str != null) { if (t == typeof(IDbRef)) { if (DbRef.CheckIsRef(str)) { result = DbRef.FromString(str); } else { throw new Exception("Invalid DBRef: " + str); } } else if (type == typeof(string)) { result = str; } else if (t == typeof(Guid)) { result = Guid.Parse(str); } else if (t == typeof(DateTime)) { result = DateTime.Parse(str); } else if (t == typeof(Int32)) { result = Int32.Parse(str); } else if (t == typeof(Decimal)) { decimal dec; if (!Decimal.TryParse(str, out dec)) { dec = Decimal.Parse(str, CultureInfo.InvariantCulture); } result = dec; } else if (t == typeof(Boolean)) { result = Boolean.Parse(str); } } else if (t.IsInterface && value != null && value.GetType().GetInterfaces().Contains(t)) { result = value; } else { try { result = Convert.ChangeType(value, t); } catch (FormatException) { result = Convert.ChangeType(value, t, CultureInfo.InvariantCulture); } } return(result); }
public DbEngine.DbRef EmptyRef(String tableName) { return(DbRef.CreateInstance(tableName, Guid.Empty)); }
public static object LoadEntity(string id) { return(DbRef.FromString(id).GetObject()); }
public static DbRef GetDbRefFromEnum(WebactionsEnum @enum) { string res = null; switch (@enum) { case WebactionsEnum.EventsEditing: res = "0236eb9f-eed9-489b-9152-86b037e79a79"; break; case WebactionsEnum.EventsDeleting: res = "0236eb9f-eed9-490b-9152-86b037e79a79"; break; case WebactionsEnum.EventsOptionsEditing: res = "0236eb9f-eed9-491b-9152-86b037e79a79"; break; case WebactionsEnum.EventsAllAvaliable: res = "0236eb9f-eed9-492b-9152-86b037e79a79"; break; case WebactionsEnum.EventsShowAVR: res = "0236eb9f-eed9-494b-9152-86b037e79a79"; break; case WebactionsEnum.UsersEditing: res = "0236eb9f-eed9-495b-9152-86b037e79a79"; break; case WebactionsEnum.UsersDeleting: res = "0236eb9f-eed9-496b-9152-86b037e79a79"; break; case WebactionsEnum.UsersManageRoles: res = "0236eb9f-eed9-497b-9152-86b037e79a79"; break; case WebactionsEnum.ClientsEditing: res = "0236eb9f-eed9-498b-9152-86b037e79a79"; break; case WebactionsEnum.ClientsDeleting: res = "0236eb9f-eed9-499b-9152-86b037e79a79"; break; case WebactionsEnum.ClientsOptionsEditing: res = "0236eb9f-eed9-500b-9152-86b037e79a79"; break; case WebactionsEnum.TasksEditing: res = "0236eb9f-eed9-501b-9152-86b037e79a79"; break; case WebactionsEnum.EquipmentsEditing: res = "0236eb9f-eed9-502b-9152-86b037e79a79"; break; case WebactionsEnum.EquipmentsDeleting: res = "0236eb9f-eed9-503b-9152-86b037e79a79"; break; case WebactionsEnum.EquipmentsOptionsEditing: res = "0236eb9f-eed9-504b-9152-86b037e79a79"; break; case WebactionsEnum.RIMEditing: res = "0236eb9f-eed9-505b-9152-86b037e79a79"; break; case WebactionsEnum.RIMDeleting: res = "0236eb9f-eed9-506b-9152-86b037e79a79"; break; case WebactionsEnum.CheckListsEditing: res = "0236eb9f-eed9-507b-9152-86b037e79a79"; break; case WebactionsEnum.CheckListManageActivityStatus: res = "0236eb9f-eed9-508b-9152-86b037e79a79"; break; case WebactionsEnum.AnaliticAccess: res = "0236eb9f-eed9-509b-9152-86b037e79a79"; break; case WebactionsEnum.WebInterfaceAccess: res = "0236eb9f-eed9-510b-9152-86b037e79a79"; break; case WebactionsEnum.MobileAppAccess: res = "0236eb9f-eed9-511b-9152-86b037e79a79"; break; case WebactionsEnum.MobileFPRAccess: res = "f22c49d3-42b4-4ccc-9646-970ee8f7db23"; break; } if (string.IsNullOrEmpty(res)) { return(null); } return(DbRef.FromString($"@ref[Enum_Webactions]:{res}")); }
/// <inheritdoc /> public override void Sanitize() { this.Target = DbRef.Nothing; base.Sanitize(); }