Ejemplo n.º 1
0
        public static async Task ProcessOrders()
        {
            #region تعریف متغییر ها
            var repository       = new Repository();
            var shop             = new ShopEntity();
            var basketOfCustomer = new BasketOfCustomer();
            var pendingCustomers = new List <CustomerEntity>();
            var successBought    = new List <CustomerEntity>();
            var report           = new Report();
            int counterBasketId  = 0;
            #endregion

            while (true)
            {
                // هر یک ثانیه مشتری پاسخ داده می شود
                Thread.Sleep(1000);

                //  مشتری ای که اولویت دارد اول زن باشد و تعداد کم اقلام می خواهد
                // و نیز مقدار کمتری اقلام مورد نظر را می خواهد فیلتر کرده ایم
                var customer = Repository.CustomersList.OrderByDescending(g => g.Gender)
                               .ThenBy(ic => ic.Items.Count())
                               .ThenBy(ism => ism.Items.Sum(q => q.Qnt))
                               .FirstOrDefault();

                if (customer == null)
                {
                    continue;
                }

                await Task.Run(() =>
                {
                    // بروزرسانی اقلام داخل مغازه
                    shop.ItemsList = Repository.UpdateShopItems;

                    // بررسی موجود بودن اقلام مورد نیاز مشتری
                    bool chackExistItems = repository.ChackExistItems(customer.Items, shop.ItemsList).Result;

                    // بررسی موجود بودن لیست اقلام مشتری در مغازه
                    if (chackExistItems == false)
                    {
                        pendingCustomers.Add(customer);
                    }
                    else
                    {
                        // مشخصات اجناس مورد نظر درخواستی مشتری
                        var basket = basketOfCustomer.BasketImporter(++counterBasketId,
                                                                     customer.Items,
                                                                     DateTime.Now, customer);

                        successBought.Add(customer);
                        report.ShowResult(basket);
                    }

                    // مرحله حذف مشتری از لیست اصلی مشتریان
                    var removeCustomer = Repository.CustomersList.First(c => c.Id == customer.Id);
                    Repository.CustomersList.Remove(removeCustomer);
                });
            }
        }
Ejemplo n.º 2
0
        public ActionResult RemoveBasket(int id)
        {
            BasketOfCustomer ofCustomer = db.BasketOfCustomers.FirstOrDefault(m => m.BasketId == id);

            if (ofCustomer == null)
            {
                ModelState.AddModelError("", "böyle bir spet  yok !");
            }
            else
            {
                db.BasketOfCustomers.Remove(ofCustomer);
                db.SaveChanges();
                return(RedirectToAction("BasketList", "CustomerOfBasket"));
            }
            return(View());
        }