protected override void When(object @event) { switch (@event) { case V1.StationAddedToOnHand e: Id = new StationId(e.StationId); ParentId = OnHandId.FromGuid(e.OnHandId); StationName = StationName.FromString(e.StationName); _items = new List <Item>(); break; case V1.ItemAddedToStation e: { var item = new Item(Apply); item.Handle(e); _items.Add(item); } break; } }
static void Main(string[] args) { Console.WriteLine("Create OnHand"); var onHand = OnHand.Create(OnHandId.FromGuid(Guid.NewGuid())); Console.WriteLine($"OnHand: {onHand.State}"); onHand.Stations.ToList().ForEach(e => Console.WriteLine($"{e.Id} - {e.StationName}")); Console.WriteLine(); Console.WriteLine("Add Station"); onHand.AddStation("TestStation"); Console.WriteLine($"OnHand: {onHand.State}"); onHand.Stations.ToList().ForEach(e => Console.WriteLine($"{e.Id} - {e.StationName}")); Console.WriteLine(); Console.WriteLine("Add Station"); onHand.AddStation("TestStation2"); Console.WriteLine($"OnHand: {onHand.State}"); onHand.Stations.ToList().ForEach(e => Console.WriteLine($"{e.Id} - {e.StationName}")); onHand.Stations.ToList().ForEach(e => e.Items.ToList().ForEach(i => Console.WriteLine($"Item: {i}"))); Console.WriteLine(); var station = onHand.Stations.First(); Console.WriteLine("Add Item"); onHand.AddItemToStation(station.Id.Value, Guid.NewGuid(), "Test Item"); Console.WriteLine($"OnHand: {onHand.State}"); onHand.Stations.ToList().ForEach(e => Console.WriteLine($"{e.Id} - {e.StationName}")); onHand.Stations.ToList().ForEach(e => e.Items.ToList().ForEach(i => Console.WriteLine($"Item: {i.Id} - {i.ItemName}"))); Console.WriteLine(); var events = onHand.GetChanges(); foreach (var e in events) { Console.WriteLine($"{e}"); } }