public void SupportsList() { var manager = new EventStoreManager(); var file = new MemoryEventFileStorage(); var appender = manager.AppendToStore(file); var userA = new User { Name = "A", Age = 1 }; var userB = new User { Name = "B", Age = 2 }; var userEvent = new UserEventList { Id = 10, List = new List <User> { userA, userB, userA } }; appender.Store(null, new object[] { userEvent }); manager = new EventStoreManager(); var reader = manager.OpenReadOnlyStore(file); var eventObserver = new StoringEventObserver(); reader.ReadFromStartToEnd(eventObserver); var readUserEvent = (UserEventList)eventObserver.Events[0][0]; Assert.Equal(readUserEvent, userEvent); }
public void SkipListOnUpgrade() { var manager = new EventStoreManager(); manager.SetNewTypeNameMapper(new OverloadableTypeMapper(typeof(UserEventList), "UserEvent")); var file = new MemoryEventFileStorage(); var appender = manager.AppendToStore(file); var userA = new User { Name = "A", Age = 1 }; var userB = new User { Name = "B", Age = 2 }; var userEvent = new UserEventList { Id = 10, List = new List <User> { userA, userB, userA } }; appender.Store(null, new object[] { userEvent }); manager = new EventStoreManager(); manager.SetNewTypeNameMapper(new OverloadableTypeMapper(typeof(UserEvent), "UserEvent")); var reader = manager.OpenReadOnlyStore(file); var eventObserver = new StoringEventObserver(); reader.ReadFromStartToEnd(eventObserver); var readUserEvent = (UserEvent)eventObserver.Events[0][0]; Assert.Equal(10, readUserEvent.Id); Assert.Null(readUserEvent.User1); }
/// <summary> /// Returns the a formatted App Deep Link (genconevents://) for the given list. /// Returns ONLY the link itself, no HTML or text /// </summary> /// <param name="list"></param> /// <returns></returns> public static string GenerateUserEventListLink(UserEventList list) { StringBuilder returnMe = new StringBuilder(); returnMe.Append("genconevents://list?name="); var newName = list.Title; Regex rgx = new Regex("[^a-zA-Z0-9 -_]"); newName = rgx.Replace(newName, ""); returnMe.Append(HttpUtility.UrlEncode(newName)); returnMe.Append("&data="); for (int i = 0; i < list.Events.Count; i++) { if (i == list.Events.Count - 1) { returnMe.Append(list.Events[i].ID); } else { returnMe.Append(list.Events[i].ID + "%3B"); } } return(returnMe.ToString()); }
/// <summary> /// Returns the a formatted HTML App Deep Link (genconevents://) for the given list. /// Returns the link itself with some "click here" text, surrounded by a "a" tag. /// </summary> /// <param name="list"></param> /// <returns></returns> public static string GenerateUserEventListLinkHTML(UserEventList list) { StringBuilder returnMe = new StringBuilder(); returnMe.Append("<a href=\"genconevents://list?name="); var newName = list.Title; Regex rgx = new Regex("[^a-zA-Z0-9 -_]"); newName = rgx.Replace(newName, ""); returnMe.Append(HttpUtility.UrlEncode(newName)); returnMe.Append("&data="); for (int i = 0; i < list.Events.Count; i++) { if (i == list.Events.Count - 1) { returnMe.Append(list.Events[i].ID); } else { returnMe.Append(list.Events[i].ID + "%3B"); } } returnMe.Append($"\" target=\"_blank\">Tap here on a device with \"{appTitle}\" installed to import the event list.</a>"); return(returnMe.ToString()); }
public static async Task ImportUserEventList(string data, string name) { if (hasSuccessfullyLoadedEvents && eventCount > 0) { var newList = new UserEventList { Title = name }; var splitData = data.Split(';').ToList(); foreach (var splitItem in splitData) { var addEvent = await db.GetGenEventAsync(splitItem); if (addEvent != null) { newList.Events.Add(addEvent); } } // If we have some events we should now be successful if (newList.Events.Count > 0 && name.Length > 0) { await db.UpdateUserEventListWithChildrenAsync(newList); DoToast("Successfully imported list " + name.ToString() + "!", ToastType.Green, 5000); try { View_GenUserListView.IsUpdateRequested = true; } catch (Exception) { } } } }
public EventStore() { UserEvents = new UserEventList(); UserRules = new List<UserRule>(); }
internal bool RunOperations(UserEventList eventList) { foreach (var op in Operations) { if (!op(eventList)) return false; } return true; }
public EventStore() { UserEvents = new UserEventList(); UserRules = new List <UserRule>(); }