/// <summary> /// Saves the changes. /// </summary> /// <exception cref="InvalidOperationException"></exception> public void SaveChanges() { var changesTimestamp = Convert.ToString(DateTimeOffset.Now.ToUnixTimeMilliseconds()); lock (_changeSetLock) { while (Changes.Any()) { var changeSet = Changes.Dequeue(); switch (changeSet.ChangeType) { case ChangeType.Update: Update(changesTimestamp, changeSet); break; case ChangeType.Insert: Insert(changesTimestamp, changeSet); break; case ChangeType.Delete: Delete(changesTimestamp, changeSet); break; default: throw new InvalidOperationException( $"Invalid changeset type: {changeSet.ChangeType} for {nameof(DataPage)}"); } } } }
private bool?IsEnabled(UpdateOperationViewModel model) { if (Changes.Any(o => o.Value.Equals(CurrentOperation))) { return(Changes.First(o => o.Value.Equals(CurrentOperation)).IsEnabled); } else { var isEnabled = model.Operations.FirstOrDefault(o => o.Value.Equals(CurrentOperation))?.IsEnabled; Changes.Add(new OperationViewModel { Value = CurrentOperation, IsEnabled = isEnabled }); return(isEnabled); } }
public bool HasChangeFor(Expression <Func <T, object?> > expression) { return(Changes.Any(x => x.Matches(expression))); }
internal bool NeedsInclude() { return(IsIncluded || (Changes != null && Changes.Any(x => x.IsIncluded))); }
void IJsonSerializable.Serialize(JsonWriter writer) { // Types if (Types != null && Types.Any()) { writer.WritePropertyName("types"); writer.WriteStartObject(); foreach (var type in Types) { writer.WritePropertyName(type); writer.WriteRawValue(GetTypeJson(type)); } writer.WriteEndObject(); } if (Instances != null && Instances.Any()) { writer.WritePropertyName("instances"); writer.WriteStartObject(); foreach (var typeItem in Instances) { writer.WritePropertyName(typeItem.Key); writer.WriteStartObject(); // Serialize static property values if (typeItem.Value.StaticProperties.Count > 0) { writer.WritePropertyName("static"); writer.Serialize( typeItem.Value.StaticProperties.ToDictionary( property => property.Name, property => JsonConverter.GetPropertyValue(property, property.DeclaringType))); } // Serialize instances foreach (var instanceItem in typeItem.Value.Instances) { writer.WritePropertyName(instanceItem.Key); writer.Serialize(instanceItem.Value); } writer.WriteEndObject(); } writer.WriteEndObject(); } if (Conditions != null && Conditions.Any()) { writer.WritePropertyName("conditions"); writer.Serialize(Conditions); } if (Events != null && Events.Any()) { writer.WritePropertyName("events"); writer.Serialize(Events); } if (Model != null && Model.Any()) { writer.WritePropertyName("model"); writer.Serialize(Model); } if (ServerInfo != null) { writer.WritePropertyName("serverInfo"); writer.Serialize(ServerInfo); } if (Changes != null && Changes.Any()) { writer.WritePropertyName("changes"); writer.Serialize(Changes.Where(modelEvent => !(modelEvent is ModelValueChangeEvent) || ExoWeb.IncludeInClientModel(((ModelValueChangeEvent)modelEvent).Property))); } }