public OrdersViewModel( IInterProcessBusSubscriber interProcessBusSubscriber, OrderServiceInvoker orderServiceInvoker, IMessageBoxService messageBoxService) { orderEvents = new List <string>() { "OrderCreatedEvent", "OrderAddressChangedEvent", "OrderDeletedEvent" }; growlNotifications.Top = SystemParameters.WorkArea.Top + topOffset; growlNotifications.Left = SystemParameters.WorkArea.Left + SystemParameters.WorkArea.Width - leftOffset; var stream = interProcessBusSubscriber.GetEventStream(); disposables.Add(stream .Do(x => { logger.Info("{0} in Rx stream", x); }) .Where(x => orderEvents.Contains(x)) .Subscribe(async x => { logger.Info("Refreshing orders on {0}", x); var newOrders = await orderServiceInvoker.CallService(service => service.GetAllOrdersAsync()); this.Orders = new List <OrderViewModel>( newOrders.Select(ord => new OrderViewModel(ord, messageBoxService, orderServiceInvoker))); this.HasOrders = Orders.Any(); if (this.HasOrders) { growlNotifications.AddNotification(new Notification { Title = "Orders changed", ImageUrl = "pack://application:,,,/Images/metroInfo.png", Message = "New/modified orders have been obtained from the ReadModel. Click on the right hand side panel to see them" }); } }) ); }
public OrdersViewModel( IInterProcessBusSubscriber interProcessBusSubscriber, OrderServiceInvoker orderServiceInvoker, IMessageBoxService messageBoxService) { orderEvents = new List<string>() { "OrderCreatedEvent","OrderAddressChangedEvent","OrderDeletedEvent" }; growlNotifications.Top = SystemParameters.WorkArea.Top + topOffset; growlNotifications.Left = SystemParameters.WorkArea.Left + SystemParameters.WorkArea.Width - leftOffset; var stream = interProcessBusSubscriber.GetEventStream(); disposables.Add(stream.Where(x => orderEvents.Contains(x)) .Subscribe(async x => { var newOrders = await orderServiceInvoker.CallService(service => service.GetAllOrdersAsync()); this.Orders = new List<OrderViewModel>( newOrders.Select(ord => new OrderViewModel(ord, messageBoxService, orderServiceInvoker))); this.HasOrders = Orders.Any(); if (this.HasOrders) { growlNotifications.AddNotification(new Notification { Title = "Orders changed", ImageUrl = "pack://application:,,,/Images/metroInfo.png", Message = "New/modified orders have been obtained from the ReadModel. Click on the right hand side panel to see them" }); } }) ); }