Exemplo n.º 1
0
        public async Task Loop()
        {
            while (true)
            {
                await this.AddOrder(OrdersQueue.CreateRandomOrder());

                Thread.Sleep(5000);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Method that checks all of the orders after delivery.
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="args"></param>
        public void CheckOrders(object obj, EventArgs args)
        {
            var temp = new List <Order>(OrdersQueue.ToArray());

            OrdersQueue.Clear();
            foreach (var item in temp)
            {
                if (!MakeOrder(item))
                {
                    OrdersQueue.Append(item);
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Сhecks whether the order can be fulfilled and executes if it can.
        /// </summary>
        /// <param name="order"></param>
        /// <returns></returns>
        public bool MakeOrder(Order order)
        {
            bool IsEnough = true;

            var temp = new Dictionary <string, int>();

            foreach (var item in order.Basket)
            {
                temp.Add(item.Key, item.Value);
            }

            foreach (var item in temp)
            {
                if (AllItems[item.Key] < item.Value)
                {
                    order.Basket[item.Key] -= AllItems[item.Key];
                    AllItems[item.Key]      = 0;

                    var tempGood = ListForProvider.LastOrDefault(x => x == item.Key);

                    if (tempGood == null)
                    {
                        ListForProvider.Add(item.Key);
                    }

                    IsEnough = false;
                }
                else
                {
                    AllItems[item.Key] -= item.Value;
                    if (AllItems[item.Key] == 0)
                    {
                        var tempGood = ListForProvider.LastOrDefault(x => x == item.Key);

                        if (tempGood == null)
                        {
                            ListForProvider.Add(item.Key);
                        }
                    }
                    order.Basket.Remove(item.Key);
                }
            }
            if (!IsEnough)
            {
                OrdersQueue.Add(order);
            }
            return(IsEnough);
        }