private static void Main(string[] args)
        {
            var todoDb = new List <Todo>(new List <Todo>()
            {
                new Todo()
                {
                    Id          = 0,
                    Description = "test0",
                    CreatedAt   = DateTime.Now
                }
            });
            var eventHandler = new EventHanlder(todoDb);
            var eventStore   = new List <IEvent>();
            var controller   = new TodoListController(eventHandler, eventStore);

            Console.WriteLine("initial todo list");
            foreach (var todo in todoDb)
            {
                Console.WriteLine($"Todo Id: {todo.Id}, Description:{todo.Description}, Created at: {todo.CreatedAt}");
            }

            controller.AddTodo(new Todo()
            {
                Description = "test1"
            });

            Task.Delay(1000).Wait();
            controller.AddTodo(new Todo()
            {
                Description = "test2"
            });

            Task.Delay(1000).Wait();
            controller.DeleteTodo(1);


            Console.WriteLine("\nAfter Add 2 todos, and delete todo[1], Show todos");
            foreach (var todo in todoDb)
            {
                Console.WriteLine($"Todo Id: {todo.Id}, Description:{todo.Description}, Created at: {todo.CreatedAt}");
            }
            Console.WriteLine("\nAfter undo, add , undo, Show todos");
            controller.Undo();
            controller.AddTodo(new  Todo()
            {
                Description = "test3"
            });
            controller.Undo();


            foreach (var todo in todoDb)
            {
                Console.WriteLine($"Todo Id: {todo.Id}, Description:{todo.Description}, Created at: {todo.CreatedAt}");
            }

            Console.WriteLine("\nShow events in Event Store");
            foreach (var e in eventStore)
            {
                object data;
                if (e.Data is Todo)
                {
                    data = (e.Data as Todo).Description;
                }
                else
                {
                    data = e.Data;
                }
                Console.WriteLine($"Event Id: {e.Id}, Event Type:{e.Type}, Created at {e.TimeStamp}, data: {data}");
            }
            Console.ReadKey();
        }
Esempio n. 2
0
 public TodoListController(EventHanlder hanlder, List <IEvent> eventStore)
 {
     this.hanlder    = hanlder;
     this.eventStore = eventStore;
 }