示例#1
0
        /// <summary>
        /// Удаление обслуженной корзины из очереди
        /// </summary>
        /// <returns>Возвращает стоимость покупок</returns>
        public decimal Dequeue()
        {
            decimal sum = 0;      //создаём переменную для хранения итоговой стимости

            if (Queue.Count == 0) //если очередь пустая возвращаем ноль
            {
                return(0);
            }

            var card = Queue.Dequeue(); // создаём переменную в которую получаем корзину из начала очереди

            if (card != null)
            {
                var check = new Check()                    // создаём чек по покупке
                {
                    SellerId   = Seller.SellerId,          //вписываем ИД продавца
                    Seller     = Seller,                   // прикрепляем экземпляр продавца
                    CustomerId = card.Customer.CustomerId, //вписываем ИД покупателя
                    Customer   = card.Customer,            // прикоепляем экземпляр покупателя
                    Created    = DateTime.Now              // текущее время
                };

                if (!IsModel) //если это не модель, то чек вписываем в базу
                {
                    db.Checks.Add(check);
                    db.SaveChanges();
                }
                else //иначе держим виртуально
                {
                    check.CheckId = 0;
                }

                var sells = new List <Sell>();    // инициализируем список продаж

                foreach (Product product in card) // перебираем продукты в корзине
                {
                    if (product.Count > 0)        //если продукта на складе больше нуля
                    {
                        var sell = new Sell()     //то создаём экземпляр продажи конкретной единицы товара
                        {
                            CheckId   = check.CheckId,
                            Check     = check,
                            ProductId = product.ProductId,
                            Product   = product
                        };

                        sells.Add(sell); //добавляем экземпляр к списку

                        if (!IsModel)    //если не модель. то добавляем продажу в БД
                        {
                            db.Sells.Add(sell);
                        }

                        product.Count--; //убираем единицу товара со склада, добавляем стоимость к чеку
                        sum += product.Price;
                    }
                }

                check.Price = sum; //записываем в чек сумму

                if (!IsModel)      //если не модель, записываем чек в бд
                {
                    db.SaveChanges();
                }

                CheckClosed?.Invoke(this, check); //если продажа закрыта, вызываем событие
                ServedCustomers++;
            }

            return(sum); //возвращаем сумму в вызов
        }
示例#2
0
        //выход из очереди
        //возвращаем сумму товара из функции очереди
        public decimal Dequeue()
        {
            decimal sum = 0;

            if (Queue.Count == 0)
            {
                return(0);
            }
            var card = Queue.Dequeue();

            if (card != null)
            {
                //создание чека
                var check = new Check()
                {
                    Seller     = Seller,
                    Customer   = card.Customer,
                    SellerId   = Seller.SellerId,
                    CustomerId = card.Customer.CustomerId,
                    Created    = DateTime.Now
                };

                if (!IsModel)
                {
                    db.Checks.Add(check);
                    db.SaveChanges();
                }
                else
                {
                    check.CheckId = 0;
                }
                var sells = new List <Sell>();
                //проходка по всем продуктам
                foreach (Product product in card)
                {
                    //если продукта на складе нет ничего не продаем
                    if (product.Count > 0)
                    {
                        //создание продажи
                        var sell = new Sell()
                        {
                            CheckId   = check.CheckId,
                            Check     = check,
                            ProductId = product.ProductId,
                            Product   = product
                        };

                        //транзакция -группа операций действий обьединеным логическим принципом,если сбой откатить до предыдущего(например банкомат 1.списать деньги со счета
                        //2.выдать наличные если списать не удалось возвращаем на предыдущее состояние как будто деньги не выдавали ,или сли нет необходимых купюр возвращаем состояние на предыдущее)
                        //добавлю позже!!!!
                        sells.Add(sell);

                        if (!IsModel)
                        {
                            //сохранение в локальное хранилище
                            db.Sells.Add(sell);
                        }
                        product.Count--;
                        sum += product.Price;
                    }
                }
                check.Price = sum;
                if (!IsModel)
                {
                    //засунуть в базу
                    db.SaveChanges();
                }
                //рассыылка о событии всем подписчикамоооо
                CheckClosed?.Invoke(this, check);
                //if (CheckClosed != null)
                //{
                //    CheckClosed(this, check);
                //}
            }
            return(sum);
        }