public void SaveAndLoadWithEntityRepository() { Converts.Repository .AddJsonKey() .AddJsonEnumSearchHandler() .AddJsonPrimitivesSearchHandler() .AddJsonObjectSearchHandler(); ICompositeTypeProvider compositeTypeProvider = new ReflectionCompositeTypeProvider(new ReflectionCompositeDelegateFactory()); IFactory <ICompositeStorage> storageFactory = new GetterFactory <ICompositeStorage>(() => new JsonCompositeStorage()); EventSourcingContext context = new EventSourcingContext(@"Data Source=.\sqlexpress; Initial Catalog=EventStore;Integrated Security=SSPI"); EntityEventStore eventStore = new EntityEventStore(context); PersistentEventDispatcher eventDispatcher = new PersistentEventDispatcher(eventStore); AggregateRootRepository <Order> repository = new AggregateRootRepository <Order>( eventStore, new CompositeEventFormatter(compositeTypeProvider, storageFactory), new ReflectionAggregateRootFactory <Order>(), eventDispatcher, new NoSnapshotProvider(), new EmptySnapshotStore() ); PersistentCommandDispatcher commandDispatcher = new PersistentCommandDispatcher( new SerialCommandDistributor(), new EntityCommandStore(context), new CompositeCommandFormatter(compositeTypeProvider, storageFactory) ); CreateOrderHandler createHandler = new CreateOrderHandler(repository); AddOrderItemHandler addItemHandler = new AddOrderItemHandler(repository); commandDispatcher.Handlers .Add <CreateOrder>(createHandler) .Add <AddOrderItem>(addItemHandler); CreateOrder create = new CreateOrder(); commandDispatcher.HandleAsync(create); eventDispatcher.Handlers.Await <OrderPlaced>().Wait(); IEnumerable <EventModel> serializedEvents = eventStore.Get(create.OrderKey).ToList(); Assert.AreEqual(1, serializedEvents.Count()); AddOrderItem addItem = new AddOrderItem(create.OrderKey, GuidKey.Create(Guid.NewGuid(), "Product"), 5); commandDispatcher.HandleAsync(Envelope.Create(addItem).AddDelay(TimeSpan.FromMinutes(1))); Task <OrderTotalRecalculated> task = eventDispatcher.Handlers.Await <OrderTotalRecalculated>(); task.Wait(); Console.WriteLine(task.Result); serializedEvents = eventStore.Get(create.OrderKey).ToList(); Assert.AreEqual(4, serializedEvents.Count()); }
public async Task AddItem(Optional <string> orderId, string correlationId, string description, decimal cost) { var orderStreamId = orderId.ValueOr(StreamNumbering.NewStreamId <DomainOrder>); var order = await this.persistence.GetState <DomainOrder>(orderStreamId); var itemAdded = new AddOrderItem(correlationId, DateTime.Now) { Description = description, Cost = cost }.Execute(order); await this.persistence.Save(itemAdded); }
/// <summary> /// Add the selected menu item to the order /// </summary> private void AddItemExecute() { try { Service s = new Service(); AddOrderItem addOrderItem = new AddOrderItem(); if (AllMenu != null) { List <tblOrder> tblOrders = s.GetAllOrder(); addOrderItem.txtName.Text = AllMenu.ProductName; addOrderItem.txtOrder.Text = Convert.ToString(tblOrders.LastOrDefault().OrderID); addOrderItem.txtPrice.Text = Convert.ToString(AllMenu.PriceProduct); addOrderItem.ShowDialog(); if ((addOrderItem.DataContext as AddOrderItemViewModel).IsUpdateItem == true) { OrderList = s.GetOrder(AllOrderList.LastOrDefault().OrderID).ToList(); TotalSum = 0; if (OrderList.Count == 0) { createNewOrder.msgNoItems.Visibility = Visibility.Visible; createNewOrder.gridOrderItem.Visibility = Visibility.Collapsed; createNewOrder.btnPlaceOrderNow.Visibility = Visibility.Collapsed; createNewOrder.txtTotalSum.Text = TotalSum.ToString() + ",00"; createNewOrder.txtTotalSumBottom.Text = TotalSum.ToString() + ",00 RSD"; } else { createNewOrder.msgNoItems.Visibility = Visibility.Collapsed; createNewOrder.gridOrderItem.Visibility = Visibility.Visible; createNewOrder.btnPlaceOrderNow.Visibility = Visibility.Visible; foreach (var item in OrderList) { TotalSum += item.OrderSum; createNewOrder.txtTotalSum.Text = TotalSum.ToString() + ",00"; createNewOrder.txtTotalSumBottom.Text = TotalSum.ToString() + ",00 RSD"; } } CreateNewOrder.counter = CreateNewOrder.counter + 1; createNewOrder.CountingBadge.Badge = CreateNewOrder.counter; } } createNewOrder.DataGridAllMenu.UnselectAll(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
public AddOrderItemViewModel(AddOrderItem addOrderItem) { this.addOrderItem = addOrderItem; }