Exemple #1
0
        public async Task <Order> GetOrderAsync(Guid orderId)
        {
            var orderActor = new OrderActorProxy().CreateActor(orderId);
            var order      = await orderActor.GetOrderAsync(CancellationToken.None);

            return(order);
        }
Exemple #2
0
        public async Task <Order> Create([FromBody] Order order)
        {
            if (order == null)
            {
                return(null);
            }
            try
            {
                var tableActor = new TableActorProxy().CreateActor(order.TableId);
                order.OrderId = Guid.NewGuid();
                var dish = await new MenuServiceProxyFactory().CreateServiceProxy(order.RestaurantId).GetDishAsync(order.RestaurantId, order.DishId);
                order.Price = dish.Price;
                var orderActor = new OrderActorProxy().CreateActor(order.OrderId);
                await orderActor.AddOrderAsync(order, CancellationToken.None);

                await tableActor.AddOrder(new TableOrder()
                {
                    Dish = dish.Name, OrderId = order.OrderId, Price = dish.Price
                }, CancellationToken.None);

                return(await orderActor.GetOrderAsync(CancellationToken.None));
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                throw;
            }
        }
        async Task ITableActor.AddOrder(TableOrder tableOrder, CancellationToken cancellationToken)
        {
            var tableOrderContract = new TableOrderContract
            {
                OrderId = tableOrder.OrderId,
                Price   = tableOrder.Price,
                Dish    = tableOrder.Dish
            };
            var list = await GetTableOrderContracts(cancellationToken);

            list.Add(tableOrderContract);
            await StateManager.AddOrUpdateStateAsync(ListName, list, (key, value) => list, cancellationToken);

            var actor = new OrderActorProxy().CreateActor(tableOrder.OrderId);
            await actor.SubscribeAsync(this);
        }