async void IKitchenEvents.CookingCompleted(ActorId actorId, KitchenOrder order) { await SetOrderStateAsync(OrderState.Cooked); var kitchenActor = new KitchenActorProxy().CreateActor(actorId.GetGuidId()); await kitchenActor.UnsubscribeAsync <IKitchenEvents>(this); }
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; } } }
public async Task <List <KitchenOrder> > GetKitchenCookingQueue(Guid restaurantId) { var kitchenActor = new KitchenActorProxy().CreateActor(restaurantId); return(await kitchenActor.GetKitchenCookingQueue(CancellationToken.None)); }