public async Task <ActionResult> AddOrder()
        {
            var random = new Random().Next(1000);
            var id     = Guid.NewGuid();
            var orderServiceInvoker = new OrderServiceInvoker();
            var orderCreated        = await orderServiceInvoker.CallService(service => service.SendCommandAsync(
                                                                                new CreateOrderCommand()
            {
                ExpectedVersion = 1,
                Id          = id,
                Address     = "Address" + random,
                Description = "Description" + random,
                OrderItems  = new List <SachaBarber.CQRS.Demo.Orders.DTOs.OrderItem>()
                {
                    new SachaBarber.CQRS.Demo.Orders.DTOs.OrderItem()
                    {
                        OrderId              = id,
                        StoreItemId          = Guid.NewGuid(),
                        StoreItemDescription = "storeitem description",
                        StoreItemUrl         = "http://www.baidu.com"
                    }
                }
            }));

            return(Redirect("Order"));
        }
 private Task <bool> InitialiseReadModel()
 {
     return(Task.Run(
                async() =>
     {
         try
         {
             var items = await orderServiceInvoker.CallService(service =>
                                                               service.GetAllStoreItemsAsync());
             StoreItems.AddRange(items.Select(x => new StoreItemViewModel(x)));
             HasItems = StoreItems.Any();
             return true;
         }
         catch (Exception e)
         {
             return false;
         }
     }));
 }
        public async Task <ActionResult> Order()
        {
            var orderServiceInvoker = new OrderServiceInvoker();
            var newOrders           = orderServiceInvoker.CallService(service =>
                                                                      service.GetAllOrdersAsync());
            await Task.WhenAll(newOrders);

            Orders = newOrders.Result;
            return(View(Orders));
        }
 private async void ExecuteDeleteOrderCommand(object param)
 {
     try
     {
         operationInFlight = true;
         await orderServiceInvoker.CallService(service =>
                                               service.SendCommandAsync(new DeleteOrderCommand()
         {
             ExpectedVersion = this.Order.Version,
             Id = this.Order.OrderId
         }));
     }
     catch (Exception e)
     {
         messageBoxService.ShowError("There was an error deleting the order");
     }
     finally
     {
         operationInFlight = false;
     }
 }
        public async Task <ActionResult> Index()
        {
            try
            {
                var orderServiceInvoker = new OrderServiceInvoker();
                var newItems            = orderServiceInvoker.CallService(service => service.GetAllStoreItemsAsync());
                await Task.WhenAll(newItems);

                Items = newItems.Result;
                return(View(Items));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#6
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"
                        });
                    }
                })
            );
           
        }
示例#8
0
 public OrdersViewModel()
 {
     orderServiceInvoker = new OrderServiceInvoker();
     var newOrders = orderServiceInvoker.CallService(service => service.GetAllOrdersAsync());
 }