Ejemplo n.º 1
0
        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"
                        });
                    }
                })
            );
           
        }