コード例 #1
0
        async void IKitchenEvents.CookingCompleted(ActorId actorId, KitchenOrder order)
        {
            await SetOrderStateAsync(OrderState.Cooked);

            var kitchenActor = new KitchenActorProxy().CreateActor(actorId.GetGuidId());
            await kitchenActor.UnsubscribeAsync <IKitchenEvents>(this);
        }
コード例 #2
0
        private async Task ProcessStateAsync()
        {
            var state = await GetOrderStateAsync();

            switch (state)
            {
            case OrderState.Ordered:
            {
                //ToDo: Küche benachrichten
                var order = await GetOrderContractAsync(CancellationToken.None);

                var kitchenActor = new KitchenActorProxy().CreateActor(order.RestaurantId);
                await kitchenActor.SubscribeAsync <IKitchenEvents>(this);

                await kitchenActor.AddOrderAsync(new KitchenOrder
                    {
                        DishId  = order.DishId,
                        OrderId = Id.GetGuidId()
                    });
                await SetOrderStateAsync(OrderState.InKitchenQueue);

                break;
            }

            case OrderState.Cooked:
            {
                //ToDo: Kellner informieren
                var order = await GetOrderContractAsync(CancellationToken.None);

                var events = GetEvent <IOrderEvents>();
                events.OrderServed(Id, order.DishId);
                break;
            }

            case OrderState.Payed:
            {
                //Unregister reminder
                var reminder = GetReminder(OrderStateReminder);
                await UnregisterReminderAsync(reminder);

                break;
            }
            }
        }
コード例 #3
0
        public async Task <List <KitchenOrder> > GetKitchenCookingQueue(Guid restaurantId)
        {
            var kitchenActor = new KitchenActorProxy().CreateActor(restaurantId);

            return(await kitchenActor.GetKitchenCookingQueue(CancellationToken.None));
        }