Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        /// <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());
        }
Beispiel #4
0
        /// <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());
        }
Beispiel #5
0
        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) { }
                }
            }
        }
Beispiel #6
0
 public EventStore()
 {
     UserEvents = new UserEventList();
     UserRules = new List<UserRule>();
 }
Beispiel #7
0
 internal bool RunOperations(UserEventList eventList)
 {
     foreach (var op in Operations)
     {
         if (!op(eventList)) return false;
     }
     return true;
 }
Beispiel #8
0
 public EventStore()
 {
     UserEvents = new UserEventList();
     UserRules  = new List <UserRule>();
 }