private async Task ProcessOrdersAsync(Order nextOrder)
        {
            foreach (OrderedDrink drink in nextOrder.Drinks)
            {
                if (drink == null)
                {
                    OnWaiteringActivity?.Invoke(this, new WaiteringActivityEventArgs($"{_name}: Well I can't do much with this."));
                }
                else
                {
                    var servedDrink = new ServedDrink {
                        PaidBy = nextOrder.OrderedBy, DrinkName = drink.DrinkName
                    };

                    OnWaiteringActivity?.Invoke(this, new WaiteringActivityEventArgs($"{_name} Preparing {drink.DrinkName} for {drink.OrderedFor}."));
                    await Task.Delay(1000);

                    int poisonedBeerRatio = Randomizer.Next(0, 100);

                    if (poisonedBeerRatio > 80)
                    {
                        servedDrink.DrinkName = $"Spoiled {drink.DrinkName}";
                        OnWaiteringActivity?.Invoke(this, new WaiteringActivityEventArgs($"{_name}: Created a SPOILED {drink.DrinkName} without knowing it!"));
                    }

                    await Proxy.ServeDrinkAsync(drink.OrderedFor, servedDrink);

                    OnWaiteringActivity?.Invoke(this, new WaiteringActivityEventArgs($"{_name}: Alright another soul served!"));
                }
            }
        }
Пример #2
0
        public async Task ServeDrinkAsync(string orderedFor, ServedDrink drink)
        {
            var client = new TopicClient(BarTopicCnBuilder);

            byte[] body    = JsonSerializer.SerializeToUtf8Bytes(drink);
            var    message = new Message(body);

            message.UserProperties.Add("OrderedFor", orderedFor);

            await client.SendAsync(message);
        }